ifhp-3.5.20/0040755000175100017510000000000010130541267012764 5ustar papowellpapowellifhp-3.5.20/src/0040755000175100017510000000000010130541267013553 5ustar papowellpapowellifhp-3.5.20/src/debug.h0100644000175100017510000001056210130541266015012 0ustar papowellpapowell/*************************************************************************** * LPRng - An Extended Print Spooler System * * Copyright 1988-2001, Patrick Powell, San Diego, CA * papowell@lprng.com * See LICENSE for conditions of use. * $Id: debug.h,v 1.2 2002/01/30 14:34:18 papowell Exp papowell $ ***************************************************************************/ #ifndef _DEBUG_H_ #define _DEBUG_H_ 1 /* to remove all debugging, redefine this as follows * note that a good optimizing compiler should not produce code * for the logDebug call. It may produce lots of warnings, but no code... */ #if !defined(EXTERN) # define EXTERN extern #endif EXTERN int Debug; /* debug flags */ EXTERN int DbgFlag; /* debug flags */ EXTERN int DbgTest; /* debug flags */ #ifdef NODEBUG #define DEBUGFSET(FLAG) ( 0 ) #define DEBUGF(FLAG) if( 0 ) logDebug #define DEBUGFC(FLAG) if( 0 ) #define DEBUG1 if(0) logDebug #define DEBUGL1 (0) #define DEBUG2 if(0) logDebug #define DEBUGL2 (0) #define DEBUG3 if(0) logDebug #define DEBUGL3 (0) #define DEBUG4 if(0) logDebug #define DEBUGL4 (0) #define DEBUG5 if(0) logDebug #define DEBUGL5 (0) #define DEBUG6 if(0) logDebug #define DEBUGL6 (0) #else /* general purpose debug test */ #define DEBUGC(VAL,FLAG) if( (Debug >= (VAL) ) || ((FLAG) & DbgFlag) ) logDebug #define DEBUGL(VAL,FLAG) ( (Debug >= (VAL) ) || ((FLAG) & DbgFlag) ) #define DEBUGF(FLAG) if( (FLAG & DbgFlag) ) logDebug #define DEBUGFC(FLAG) if( (FLAG & DbgFlag) ) #define DEBUGFSET(FLAG) ( (FLAG & DbgFlag) ) /* Debug variable level */ #define DEBUG1 DEBUGC(1,DRECV1|DCTRL1|DLPQ1|DLPRM1) #define DEBUGL1 DEBUGL(1,DRECV1|DCTRL1|DLPQ1|DLPRM1) #define DEBUG2 DEBUGC(2,DRECV2|DCTRL2|DLPQ2|DLPRM2) #define DEBUGL2 DEBUGL(2,DRECV2|DCTRL2|DLPQ2|DLPRM2) #define DEBUG3 DEBUGC(3,DRECV3|DCTRL3|DLPQ3|DLPRM3) #define DEBUGL3 DEBUGL(3,DRECV3|DCTRL3|DLPQ3|DLPRM3) #define DEBUG4 DEBUGC(4,DRECV4|DCTRL4|DLPQ4|DLPRM4) #define DEBUGL4 DEBUGL(4,DRECV4|DCTRL4|DLPQ4|DLPRM4) #define DEBUG5 DEBUGC(5,0) #define DEBUGL5 DEBUGL(5,0) #define DEBUG6 DEBUGC(6,0) #define DEBUGL6 DEBUGL(6,0) #endif /* Flags for debugging */ #define DPRSHIFT 0 #define DLOGMASK ((0xF< **************************************************************************/ /**** HEADER ***** $Id: ifhp.h,v 1.47 2004/09/30 23:24:41 papowell Exp papowell $ **** ENDHEADER ****/ #ifndef _IFHP_H_ #define _IFHP_H_ 1 #ifndef EXTERN # define EXTERN extern # define DEFINE(X) #endif /***************************************************************** * get the portability information and configuration *****************************************************************/ #include "portable.h" #include "safemalloc.h" #include "safestrutil.h" #include "perlobj.h" #include "debug.h" #include "errormsg.h" #include "patchlevel.h" #include "globmatch.h" #include "open_device.h" #include "plp_snprintf.h" #include "stty.h" #include "checkcode.h" #include "accounting.h" /***************************************************************** * Global variables and routines that will be common to all programs *****************************************************************/ /* * data types and #defines */ /* maximum recursion depth */ #define MAX_DEPTH 10 /* * struct value - used to set and get values for variables */ struct keyvalue{ char *varname; /* variable name */ char *key; /* name of the key */ char **var; /* variable to set */ int kind; /* type of variable */ #define INTV 0 #define STRV 1 #define FLGV 2 char *defval; /* default value, if any */ }; /* * dynamically controlled byte array for IO purposes */ struct std_buffer { char *buf; /* buffer */ int end; /* end of buffer */ int start; /* start of buffer */ int max; /* maximum size */ }; typedef void (*Wr_out)(char *); typedef int (*Builtin_func)(char *, char*, char *, Wr_out); #ifndef ISNULL #define ISNULL(X) ((X==0) || ((cval(X))==0)) #endif #ifndef SMALLBUFFER # define SMALLBUFFER 1024 #endif #ifndef LARGEBUFFER # define LARGEBUFFER (1024*4) #endif #define OUTBUFFER (1024*10) int Peek_char DEFINE( = -1); /* get the character value at a char * location */ /* EXIT CODES */ #define JFAIL 32 /* failed - retry later */ #define JABORT 33 /* aborted - do not try again, but keep job */ #define JREMOVE 34 /* failed - remove job */ #define JHOLD 37 /* hold this job */ #define JNOSPOOL 38 /* no spooling to this queue */ #define JNOPRINT 39 /* no printing from this queue */ #define JSIGNAL 40 /* killed by unrecognized signal */ #define JFAILNORETRY 41 /* no retry on failure */ #define JSUSP 42 /* process suspended successfully */ #define JTIMEOUT 43 /* timeout */ #define JWRERR 44 /* write error */ #define JRDERR 45 /* read error */ #define JCHILD 46 /* no children */ #define JNOWAIT 47 /* no wait status */ /* from 1 - 31 are signal terminations */ /* * Constant Strings */ EXTERN char *UNKNOWN DEFINE( = "UNKNOWN"); EXTERN char *PCL DEFINE( = "PCL"); EXTERN char *HPGL2 DEFINE( = "HPGL2"); EXTERN char *PS DEFINE( = "POSTSCRIPT"); EXTERN char *TEXT DEFINE( = "TEXT"); EXTERN char *RAW DEFINE( = "RAW"); EXTERN char *PJL DEFINE( = "PJL"); EXTERN char *FILTER DEFINE( = "FILTER"); EXTERN char *MSG DEFINE( = "MSG"); #define GLYPHSIZE 15 struct glyph{ int ch, x, y; /* baseline location relative to x and y position */ char bits[GLYPHSIZE]; }; struct font{ int height; /* height from top to bottom */ int width; /* width in pixels */ int above; /* max height above baseline */ struct glyph *glyph; /* glyphs */ }; EXTERN char *InputFile DEFINE( = "-" ); /* * setup values */ EXTERN OBJ *Zopts, *Topts, *Unsorted_Zopts, *Unsorted_Topts, *Raw, *Model, *Printcap, *Index, *Entries, *Devstatus, *Pjl_only, *Pjl_except, /* option variables */ *Pjl_options_set, *Pjl_show_values, *Pjl_vars_set, *Pjl_vars_except, *Pcl_vars_set, *Pcl_vars_except, *Pcl_papersize_codes, *User_opts, *Pjl_user_opts, *Pcl_user_opts, *Ps_user_opts, *Pjl_error_codes, *Pjl_quiet_codes, *Pjl_alert_codes, *Setvals, *Ignore, *Translate, *Status_fields; EXTERN OBJ **Var_list[] #ifdef DEF = { &Zopts, &Topts, &Unsorted_Zopts, &Unsorted_Topts, &Raw, &Model, &Printcap, &Index, &Entries, &Devstatus, &Pjl_only, &Pjl_except, /* option variables */ &Pjl_options_set, &Pjl_show_values, &Pjl_vars_set, &Pjl_vars_except, &Pcl_vars_set, &Pcl_vars_except, &Pcl_papersize_codes, &User_opts, &Pjl_user_opts, &Pcl_user_opts, &Ps_user_opts, &Pjl_error_codes, &Pjl_quiet_codes, &Pjl_alert_codes, &Setvals, &Ignore, &Translate, &Status_fields, 0 } #endif ; EXTERN char *Loweropts[26]; /* lower case options */ EXTERN char *Upperopts[26]; /* upper case options */ EXTERN char **Envp; /* environment variables */ EXTERN char **Argv; /* parms variables */ EXTERN int Argc; /* we have the number of variables */ EXTERN time_t Start_time; /* start time of program */ EXTERN char RemoteIPAddr[256]; EXTERN int Appsocket, /* accounting fd */ Autodetect, /* let printer autodetect type */ Close_appsocket, /* close the appsocket connection */ Crlf, /* only do CRLF */ Dev_retries, /* number of retries on open */ Dev_sleep DEFINE(=1000), /* wait between retries in Millisec */ Errorcode, /* exit value */ Foomatic DEFINE(=1), /* enable foomatic conversion */ Force_conversion, /* force conversion by file utility */ Force_processing, /* force processing by ifhp */ Force_status, /* even if device is not socket or tty, allow status */ Full_time, /* use Full_time format */ Ignore_eof, /* ignore eof on input */ Initial_timeout, /* initial timeout on first write */ Logall, /* log all information back from printer */ Max_fd, /* maximum fd opened */ Max_status_size DEFINE(=8), /* status file max size */ Min_status_size DEFINE(=2), /* status file min size */ No_udp_monitor, /* do not use udp monitor */ Null_pad_count, /* null padding on PJL ENTER command */ OF_Mode, /* running in OF mode */ Pagecount_end DEFINE(=1), /* pagecount at end */ Pagecount_interval, /* pagecount polling interval */ Pagecount_poll, /* pagecount times to poll (default is 1) */ Pagecount_poll_end, /* pagecount times to poll */ Pagecount_poll_start, /* pagecount times to poll */ Pagecount_start DEFINE(=1), /* pagecount at start */ Pagecount_timeout, /* pagecount */ Pcl, /* has PCL support */ Pcl_eoj DEFINE(=1), /* PCL eoj */ Pcl_eoj_at_end DEFINE(=1),/* PCL eoj at start */ Pcl_eoj_at_start DEFINE(=1),/* PCL eoj at start */ Pjl, /* has PJL support */ Pjl_console, /* use the PJL Console */ Pjl_display_size, /* use the PJL Console */ Pjl_enter, /* use the PJL ENTER command */ Pjl_waitend_byjobname, /* wait for the specific job name string with the end of job string */ Poll_for_status, /* poll for status */ Ps, /* has PostScript support */ Ps_ctrl_t, /* end status indications from PostScript ctrl_T status */ Ps_eoj DEFINE(=1), /* PS eoj */ Ps_eoj_at_end DEFINE(=1), /* PS eoj at end */ Ps_eoj_at_start DEFINE(=1), /* PS eoj at start */ Psonly, /* only recognizes PostScript */ Hpgl2, /* has HPGL2 support - added by Samuel Lown @ CERN */ Qms, /* QMS printer */ Quiet, /* suppress printer status messages */ Remove_pjl_at_start, /* remove PJL from start of file */ Reopen_for_job, /* open the device read/write */ Send_job_rw_timeout, /* send job rw operation timeout */ Shutdown_appsocket, /* shutdown when appsocket */ Status, /* any type of status - off = write only */ Status_fd DEFINE(=-2), /* status reporting to remote site */ Sync_interval, /* sync interval */ Sync_timeout, /* sync timeout */ Snmp_monitor, /* use snmp monitor */ Snmp_wait_after_close DEFINE(=1), /* use snmp monitor */ Snmp_fd, /* read status from snmp monitor */ Tbcp, /* supports Postscript TBCP */ Text, /* supports test files */ Trace_on_stderr, /* puts out trace on stderr as well */ Ustatus_on, /* Ustatus was sent, need to send USTATUSOFF */ Wait_for_banner, /* wait for banner page to be completed */ Waitend_ctrl_t_interval, /* wait between sending CTRL T */ Waitend_interval, /* wait between sending end status requests */ Waitend_timeout; /* total time to wait for job */ EXTERN char *Accounting_info DEFINE(="AnPR"), *Accountfile, /* accounting file */ *Accounting_script, /* accounting script to use */ *Config_file, /* config file list */ *Device, /* device to open */ *End_status, /* status file */ *Foomatic_rip, /* foomatic rip */ *Model_id, /* printer model */ *Pagecount, /* pagecount */ *Name, /* program name */ *Pjl_ready_msg, /* ready message for console */ *Pjl_done_msg, /* done message for console */ *Ppd_file, /* PPD file */ *Remove_ctrl, /* remove these control chars */ *Statusfile, /* status file */ *Status_ignore, /* ignore these status entries */ *Status_translate, /* ignore these status entries */ *Stty_args, /* if device is tty, stty values */ *Snmp_dev, /* SNMP device */ *Snmp_program, /* SNMP program */ *Snmp_status_fields, /* SNMP status fields */ *Snmp_sync_status, /* SNMP sync status */ *Snmp_end_status, /* SNMP end status */ *Sync, /* synchronize printer */ *Waitend; /* wait for end using sync */ /* * set by routines */ EXTERN char *Ps_pagecount_code, /* how to do pagecount */ *Ps_status_code; /* how to get status */ extern struct keyvalue Valuelist[], Builtin_values[]; #include EXTERN int Alarm_timed_out; /* flag */ EXTERN int Timeout_pending; #if defined(HAVE_SIGLONGJMP) EXTERN sigjmp_buf Timeout_env; # define Set_timeout() (sigsetjmp(Timeout_env,1)==0) #else EXTERN jmp_buf Timeout_env; # define Set_timeout() (setjmp(Timeout_env)==0) #endif #if defined DMALLOC # include #endif /* PROTOTYPES */ void cleanup(int sig); void usage(); void getargs( int argc, char **argv ); void Fix_special_user_opts( char *name, OBJ *opts, OBJ *unsorted_opts, char *line ); void Init_outbuf(); void Put_outbuf_str( char *s ); void Put_outbuf_len( char *s, int len ); void Init_inbuf(); void Put_inbuf_len( char *str, int len ); void Get_inbuf_str(void); void Pr_status( char *str ); void Check_device_status( char *line, int infovar ); void Initialize_parms( OBJ *list, struct keyvalue *valuelist ); void Dump_parms( char *title, struct keyvalue *v ); void Process_job( int do_pagecount, int pagecount_ps, int pagecount_pjl, char *pagecount_prog, int pagecount_snmp ); void Start_of_job( int *startpagecounter, int do_pagecount, int pagecount_ps, int pagecount_pjl, int nested_job, char *pagecount_prog, int pagecount_snmp ); void End_of_job( int *startpagecounter, int do_pagecount, int pagecount_ps, int pagecount_pjl, int wait_for_end, int nested_job, int banner_page, char *pagecount_prog, int pagecount_snmp ); int Find_in_list( OBJ *list, const char *str ); void Put_pjl( char *s ); void Put_pcl( char *s ); void Put_ps( char *s ); void Put_fixed( char *s ); int Get_nonblock_io( int fd ); void Set_nonblock_io( int fd ); void Set_block_io( int fd ); plp_sigfunc_t plp_signal (int signo, plp_sigfunc_t func); plp_sigfunc_t plp_signal_break (int signo, plp_sigfunc_t func); void plp_block_all_signals ( plp_block_mask *oblock ); void plp_unblock_all_signals ( plp_block_mask *oblock ); void plp_set_signal_mask ( plp_block_mask *in, plp_block_mask *out ); void plp_unblock_one_signal ( int sig, plp_block_mask *oblock ); void plp_block_one_signal( int sig, plp_block_mask *oblock ); void plp_sigpause( void ); void Set_timeout_signal_handler( int timeout, plp_sigfunc_t handler ); void Set_timeout_alarm( int timeout ); void Set_timeout_break( int timeout ); void Clear_timeout( void ); int Write_fd_len_timeout( int timeout, int fd, const char *msg, int len ); int Write_read_timeout( int len, char *buffer, int timeout ); int Read_status_timeout( int timeout ); int Resolve_key_val( char *prefix, char *id, OBJ *values, Wr_out routine, int depth, int maxdepth ); int Is_flag( char *s, int *v ); void Resolve_list( char *prefix, OBJ *list, OBJ *values, Wr_out routine, int depth, int maxdepth ); void Resolve_user_opts( char *prefix, OBJ *only, OBJ *list, OBJ *values, Wr_out routine ); char *Fix_option_str( char *str, int remove_ws, int trim, int one_line ); char *Find_sub_value( int c, char *id, int strval); int Builtin( char* prefix, char *id, char *value, Wr_out routine); const char *Decode_status (plp_status_t *status); int plp_usleep( int i ); void Strip_leading_spaces ( char **vp ); int Font_download( char* prefix, char *id, char *value, Wr_out routine); void Pjl_job(); void Pjl_eoj(char *name); void Pjl_console_msg( int start ); int Pjl_setvar(char *prefix, char*id, char *value, Wr_out routine); int Pcl_setvar(char *prefix, char*id, char *value, Wr_out routine ); void Do_sync( int sync_timeout, int sync_interval, int pagecount_pjl ); void Do_waitend( int waitend_timeout, int waitend_interval, int waitend_ctrl_t_interval, int banner ); int Check_pagecount( int *use_ps_v, int *use_pjl_v, char **use_prog_v, int *use_snmp_v ); int Do_pagecount( int pagecount_timeout, int pagecount_interval, int pagecount_poll, int use_ps, int use_pjl, char *use_prog, int use_snmp ); int Current_pagecounter( int pagecount_timeout, int use_pjl, int use_ps, int use_snmp ); void Send_job(); void URL_decode( char *s ); int Process_OF_mode(void); void close_on_exec( int n ); void Set_max_fd( int n ); void Use_file_util(char *pgm, char *value, int value_len ); int Make_tempfile( void ); void Make_stdin_file(); char * Set_mode_lang( char *s ); int Fd_readable( int fd, int *poll_for_status ); void Init_job( char *language ); void Term_job( char *language ); int Filter_file( char *pgm, char *title, int fd_stdin, int fd_stdout, char *errbuffer, int len_errbuffer ); void Write_error_msg( int fd, char *id ); OBJ * Split_cmd_line_OBJ( OBJ *l, char *s ); void Make_model_index( OBJ *input, OBJ *index, OBJ *entries ); OBJ *Make_new_model_entry( char *key, OBJ *index, OBJ *entries, OBJ *items, OBJ *strval ); void Select_model_info( OBJ *model, OBJ *index, OBJ *entries, char *id, int level, int maxlevel ); int Get_prog_status( OBJ *devstatus, char *pgm, int timeout ); #endif ifhp-3.5.20/src/debug.c0100644000175100017510000001623510130541266015010 0ustar papowellpapowell/*************************************************************************** * LPRng - An Extended Print Spooler System * * Copyright 1988-2001, Patrick Powell, San Diego, CA * papowell@lprng.com * See LICENSE for conditions of use. * ***************************************************************************/ static char *const _id = "$Id: debug.c,v 1.2 2002/04/01 18:01:01 papowell Exp papowell $"; /************************************************************* * void Get_debug_parm(int argc, char *argv[], struct keywords *list) * Scan the command line for -D debugparms * debugparms has the format value,key=value,key,key@... * 1. if the value is an integer, then we treat it as a value for DEBUG * 2. if a key is present, then we scan the list and find the * match for the key. We then convert according to the type of * option expected. *************************************************************/ #include "ifhp.h" #include "debug.h" /**** ENDINCLUDE ****/ /* * Types of options that we can initialize or set values of */ #define FLAG_K 0 #define INTEGER_K 1 #define STRING_K 2 /* * datastructure for initialization */ struct keywords{ char *keyword; /* name of keyword */ char *translation; /* translation for display */ int type; /* type of entry */ void *variable; /* address of variable */ int maxval; /* value of token */ int flag; /* flag for variable */ char *default_value; /* default value */ }; struct keywords debug_vars[] /* debugging variables */ = { #if !defined(NODEBUG) { "network",0,FLAG_K,(void *)&DbgFlag,DNW1, DNWMASK, 0}, { "network+1",0,FLAG_K,(void *)&DbgFlag,DNW1, DNWMASK, 0}, { "network+2",0,FLAG_K,(void *)&DbgFlag,DNW2|DNW1, DNWMASK, 0}, { "network+3",0,FLAG_K,(void *)&DbgFlag,DNW3|DNW2|DNW1, DNWMASK, 0}, { "network+4",0,FLAG_K,(void *)&DbgFlag,DNW4|DNW3|DNW2|DNW1, DNWMASK, 0}, { "database",0,FLAG_K,(void *)&DbgFlag,DDB1, DDBMASK, 0}, { "database+1",0,FLAG_K,(void *)&DbgFlag,DDB1, DDBMASK, 0}, { "database+2",0,FLAG_K,(void *)&DbgFlag,DDB2|DDB1, DDBMASK, 0}, { "database+3",0,FLAG_K,(void *)&DbgFlag,DDB3|DDB2|DDB1, DDBMASK, 0}, { "database+4",0,FLAG_K,(void *)&DbgFlag,DDB4|DDB3|DDB2|DDB1, DDBMASK, 0}, { "database+4",0,FLAG_K,(void *)&DbgFlag,DDB4, DDBMASK, 0}, { "lpr",0,FLAG_K,(void *)&DbgFlag,DRECV1, DRECVMASK, 0}, { "lpr+1",0,FLAG_K,(void *)&DbgFlag,DRECV1, DRECVMASK, 0}, { "lpr+2",0,FLAG_K,(void *)&DbgFlag,DRECV2|DRECV1, DRECVMASK, 0}, { "lpr+3",0,FLAG_K,(void *)&DbgFlag,DRECV3|DRECV2|DRECV1, DRECVMASK, 0}, { "lpr+4",0,FLAG_K,(void *)&DbgFlag,DRECV4|DRECV3|DRECV2|DRECV1, DRECVMASK, 0}, { "lpc",0,FLAG_K,(void *)&DbgFlag,DCTRL1, DCTRLMASK, 0}, { "lpc+1",0,FLAG_K,(void *)&DbgFlag,DCTRL1, DCTRLMASK, 0}, { "lpc+2",0,FLAG_K,(void *)&DbgFlag,DCTRL2|DCTRL1, DCTRLMASK, 0}, { "lpc+3",0,FLAG_K,(void *)&DbgFlag,DCTRL3|DCTRL2|DCTRL1, DCTRLMASK, 0}, { "lpc+4",0,FLAG_K,(void *)&DbgFlag,DCTRL4|DCTRL3|DCTRL2|DCTRL1, DCTRLMASK, 0}, { "lprm",0,FLAG_K,(void *)&DbgFlag,DLPRM1, DLPRMMASK, 0}, { "lprm+1",0,FLAG_K,(void *)&DbgFlag,DLPRM1, DLPRMMASK, 0}, { "lprm+2",0,FLAG_K,(void *)&DbgFlag,DLPRM2|DLPRM1, DLPRMMASK, 0}, { "lprm+3",0,FLAG_K,(void *)&DbgFlag,DLPRM3|DLPRM2|DLPRM1, DLPRMMASK, 0}, { "lprm+4",0,FLAG_K,(void *)&DbgFlag,DLPRM4|DLPRM3|DLPRM2|DLPRM1, DLPRMMASK, 0}, { "lpq",0,FLAG_K,(void *)&DbgFlag,DLPQ1, DLPQMASK, 0}, { "lpq+1",0,FLAG_K,(void *)&DbgFlag,DLPQ1, DLPQMASK, 0}, { "lpq+2",0,FLAG_K,(void *)&DbgFlag,DLPQ2|DLPQ1, DLPQMASK, 0}, { "lpq+3",0,FLAG_K,(void *)&DbgFlag,DLPQ3|DLPQ2|DLPQ1, DLPQMASK, 0}, { "lpq+4",0,FLAG_K,(void *)&DbgFlag,DLPQ4|DLPQ3|DLPQ2|DLPQ1, DLPQMASK, 0}, { "log",0,FLAG_K,(void *)&DbgFlag,DLOG1, DLOGMASK, 0}, { "log+1",0,FLAG_K,(void *)&DbgFlag,DLOG1, DLOGMASK, 0}, { "log+2",0,FLAG_K,(void *)&DbgFlag,DLOG2|DLOG1, DLOGMASK, 0}, { "log+3",0,FLAG_K,(void *)&DbgFlag,DLOG3|DLOG2|DLOG1, DLOGMASK, 0}, { "log+4",0,FLAG_K,(void *)&DbgFlag,DLOG4|DLOG3|DLOG2|DLOG1, DLOGMASK, 0}, { "utils",0,FLAG_K,(void *)&DbgFlag,DUTILS1, DUTILSMASK, 0}, { "utils+1",0,FLAG_K,(void *)&DbgFlag,DUTILS1, DUTILSMASK, 0}, { "utils+2",0,FLAG_K,(void *)&DbgFlag,DUTILS2|DUTILS1, DUTILSMASK, 0}, { "utils+3",0,FLAG_K,(void *)&DbgFlag,DUTILS3|DUTILS2|DUTILS1, DUTILSMASK, 0}, { "utils+4",0,FLAG_K,(void *)&DbgFlag,DUTILS4|DUTILS3|DUTILS2|DUTILS1, DUTILSMASK, 0}, { "test",0,INTEGER_K,(void *)&DbgTest, 0, 0, 0}, #endif { 0, 0, 0, 0, 0, 0, 0} }; /* Parse_debug (char *dbgstr, struct keywords *list, int interactive ); Input string: value,key=value,flag,flag@,... 1. crack the input line at the ',' 2. crack each option at = 3. search for key words 4. assign value to variable */ void Parse_debug (char *dbgstr, int interactive ) { #if !defined(NODEBUG) char *key, *convert, *end; int i, n, found, listindex, listcount; OBJ *list = 0; list = Split_STR_OBJ( /*p*/list, /*nomod*/1, /*str*/dbgstr, /*type*/OBJ_T_LIST, /*linesep*/FILESEP, /*escape*/0, /*comment*/ 0, /*trim*/1, /*keysep*/0,/*do_append*/0, /*lc*/0, /*flagvalues*/ 0, /*value_urlunesc*/0, MEMINFO ); for( listindex = 0, listcount = LEN_LIST_OBJ(list); listindex < listcount; ++listindex ){ end = key = GET_ENTRY_LIST_OBJ(list, listindex); found = 0; n = strtol(key,&end,0); if( *end == 0 ){ Debug = n; if( n == 0 )DbgFlag = 0; found = 1; } else { if( (end = safestrchr(key,'=')) ){ *end++ = 0; n = strtol(end,0,0); } /* search the keyword list */ for (i = 0; (convert = debug_vars[i].keyword) && safestrcasecmp( convert, key ); ++i ); if( convert != 0 ){ switch( debug_vars[i].type ){ case INTEGER_K: *(int *)debug_vars[i].variable = n; found = 1; break; case FLAG_K: *(int *)debug_vars[i].variable |= debug_vars[i].maxval; /* DEBUG1("Parse_debug: key '%s', val 0x%x, DbgFlag 0x%x", key, debug_vars[i].maxval, DbgFlag ); */ found = 1; break; default: break; } } } if(!found && interactive ){ int lastflag = 0; int nooutput = 0; FPRINTF (STDERR, "debug usage: -D [ num | flag=num | flag=str | flag | flag@ | flag+N ]*\n"); FPRINTF (STDERR, " flags recognized:"); for (i = 0; debug_vars[i].keyword; i++) { if( safestrchr( debug_vars[i].keyword, '+' ) ) continue; if( nooutput == 0 ){ if( i ){ FPRINTF( STDERR, ", " ); if( !(i % 4) ) FPRINTF( STDERR, "\n " ); } else { FPRINTF( STDERR, " " ); } } else { nooutput = 0; } switch( debug_vars[i].type ){ case INTEGER_K: FPRINTF (STDERR, "%s=num", debug_vars[i].keyword); break; case STRING_K: FPRINTF (STDERR, "%s=str", debug_vars[i].keyword); break; case FLAG_K: if( debug_vars[i].maxval == 0 || lastflag != debug_vars[i].flag ){ FPRINTF (STDERR, "%s[+N,@]", debug_vars[i].keyword ); lastflag = debug_vars[i].maxval; } else { nooutput = 1; } break; default: break; } } FPRINTF (STDERR, "\n"); Errorcode = JABORT; if( interactive > 0 )cleanup(0); } } FREE_OBJ( list ); list = 0; #endif /* LOGDEBUG("Parse_debug: Debug %d, DbgFlag 0x%x", Debug, DbgFlag ); */ } ifhp-3.5.20/src/stty.c0100644000175100017510000006472110130541267014731 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER *****/ static char *const _id = "$Id: stty.c,v 1.6 2002/04/01 18:01:03 papowell Exp papowell $"; #include "ifhp.h" /**** ENDINCLUDE ****/ #if USE_STTY == TERMIO # include # include #endif #if USE_STTY == SGTTYB # include #endif #if USE_STTY == TERMIOS # include #endif #if defined(HAVE_TTOLD_H) # include #endif #if USE_STTY == SGTTYB # if !defined(B19200) # ifdef EXTA # define B19200 EXTA # else # define B19200 B9600 # endif /* !defined(EXTA) */ # endif /* !defined(B19200) */ #if !defined(B38400) #ifdef EXTB #define B38400 EXTB #else #define B38400 B9600 #endif /* !defined(EXTB) */ #endif /* !defined(B38400) */ static struct bauds { char *string; int baud; int speed; } bauds[] = { { "110", 110, B110, }, { "134", 134, B134, }, { "150", 150, B150, }, { "300", 300, B300, }, { "600", 600, B600, }, { "1200", 1200, B1200, }, { "1800", 1800, B1800, }, { "2400", 2400, B2400, }, { "4800", 4800, B4800, }, { "9600", 9600, B9600, }, { "19200", 19200, B19200, }, { "38400", 38400, B38400, }, { (char *) 0, 0, 0 } }; /* * Set terminal modes. * * jmason: I've added support for some combination modes, * such as "pass8" and "parity". */ struct tchars termctrl; struct ltchars linectrl; struct sgttyb mode; static struct { char *string; int set; int reset; int lset; int lreset; } modes[] = { { "bs0", BS0, BS1, 0, 0 }, { "bs1", BS1, BS1, 0, 0 }, { "cbreak", CBREAK, 0, 0, 0 }, { "-cbreak", 0, CBREAK, 0, 0 }, { "cooked", 0, RAW, 0, 0 }, { "cr0", CR0, CR3, 0, 0 }, { "cr1", CR1, CR3, 0, 0 }, { "cr2", CR2, CR3, 0, 0 }, { "cr3", CR3, CR3, 0, 0 }, { "decctlq", 0, 0, LDECCTQ, 0 }, { "-decctlq", 0, 0, 0, LDECCTQ, }, { "echo", ECHO, 0, 0, 0 }, { "-echo", 0, ECHO, 0, 0 }, { "even", EVENP, 0, 0, 0 }, { "-even", 0, EVENP, 0, 0 }, { "ff0", FF0, FF1, 0, 0 }, { "ff1", FF1, FF1, 0, 0 }, { "lcase", LCASE, 0, 0, 0 }, { "-lcase", 0, LCASE, 0, 0 }, { "litout", 0, 0, LLITOUT, 0 }, { "-litout", 0, 0, 0, LLITOUT, }, { "nl", 0, CRMOD, 0, 0 }, { "-nl", CRMOD, 0, 0, 0 }, { "nl0", NL0, NL3, 0, 0 }, { "nl1", NL1, NL3, 0, 0 }, { "nl2", NL2, NL3, 0, 0 }, { "nl3", NL3, NL3, 0, 0 }, { "noflsh", 0, 0, LNOFLSH, 0 }, { "-noflsh", 0, 0, 0, LNOFLSH, }, { "nohang", 0, 0, LNOHANG, 0 }, { "-nohang", 0, 0, 0, LNOHANG, }, { "odd", ODDP, 0, 0, 0 }, { "-odd", 0, ODDP, 0, 0 }, { "raw", RAW, 0, 0, 0 }, { "-raw", 0, RAW, 0, 0 }, { "tab0", TAB0, XTABS, 0, 0 }, { "tab1", TAB1, XTABS, 0, 0 }, { "tab2", TAB2, XTABS, 0, 0 }, { "tabs", 0, XTABS, 0, 0 }, { "-tabs", XTABS, 0, 0, 0 }, { "tandem", TANDEM, 0, 0, 0 }, { "-tandem", 0, TANDEM, 0, 0 }, #ifndef IS_NEXT { "tilde", 0, 0, LTILDE, 0 }, { "-tilde", 0, 0, 0, LTILDE, }, #endif { "tn300", CR1, ALLDELAY, 0, 0 }, { "tty33", CR1, ALLDELAY, 0, 0 }, { "tty37", FF1 + CR2 + TAB1 + NL1, ALLDELAY, 0, 0 }, { "vt05", NL2, ALLDELAY, 0, 0 }, /* jmason modes and synonyms: */ { "evenp", EVENP, 0, 0, 0 }, { "-evenp", 0, EVENP, 0, 0 }, { "parity", EVENP, 0, 0, 0 }, { "-parity", 0, EVENP|ODDP, 0, 0 }, { "oddp", ODDP, 0, 0, 0 }, { "-oddp", 0, ODDP, 0, 0 }, #ifdef LPASS8 { "pass8", 0, 0, LPASS8, 0 }, { "-pass8", 0, 0, 0, LPASS8, }, #endif {0} }; static struct special { char *name; char *cp; char def; } special[] = { { "stop", &termctrl.t_stopc, CSTOP }, { "start", &termctrl.t_startc, CSTART }, { 0, 0, 0 } }; void Do_stty( int fd, char *Stty_command ) { int i, localmode, linedisc, argcount; char *s, *arg, *parm = 0; OBJ *l = 0; l = NEW_OBJ(0,MEMINFO); l = Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/Stty_command, /*type*/OBJ_T_LIST, /*linesep*/WHITESPACE, /*escape*/0, /*comment*/ 0, /*trim*/1, /*keysep*/0,/*do_append*/0, /*lc*/0, /*flagvalues*/ 0, /*value_urlunesc*/0, MEMINFO ); DEBUG4("Do_stty: using SGTTYB, fd %d", fd ); if( ioctl( fd, TIOCGETP, &mode) < 0 || ioctl( fd, TIOCGETC, &termctrl) < 0 || ioctl( fd, TIOCLGET, &localmode) < 0 || ioctl( fd, TIOCGLTC, &linectrl) < 0 ){ Errorcode = JABORT; LOGERR_DIE(LOG_INFO) "cannot get tty parameters"); } DEBUG4("Do_stty: before mode 0x%x, lmode 0x%x, speed 0x%x", mode.sg_flags, localmode, mode.sg_ispeed); for( argcount = 0; argcount < LEN_LIST_OBJ(l); ++argcount ){ arg = GET_ENTRY_LIST_OBJ(l,argcount); for( i = 0; modes[i].string && strcasecmp( modes[i].string, arg); i++); if( modes[i].string ){ DEBUG4("Do_stty: modes %s, mc 0x%x ms 0x%x lc 0x%x ls 0x%x", modes[i].string, modes[i].reset, modes[i].set, modes[i].lreset, modes[i].lset); mode.sg_flags &= ~modes[i].reset; mode.sg_flags |= modes[i].set; localmode &= ~modes[i].lreset; localmode |= modes[i].lset; continue; } for( i = 0; special[i].name && strcasecmp( special[i].name, arg); i++); if( special[i].name) { if( ++argcount < LEN_LIST_OBJ(l) ){ parm = GET_ENTRY_LIST_OBJ(l,argcount); } else { Errorcode = JABORT; FATAL(LOG_INFO) "Do_stty: missing parameter for %s\n", arg); } if( parm[0] == '^') { if( parm[1] == '?') { *special[i].cp = 0177; } else { *special[i].cp = 037 & parm[1]; } } else { *special[i].cp = parm[0]; } DEBUG4("Do_stty: special %s %s", arg, parm); continue; } for( i = 0; bauds[i].string && strcasecmp( bauds[i].string, arg); i++); if( bauds[i].string) { DEBUG4("Do_stty: speed %s", arg); mode.sg_ispeed = mode.sg_ospeed = bauds[i].speed; continue; } if( !strcasecmp( "new", arg)) { DEBUG4("Do_stty: ldisc %s", arg); linedisc = NTTYDISC; if( ioctl( fd, TIOCSETD, &linedisc) < 0){ Errorcode = JABORT; LOGERR_DIE(LOG_INFO) "Do_stty: TIOCSETD ioctl failed"); } continue; } if( !strcasecmp( "old", arg)) { DEBUG4("Do_stty: ldisc %s", arg); linedisc = 0; if( ioctl( fd, TIOCSETD, &linedisc) < 0){ Errorcode = JABORT; LOGERR_DIE(LOG_INFO) "Do_stty: TIOCSETD ioctl failed"); } continue; } LOGMSG(LOG_INFO)"Do_stty: unknown mode: %s", arg); } DEBUG4("Do_stty: after mode 0x%x, lmode 0x%x, speed 0x%x", mode.sg_flags, localmode, mode.sg_ispeed); if( ioctl( fd, TIOCSETN, &mode) < 0 || ioctl( fd, TIOCSETC, &termctrl) < 0 || ioctl( fd, TIOCSLTC, &linectrl) < 0 || ioctl( fd, TIOCLSET, &localmode) < 0) { Errorcode = JABORT; LOGERR_DIE(LOG_INFO) "cannot set tty parameters"); } Free_line_list( &l ); } #endif #if USE_STTY == TERMIO /* the folks who are responsible for include files * must be the lowest paid/motivated ones in * OS development... (mj) */ #if !defined(TOSTOP) && defined(_TOSTOP) #define TOSTOP _TOSTOP #endif static struct bauds { char *string; int baud; int speed; } bauds[] = { { "110", 110, B110, }, { "134", 134, B134, }, { "150", 150, B150, }, { "300", 300, B300, }, { "600", 600, B600, }, { "1200", 1200, B1200, }, { "1800", 1800, B1800, }, { "2400", 2400, B2400, }, { "4800", 4800, B4800, }, { "9600", 9600, B9600, }, { "19200", 19200, B19200, }, { "38400", 38400, B38400, }, { (char *) 0, 0, 0 } }; struct termio tio; static struct { char *string; int iset; int ireset; int oset; int oreset; int cset; int creset; int lset; int lreset; } tmodes[] = { /* input modes */ { "ignbrk", IGNBRK, 0, 0, 0, 0, 0, 0, 0 }, { "-ignbrk", 0, IGNBRK, 0, 0, 0, 0, 0, 0 }, { "brkint", BRKINT, 0, 0, 0, 0, 0, 0, 0 }, { "-brkint", 0, BRKINT, 0, 0, 0, 0, 0, 0 }, { "ignpar", IGNPAR, 0, 0, 0, 0, 0, 0, 0 }, { "-ignpar", 0, IGNPAR, 0, 0, 0, 0, 0, 0 }, { "parmrk", PARMRK, 0, 0, 0, 0, 0, 0, 0 }, { "-parmrk", 0, PARMRK, 0, 0, 0, 0, 0, 0 }, { "inpck", INPCK, 0, 0, 0, 0, 0, 0, 0 }, { "-inpck", 0, INPCK, 0, 0, 0, 0, 0, 0 }, { "istrip", ISTRIP, 0, 0, 0, 0, 0, 0, 0 }, { "-istrip", 0, ISTRIP, 0, 0, 0, 0, 0, 0 }, { "inlcr", INLCR, 0, 0, 0, 0, 0, 0, 0 }, { "-inlcr", 0, INLCR, 0, 0, 0, 0, 0, 0 }, { "igncr", IGNCR, 0, 0, 0, 0, 0, 0, 0 }, { "-igncr", 0, IGNCR, 0, 0, 0, 0, 0, 0 }, { "icrnl", ICRNL, 0, 0, 0, 0, 0, 0, 0 }, { "-icrnl", 0, ICRNL, 0, 0, 0, 0, 0, 0 }, { "lcase", IUCLC, 0, 0, 0, 0, 0, 0, 0 }, { "iuclc", IUCLC, 0, 0, 0, 0, 0, 0, 0 }, { "-lcase", 0, IUCLC, 0, 0, 0, 0, 0, 0 }, { "-iuclc", 0, IUCLC, 0, 0, 0, 0, 0, 0 }, { "ixon", IXON, 0, 0, 0, 0, 0, 0, 0 }, { "-ixon", 0, IXON, 0, 0, 0, 0, 0, 0 }, { "ixany", IXANY, 0, 0, 0, 0, 0, 0, 0 }, { "-ixany", 0, IXANY, 0, 0, 0, 0, 0, 0 }, { "ixoff", IXOFF, 0, 0, 0, 0, 0, 0, 0 }, { "-ixoff", 0, IXOFF, 0, 0, 0, 0, 0, 0 }, { "decctlq", IXANY, 0, 0, 0, 0, 0, 0, 0 }, { "-decctlq", 0, IXANY, 0, 0, 0, 0, 0, 0 }, { "tandem", IXOFF, 0, 0, 0, 0, 0, 0, 0 }, { "-tandem", 0, IXOFF, 0, 0, 0, 0, 0, 0 }, #ifdef IMAXBEL { "imaxbel", IMAXBEL, 0, 0, 0, 0, 0, 0, 0 }, { "-maxbel", 0, IMAXBEL, 0, 0, 0, 0, 0, 0 }, #endif /* output modes */ { "opost", 0, 0, OPOST, 0, 0, 0, 0, 0 }, { "-opost", 0, 0, 0, OPOST, 0, 0, 0, 0 }, { "olcuc", 0, 0, OLCUC, 0, 0, 0, 0, 0 }, { "-olcuc", 0, 0, 0, OLCUC, 0, 0, 0, 0 }, { "onlcr", 0, 0, ONLCR, 0, 0, 0, 0, 0 }, { "-onlcr", 0, 0, 0, ONLCR, 0, 0, 0, 0 }, { "ocrnl", 0, 0, OCRNL, 0, 0, 0, 0, 0 }, { "-ocrnl", 0, 0, 0, OCRNL, 0, 0, 0, 0 }, { "onocr", 0, 0, ONOCR, 0, 0, 0, 0, 0 }, { "-onocr", 0, 0, 0, ONOCR, 0, 0, 0, 0 }, { "onlret", 0, 0, ONLRET, 0, 0, 0, 0, 0 }, { "-onlret", 0, 0, 0, ONLRET, 0, 0, 0, 0 }, { "ofill", 0, 0, OFILL, 0, 0, 0, 0, 0 }, { "-ofill", 0, 0, 0, OFILL, 0, 0, 0, 0 }, { "ofdel", 0, 0, OFDEL, 0, 0, 0, 0, 0 }, { "-ofdel", 0, 0, 0, OFDEL, 0, 0, 0, 0 }, { "nl0", 0, 0, NL0, NLDLY, 0, 0, 0, 0 }, { "nl1", 0, 0, NL1, NLDLY, 0, 0, 0, 0 }, { "cr0", 0, 0, CR1, CRDLY, 0, 0, 0, 0 }, { "cr1", 0, 0, CR1, CRDLY, 0, 0, 0, 0 }, { "cr2", 0, 0, CR2, CRDLY, 0, 0, 0, 0 }, { "cr3", 0, 0, CR3, CRDLY, 0, 0, 0, 0 }, { "tab0", 0, 0, TAB0, TABDLY, 0, 0, 0, 0 }, { "tab1", 0, 0, TAB1, TABDLY, 0, 0, 0, 0 }, { "tab2", 0, 0, TAB2, TABDLY, 0, 0, 0, 0 }, { "tab3", 0, 0, TAB3, TABDLY, 0, 0, 0, 0 }, { "bs0", 0, 0, BS0, BSDLY, 0, 0, 0, 0 }, { "bs1", 0, 0, BS1, BSDLY, 0, 0, 0, 0 }, { "vt0", 0, 0, VT0, VTDLY, 0, 0, 0, 0 }, { "vt1", 0, 0, VT1, VTDLY, 0, 0, 0, 0 }, { "ff0", 0, 0, FF0, FFDLY, 0, 0, 0, 0 }, { "ff1", 0, 0, FF1, FFDLY, 0, 0, 0, 0 }, { "nopost", 0, 0, 0, OPOST, 0, 0, 0, 0 }, { "-nopost", 0, 0, OPOST, 0, 0, 0, 0, 0 }, { "fill", 0, 0, OFILL, OFDEL, 0, 0, 0, 0 }, { "-fill", 0, 0, 0, OFILL | OFDEL, 0, 0, 0, 0 }, { "nul-fill", 0, 0, OFILL, OFDEL, 0, 0, 0, 0 }, { "del-fill", 0, 0, OFILL | OFDEL, 0, 0, 0, 0, 0 }, #ifdef XTABS { "tabs", 0, 0, 0, XTABS | TABDLY, 0, 0, 0, 0 }, { "-tabs", 0, 0, XTABS, TABDLY, 0, 0, 0, 0 }, #endif /* control modes */ { "cs5", 0, 0, 0, 0, CS5, CSIZE, 0, 0 }, { "cs6", 0, 0, 0, 0, CS6, CSIZE, 0, 0 }, { "cs7", 0, 0, 0, 0, CS7, CSIZE, 0, 0 }, { "cs8", 0, 0, 0, 0, CS8, CSIZE, 0, 0 }, { "cstopb", 0, 0, 0, 0, CSTOPB, 0, 0, 0 }, { "-cstopb", 0, 0, 0, 0, 0, CSTOPB, 0, 0 }, { "cread", 0, 0, 0, 0, CREAD, 0, 0, 0 }, { "-cread", 0, 0, 0, 0, 0, CREAD, 0, 0 }, { "parenb", 0, 0, 0, 0, PARENB, 0, 0, 0 }, { "-parenb", 0, 0, 0, 0, 0, PARENB, 0, 0 }, { "parodd", 0, 0, 0, 0, PARODD, 0, 0, 0 }, { "-parodd", 0, 0, 0, 0, 0, PARODD, 0, 0 }, { "hupcl", 0, 0, 0, 0, HUPCL, 0, 0, 0 }, { "-hupcl", 0, 0, 0, 0, 0, HUPCL, 0, 0 }, { "clocal", 0, 0, 0, 0, CLOCAL, 0, 0, 0 }, { "-clocal", 0, 0, 0, 0, 0, CLOCAL, 0, 0 }, #ifdef LOBLK { "loblk", 0, 0, 0, 0, LOBLK, 0, 0, 0 }, { "-loblk", 0, 0, 0, 0, 0, LOBLK, 0, 0 }, #endif { "parity", 0, 0, 0, 0, PARENB | CS7, PARODD | CSIZE, 0, 0 }, { "-parity", 0, 0, 0, 0, CS8, PARENB | CSIZE, 0, 0 }, { "evenp", 0, 0, 0, 0, PARENB | CS7, PARODD | CSIZE, 0, 0 }, { "-evenp", 0, 0, 0, 0, CS8, PARENB | CSIZE, 0, 0 }, { "oddp", 0, 0, 0, 0, PARENB | PARODD | CS7, CSIZE, 0, 0 }, { "-oddp", 0, 0, 0, 0, CS8, PARENB | PARODD | CSIZE, 0, 0 }, { "stopb", 0, 0, 0, 0, CSTOPB, 0, 0, 0 }, { "-stopb", 0, 0, 0, 0, 0, CSTOPB, 0, 0 }, { "hup", 0, 0, 0, 0, HUPCL, 0, 0, 0 }, { "-hup", 0, 0, 0, 0, 0, HUPCL, 0, 0 }, #ifdef CRTSCTS { "crtscts", 0, 0, 0, 0, CRTSCTS, 0, 0, 0 }, { "-crtscts", 0, 0, 0, 0, 0, CRTSCTS, 0, 0 }, #endif /* local modes */ { "isig", 0, 0, 0, 0, 0, 0, ISIG, 0 }, { "-isig", 0, 0, 0, 0, 0, 0, 0, ISIG }, { "noisig", 0, 0, 0, 0, 0, 0, 0, ISIG }, { "-noisig", 0, 0, 0, 0, 0, 0, ISIG, 0 }, { "icanon", 0, 0, 0, 0, 0, 0, ICANON, 0 }, { "-icanon", 0, 0, 0, 0, 0, 0, 0, ICANON }, { "cbreak", 0, 0, 0, 0, 0, 0, ICANON, 0 }, { "-cbreak", 0, 0, 0, 0, 0, 0, 0, ICANON }, { "xcase", 0, 0, 0, 0, 0, 0, XCASE, 0 }, { "-xcase", 0, 0, 0, 0, 0, 0, 0, XCASE }, { "echo", 0, 0, 0, 0, 0, 0, ECHO, 0 }, { "-echo", 0, 0, 0, 0, 0, 0, 0, ECHO }, { "echoe", 0, 0, 0, 0, 0, 0, ECHOE, 0 }, { "-echoe", 0, 0, 0, 0, 0, 0, 0, ECHOE }, { "crterase", 0, 0, 0, 0, 0, 0, ECHOE, 0 }, { "-crterase", 0, 0, 0, 0, 0, 0, 0, ECHOE }, { "echok", 0, 0, 0, 0, 0, 0, ECHOK, 0 }, { "-echok", 0, 0, 0, 0, 0, 0, 0, ECHOK }, { "lfkc", 0, 0, 0, 0, 0, 0, ECHOK, 0 }, { "-lfkc", 0, 0, 0, 0, 0, 0, 0, ECHOK }, { "echonl", 0, 0, 0, 0, 0, 0, ECHONL, 0 }, { "-echonl", 0, 0, 0, 0, 0, 0, 0, ECHONL }, { "noflsh", 0, 0, 0, 0, 0, 0, NOFLSH, 0 }, { "-noflsh", 0, 0, 0, 0, 0, 0, 0, NOFLSH }, { "tostop", 0, 0, 0, 0, 0, 0, TOSTOP, 0 }, { "-tostop", 0, 0, 0, 0, 0, 0, 0, TOSTOP }, #ifdef ECHOCTL { "echoctl", 0, 0, 0, 0, 0, 0, ECHOCTL, 0 }, { "-echoctl", 0, 0, 0, 0, 0, 0, 0, ECHOCTL }, { "ctlecho", 0, 0, 0, 0, 0, 0, ECHOCTL, 0 }, { "-ctlecho", 0, 0, 0, 0, 0, 0, 0, ECHOCTL }, #endif #ifdef ECHOPRT { "echoprt", 0, 0, 0, 0, 0, 0, ECHOPRT, 0 }, { "-echoprt", 0, 0, 0, 0, 0, 0, 0, ECHOPRT }, { "prterase", 0, 0, 0, 0, 0, 0, ECHOPRT, 0 }, { "-prterase", 0, 0, 0, 0, 0, 0, 0, ECHOPRT }, #endif #ifdef ECHOKE { "echoke", 0, 0, 0, 0, 0, 0, ECHOKE, 0 }, { "-echoke", 0, 0, 0, 0, 0, 0, 0, ECHOKE }, { "crtkill", 0, 0, 0, 0, 0, 0, ECHOKE, 0 }, { "-crtkill", 0, 0, 0, 0, 0, 0, 0, ECHOKE }, #endif /* convenience modes */ { "lcase", IUCLC, 0, OLCUC, 0, 0, 0, XCASE, 0 }, { "-lcase", 0, IUCLC, 0, OLCUC, 0, 0, 0, XCASE }, { "nl", 0, ICRNL, 0, ONLCR, 0, 0, 0, 0 }, { "-nl", ICRNL, INLCR | IGNCR, ONLCR, OCRNL | ONLRET, 0, 0, 0, 0 }, { "litout", 0, 0, OPOST, 0, CS8, CSIZE | PARENB, 0, 0 }, { "-litout", 0, 0, 0, OPOST, CS7 | PARENB, CSIZE, 0, 0 }, { "pass8", 0, ISTRIP, 0, 0, CS8, CSIZE | PARENB, 0, 0 }, { "-pass8", ISTRIP, 0, 0, 0, CS7 | PARENB, CSIZE, 0, 0 }, { "raw", 0, -1, 0, OPOST, CS8, CSIZE | PARENB, 0, ISIG | ICANON | XCASE, }, #ifdef IMAXBEL { "-raw", BRKINT | IGNPAR | ISTRIP | ICRNL | IXON | IMAXBEL, 0, OPOST, 0, CS7 | PARENB, CSIZE, ISIG | ICANON, 0 }, { "sane", BRKINT | IGNPAR | ISTRIP | ICRNL | IXON | IMAXBEL, IGNBRK | PARMRK | INPCK | INLCR | IGNCR | IUCLC | IXOFF, OPOST | ONLCR, OLCUC | OCRNL | ONOCR | ONLRET | OFILL | OFDEL | NLDLY | CRDLY| TABDLY | BSDLY | VTDLY | FFDLY, CS7 | PARENB | CREAD, CSIZE | PARODD | CLOCAL, ISIG | ICANON | ECHO | ECHOK, XCASE | ECHOE | ECHONL | NOFLSH}, #endif /* IMAXBEL */ { "cooked", BRKINT | IGNPAR | ISTRIP | ICRNL | IXON, 0, OPOST, 0, CS7 | PARENB, CSIZE, ISIG | ICANON, 0 }, {0}, }; void Do_stty( int fd, char *Stty_command ) { int i, localmode, linedisc, argcount; char *s, *arg, *parm = 0; OBJ *l = 0; l = NEW_OBJ(0,MEMINFO); l = Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/Stty_command, /*type*/OBJ_T_LIST, /*linesep*/WHITESPACE, /*escape*/0, /*comment*/ 0, /*trim*/1, /*keysep*/0,/*do_append*/0, /*lc*/0, /*flagvalues*/ 0, /*value_urlunesc*/0, MEMINFO ); DEBUG4("Do_stty: using TERMIO, fd %d", fd ); if( ioctl( fd, TCGETA, &tio) < 0) { Errorcode = JABORT; LOGERR_DIE(LOG_INFO) "cannot get tty parameters"); } DEBUG4("Do_stty: before imode 0x%x, omode 0x%x, cmode 0x%x, lmode 0x%x", tio.c_iflag, tio.c_oflag, tio.c_cflag, tio.c_lflag); for( argcount = 0; argcount < LEN_LIST_OBJ(l); ++argcount ){ arg = GET_ENTRY_LIST_OBJ(l,argcount); for( i = 0; tmodes[i].string && strcasecmp( tmodes[i].string, arg); i++); if( tmodes[i].string) { DEBUG4("Do_stty: modes %s, ic 0x%x is 0x%x oc 0x%x os 0x%x cc 0x%x cs 0x%x lc 0x%x ls 0x%x", tmodes[i].string, tmodes[i].ireset, tmodes[i].iset, tmodes[i].oreset, tmodes[i].oset, tmodes[i].creset, tmodes[i].cset, tmodes[i].lreset, tmodes[i].lset); tio.c_iflag &= ~tmodes[i].ireset; tio.c_iflag |= tmodes[i].iset; tio.c_oflag &= ~tmodes[i].oreset; tio.c_oflag |= tmodes[i].oset; tio.c_cflag &= ~tmodes[i].creset; tio.c_cflag |= tmodes[i].cset; tio.c_lflag &= ~tmodes[i].lreset; tio.c_lflag |= tmodes[i].lset; continue; } for( i = 0; bauds[i].string && strcasecmp( bauds[i].string, arg); i++); if( bauds[i].string) { DEBUG4("Do_stty: speed %s", arg); tio.c_cflag &= ~CBAUD; tio.c_cflag |= bauds[i].speed; continue; } LOGMSG(LOG_INFO)"Do_stty: unknown mode: %s", arg); } DEBUG4("Do_stty: before imode 0x%x, omode 0x%x, cmode 0x%x, lmode 0x%x", tio.c_iflag, tio.c_oflag, tio.c_cflag, tio.c_lflag); if( ioctl( fd, TCSETA, &tio) < 0) { Errorcode = JABORT; LOGERR_DIE(LOG_INFO) "cannot set tty parameters"); } Free_line_list(&l); } #endif #if USE_STTY == TERMIOS #ifndef HAVE_TCSETATTR #define tcgetattr(fd,tdat) (ioctl( (fd), TCGETS, (tdat))) #define tcsetattr(fd,flags,tdat) (ioctl( (fd), TCSETS, (tdat))) /* ignore the flags arg. */ #endif static struct bauds { char *string; int baud; int speed; } bauds[] = { { "B0", 0, B0, }, { "0", 0, B0, }, { "B50", 50, B50, }, { "50", 50, B50, }, { "B75", 75, B75, }, { "75", 75, B75, }, { "B110", 110, B110, }, { "110", 110, B110, }, { "B134", 134, B134, }, { "134", 134, B134, }, { "B150", 150, B150, }, { "150", 150, B150, }, { "B300", 300, B300, }, { "300", 300, B300, }, { "B600", 600, B600, }, { "600", 600, B600, }, { "B1200", 1200, B1200, }, { "1200", 1200, B1200, }, { "B1800", 1800, B1800, }, { "1800", 1800, B1800, }, { "B2400", 2400, B2400, }, { "2400", 2400, B2400, }, { "B4800", 4800, B4800, }, { "4800", 4800, B4800, }, { "B9600", 9600, B9600, }, { "9600", 9600, B9600, }, { "B19200", 19200, B19200, }, { "19200", 19200, B19200, }, { "B38400", 38400, B38400, }, { "38400", 38400, B38400, }, {"EXTA", EXTA, EXTA}, {"EXTB", EXTB, EXTB}, { (char *) 0, 0, 0 } }; struct s_term_dat { char *name; uint or_dat; uint and_dat; }; #define FLAGS(X) { #X, X , 0 }, { "-" #X, 0, X } /* c_iflag bits */ static struct s_term_dat c_i_dat[] = { FLAGS(IGNBRK), FLAGS(BRKINT), FLAGS(IGNPAR), FLAGS(PARMRK), FLAGS(INPCK), FLAGS(ISTRIP), FLAGS(INLCR), FLAGS(IGNCR), FLAGS(ICRNL), #ifdef IUCLC FLAGS(IUCLC), {"lcase", IUCLC, 0}, {"-lcase", 0, IUCLC}, #endif FLAGS(IXON), FLAGS(IXANY), FLAGS(IXOFF), #ifdef IMAXBEL FLAGS(IMAXBEL), #else /* work out what they do and simulate with IFLAGONE|IFLAGTWO */ #endif /* jmason addition: */ {"PASS8", 0, ISTRIP}, {"-PASS8", ISTRIP, 0}, {0, 0, 0} }; /* c_oflag bits */ static struct s_term_dat c_o_dat[] = { FLAGS(OPOST), #ifdef OLCUC FLAGS(OLCUC), #endif #ifdef ONLCR FLAGS(ONLCR), {"crmod", ONLCR, 0}, {"-crmod", 0, ONLCR}, #endif #ifdef OCRNL FLAGS(OCRNL), #endif #ifdef ONOCR FLAGS(ONOCR), #endif #ifdef ONLRET FLAGS(ONLRET), #endif #ifdef OFILL FLAGS(OFILL), #endif #ifdef OFDEL FLAGS(OFDEL), #endif #ifdef NLDLY {"NL0", 0, NLDLY}, {"NL1", NL1, NLDLY}, #endif #ifdef CRDLY {"CR0", CR0, CRDLY}, {"CR1", CR1, CRDLY}, {"CR2", CR2, CRDLY}, {"CR3", CR3, CRDLY}, #endif #ifdef TABDLY {"TAB0", TAB0, TABDLY}, {"TAB1", TAB1, TABDLY}, {"TAB2", TAB2, TABDLY}, {"TAB3", TAB3, TABDLY}, #endif #ifdef BSDLY {"BS0", BS0, BSDLY}, {"BS1", BS1, BSDLY}, #endif #ifdef VTDLY {"VT0", VT0, VTDLY}, {"VT1", VT1, VTDLY}, #endif #ifdef FFDLY {"FF0", FF0, FFDLY}, {"FF1", FF1, FFDLY}, #endif /* jmason addition: */ #ifdef TABDLY {"TABS", TAB3, TABDLY}, #endif {0, 0, 0} }; /* c_cflag bit meaning */ static struct s_term_dat c_c_dat[] = { {"CS5", CS5, CSIZE}, {"CS6", CS6, CSIZE}, {"CS7", CS7, CSIZE}, {"CS8", CS8, CSIZE}, {"CSTOPB", CSTOPB, 0}, {"-CSTOPB", 0, CSTOPB}, {"CREAD", CREAD, 0}, {"-CREAD", 0, CREAD}, {"PARENB", PARENB, 0}, {"-PARENB", 0, PARENB}, {"PARODD", PARODD, 0}, {"-PARODD", 0, PARODD}, {"HUPCL", HUPCL, 0}, {"-HUPCL", 0, HUPCL}, {"CLOCAL", CLOCAL, 0}, {"-CLOCAL", 0, CLOCAL}, #ifdef CRTSCTS /* work out what they do and simulate with IFLAGONE|IFLAGTWO */ {"CRTSCTS", CRTSCTS, 0}, {"-CRTSCTS", 0, CRTSCTS}, #endif /* jmason additions, from SunOS stty(1v) combination modes: */ /* fixed, papowell Sun Aug 20 06:54:56 PDT 1995 */ {"even", PARENB | CS7, PARODD | CSIZE}, {"-even", CS8, PARENB | CSIZE}, {"EVENP", PARENB | CS7, PARODD | CSIZE}, {"-EVENP", CS8, PARENB | CSIZE}, {"PARITY", PARENB | CS7, PARODD | CSIZE}, {"-PARITY", CS8, PARENB | CSIZE}, {"odd", PARODD| PARENB | CS7, CSIZE}, {"-odd", CS8, PARENB | PARODD | CSIZE}, {"ODDP", PARODD | PARENB | CS7, CSIZE}, {"-ODDP", CS8, PARENB | PARODD | CSIZE}, {"PASS8", CS8, PARENB | CSIZE}, {"-PASS8", PARENB | CS7, CSIZE}, {"LITOUT", CS8, ISTRIP | PARENB | OPOST | CSIZE}, {0, 0, 0} }; /* c_lflag bits */ static struct s_term_dat c_l_dat[] = { {"ISIG", ISIG, 0}, {"-ISIG", 0, ISIG}, {"cooked", ICANON, 0}, {"-raw", ICANON, 0}, {"cbreak", ICANON, 0}, {"ICANON", ICANON, 0}, {"-ICANON", 0, ICANON}, {"raw", 0, ICANON}, {"-cooked", 0, ICANON}, #ifdef XCASE {"XCASE", XCASE, 0}, {"-XCASE", 0, XCASE}, #endif {"ECHO", ECHO, 0}, {"-ECHO", 0, ECHO}, {"ECHOE", ECHOE, 0}, {"-ECHOE", 0, ECHOE}, {"ECHOK", ECHOK, 0}, {"-ECHOK", 0, ECHOK}, {"ECHONL", ECHONL, 0}, {"-ECHONL", 0, ECHONL}, {"NOFLSH", NOFLSH, 0}, {"-NOFLSH", 0, NOFLSH}, {"TOSTOP", TOSTOP, 0}, {"-TOSTOP", 0, TOSTOP}, {"IEXTEN", IEXTEN, 0}, {"-IEXTEN", 0, IEXTEN}, #ifdef ECHOCTL {"ECHOCTL", ECHOCTL, 0}, {"-ECHOCTL", 0, ECHOCTL}, {"CTLECHO", ECHOCTL, 0}, {"-CTLECHO", 0, ECHOCTL}, #else /* work out what they do and simulate with IFLAGONE|IFLAGTWO */ #endif #ifdef ECHOPRT {"ECHOPRT", ECHOPRT, 0}, {"-ECHOPRT", 0, ECHOPRT}, {"PRTERASE", ECHOPRT, 0}, {"-PRTERASE", 0, ECHOPRT}, /* ditto etc. -- you get the story */ #endif #ifdef ECHOKE {"ECHOKE", ECHOKE, 0}, {"-ECHOKE", 0, ECHOKE}, {"CRTKILL", ECHOKE, 0}, {"-CRTKILL", 0, ECHOKE}, #endif #ifdef FLUSHO {"FLUSHO", FLUSHO, 0}, {"-FLUSHO", 0, FLUSHO}, #endif #ifdef PENDIN {"PENDIN", PENDIN, 0}, {"-PENDIN", 0, PENDIN}, #endif { 0 ,0 ,0 } }; struct termios t_dat; static struct special { char *name; char *cp; } special[] = { { "stop", (char *)&(t_dat.c_cc[VSTOP]) }, { "start", (char *)&(t_dat.c_cc[VSTART]) }, { 0, 0 } }; void Do_stty( int fd, char *Stty_command ) { int i, argcount; char *arg, *parm = 0; OBJ *l = 0; l = NEW_OBJ(0,MEMINFO); l = Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/Stty_command, /*type*/OBJ_T_LIST, /*linesep*/WHITESPACE, /*escape*/0, /*comment*/ 0, /*trim*/1, /*keysep*/0,/*do_append*/0, /*lc*/0, /*flagvalues*/ 0, /*value_urlunesc*/0, MEMINFO ); DEBUG4("Do_stty: using TERMIOS, fd %d", fd ); if( tcgetattr( fd, &t_dat) < 0 ){ Errorcode = JABORT; LOGERR_DIE(LOG_INFO)"cannot get tty parameters"); } DEBUG4("Do_stty: before iflag 0x%x, oflag 0x%x, cflag 0x%x lflag 0x%x", t_dat.c_iflag, t_dat.c_oflag, t_dat.c_cflag, t_dat.c_lflag); for( argcount = 0; argcount < LEN_LIST_OBJ(l); ++argcount ){ arg = GET_ENTRY_LIST_OBJ(l,argcount); for( i = 0; bauds[i].string && strcasecmp( bauds[i].string, arg); i++); if( bauds[i].string ){ #ifdef HAVE_CFSETISPEED DEBUG4("Do_stty: using cfsetispeed/cfsetospeed, speed %s, spd %d", arg, bauds[i].speed ); /* POSIX baudrate manipulation */ cfsetispeed( &t_dat, bauds[i].speed); cfsetospeed( &t_dat, bauds[i].speed); #else DEBUG4("Do_stty: setting tdat.c_cflag"); t_dat.c_cflag &= ~CBAUD; t_dat.c_cflag |= bauds[i].speed; #endif continue; } for( i = 0; c_i_dat[i].name && strcasecmp( c_i_dat[i].name, arg); i++); if( c_i_dat[i].name ){ DEBUG4("Do_stty: c_iflag %s, ms 0x%x mc 0x%x", c_i_dat[i].name, c_i_dat[i].or_dat, c_i_dat[i].and_dat); t_dat.c_iflag &= ~(c_i_dat[i].and_dat); t_dat.c_iflag |= c_i_dat[i].or_dat; continue; } for( i = 0; c_o_dat[i].name && strcasecmp( c_o_dat[i].name, arg); i++); if( c_o_dat[i].name ){ DEBUG4("Do_stty: c_oflag %s, ms 0x%x mc 0x%x", c_o_dat[i].name, c_o_dat[i].or_dat, c_o_dat[i].and_dat); t_dat.c_oflag &= ~(c_o_dat[i].and_dat); t_dat.c_oflag |= c_o_dat[i].or_dat; continue; } for( i = 0; c_c_dat[i].name && strcasecmp( c_c_dat[i].name, arg); i++); if( c_c_dat[i].name ){ DEBUG4("Do_stty: c_cflag %s, ms 0x%x mc 0x%x", c_c_dat[i].name, c_c_dat[i].or_dat, c_c_dat[i].and_dat); t_dat.c_cflag &= ~(c_c_dat[i].and_dat); t_dat.c_cflag |= c_c_dat[i].or_dat; continue; } for( i = 0; c_l_dat[i].name && strcasecmp( c_l_dat[i].name, arg); i++); if( c_l_dat[i].name ){ DEBUG4("Do_stty: c_lflag %s, ms 0x%x mc 0x%x", c_l_dat[i].name, c_l_dat[i].or_dat, c_l_dat[i].and_dat); t_dat.c_lflag &= ~(c_l_dat[i].and_dat); t_dat.c_lflag |= c_l_dat[i].or_dat; continue; } for( i = 0; special[i].name && strcasecmp( special[i].name, arg); i++); if( special[i].name ){ if( ++argcount < LEN_LIST_OBJ(l) ){ parm = GET_ENTRY_LIST_OBJ(l,argcount); } else { Errorcode = JABORT; FATAL(LOG_INFO) "Do_stty: missing parameter for %s\n", arg); } if( parm[0] == '^') { if( parm[1] == '?' ){ *special[i].cp = 0177; } else { *special[i].cp = 037 & parm[1]; } } else { *special[i].cp = parm[0]; } DEBUG4("Do_stty: special %s %s", arg, parm); continue; } LOGMSG(LOG_INFO)"Do_stty: unknown mode: %s", arg); } if( (t_dat.c_lflag & ICANON) == 0 ){ /* only do this if ICANON is off -- Martin Forssen */ DEBUG4("setting port to read/write with unbuffered reads( MIN=1, TIME=0)"); t_dat.c_cc[VMIN] = 1; t_dat.c_cc[VTIME] = 0; } DEBUG4("Do_stty: after iflag 0x%x, oflag 0x%x, cflag 0x%x lflag 0x%x", t_dat.c_iflag, t_dat.c_oflag, t_dat.c_cflag, t_dat.c_lflag); if( tcsetattr( fd, TCSANOW, &t_dat) < 0 ){ Errorcode = JABORT; LOGERR_DIE(LOG_INFO) "cannot set tty parameters"); } } #endif ifhp-3.5.20/src/vars.c0100644000175100017510000001371610130541267014677 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER *****/ static char *const _id = "$Id: vars.c,v 1.31 2003/11/17 16:55:37 papowell Exp papowell $"; #define EXTERN #define DEF #define DEFINE(X) X #include "ifhp.h" /**** ENDINCLUDE ****/ struct keyvalue Valuelist[] = { { "Accounting_info", "accounting_info", &Accounting_info, STRV ,0 }, { "Accounting_script", "accounting", &Accounting_script, STRV ,0 }, { "Appsocket", "appsocket", (void *)&Appsocket, FLGV ,0 }, { "Autodetect", "autodetect", (void *)&Autodetect, FLGV,0 }, { "Close_appsocket", "close_appsocket", (void *)&Close_appsocket, FLGV,0 }, { "Crlf", "crlf", (void *)&Crlf, FLGV,0 }, { "Dev_retries", "dev_retries", (void *)&Dev_retries, INTV,0 }, { "Dev_sleep", "dev_sleep", (void *)&Dev_sleep, INTV,0 }, { "Device", "dev", &Device, STRV,0 }, { "End_status", "end_status", &End_status, STRV,0 }, { "Foomatic", "foomatic", (void *)&Foomatic, FLGV,0 }, { "Foomatic_rip", "foomatic_rip", &Foomatic_rip, STRV,0 }, { "Force_conversion", "forceconversion", (void *)&Force_conversion, FLGV,0 }, { "Force_processing", "forceprocessing", (void *)&Force_processing, FLGV,0 }, { "Force_status", "forcestatus", (void *)&Force_status, FLGV,0 }, { "Full_time", "fulltime", (void *)&Full_time, FLGV,0 }, { "Hpgl2", "hpgl2", (void *)&Hpgl2, FLGV,0 }, { "Ignore_eof", "ignore_eof", (void *)&Ignore_eof, FLGV,0 }, { "Initial_timeout", "initial_timeout", (void *)&Initial_timeout, INTV,0 }, { "Logall", "logall", (void *)&Logall, FLGV,0 }, { "Max_status_size", "statusfile_max", (void *)&Max_status_size, INTV,0 }, { "Min_status_size", "statusfile_min", (void *)&Min_status_size, INTV,0 }, { "No_udp_monitor", "no_udp_monitor", (void *)&No_udp_monitor, FLGV,0 }, { "Null_pad_count", "nullpad", (void *)&Null_pad_count, INTV,0 }, { "Pagecount", "pagecount", &Pagecount, STRV,0 }, { "Pagecount_end", "pagecount_end", (void *)&Pagecount_end, FLGV,0 }, { "Pagecount_interval", "pagecount_interval", (void *)&Pagecount_interval, INTV,0 }, { "Pagecount_poll", "pagecount_poll", (void *)&Pagecount_poll, INTV,0 }, { "Pagecount_poll_send", "pagecount_poll_end", (void *)&Pagecount_poll_end, INTV,0 }, { "Pagecount_poll_start", "pagecount_poll_start", (void *)&Pagecount_poll_start, INTV,0 }, { "Pagecount_start", "pagecount_start", (void *)&Pagecount_start, FLGV,0 }, { "Pagecount_timeout", "pagecount_timeout", (void *)&Pagecount_timeout, INTV,0 }, { "Pcl", "pcl", (void *)&Pcl, FLGV,0 }, { "Pcl_eoj_at_end", "pcl_eoj_at_end", (void *)&Pcl_eoj_at_end, FLGV,0 }, { "Pcl_eoj_at_start", "pcl_eoj_at_start", (void *)&Pcl_eoj_at_start, FLGV,0 }, { "Pjl", "pjl", (void *)&Pjl, FLGV,0 }, { "Pjl_console", "console", (void *)&Pjl_console, FLGV,0 }, { "Pjl_console", "pjl_console", (void *)&Pjl_console, FLGV,0 }, { "Pjl_display_size", "display_size", (void *)&Pjl_display_size, INTV,0 }, { "Pjl_display_size", "pjl_display_size", (void *)&Pjl_display_size, INTV,0 }, { "Pjl_done_msg", "pjl_done_msg", &Pjl_done_msg, STRV ,0 }, { "Pjl_enter", "pjl_enter", (void *)&Pjl_enter, FLGV,0 }, { "Pjl_ready_msg", "pjl_ready_msg", &Pjl_ready_msg, STRV ,0 }, { "Pjl_waitend_byjobname", "pjl_waitend_byjobname", (void *)&Pjl_waitend_byjobname, FLGV, 0}, { "Ppd_file", "ppd", &Ppd_file, STRV, 0}, { "Ps", "ps", (void *)&Ps, FLGV,0 }, { "Ps_ctrl_t", "ps_ctrl_t", (void *)&Ps_ctrl_t, FLGV,0 }, { "Ps_eoj", "ps_eoj", (void *)&Ps_eoj, FLGV,0 }, { "Ps_eoj_at_end", "ps_eoj_at_start", (void *)&Ps_eoj_at_end, FLGV,0 }, { "Ps_eoj_at_start", "ps_eoj_at_start", (void *)&Ps_eoj_at_start, FLGV,0 }, { "Ps_pagecount_code", "ps_pagecount_code", &Ps_pagecount_code, STRV,0 }, { "Ps_status_code", "ps_status_code", &Ps_status_code, STRV,0 }, { "Psonly", "psonly", (void *)&Psonly, FLGV,0 }, { "Qms", "qms", (void *)&Qms, FLGV ,0 }, { "Remove_ctrl", "remove_ctrl", &Remove_ctrl, STRV ,0 }, { "Remove_pjl_at_start", "remove_pjl_at_start", (void *)&Remove_pjl_at_start, FLGV ,0 }, { "Send_job_rw_timeout", "send_job_rw_timeout", (void *)&Send_job_rw_timeout, INTV,0 }, { "Snmp_dev", "snmp_dev", &Snmp_dev, STRV,0 }, { "Snmp_end_status", "snmp_end_status", &Snmp_end_status, STRV,0 }, { "Snmp_monitor", "snmp_monitor", (void *)&Snmp_monitor, FLGV,0 }, { "Snmp_program", "snmp_program", &Snmp_program, STRV,0 }, { "Snmp_status_fields", "snmp_status_fields", &Snmp_status_fields, STRV,0 }, { "Snmp_sync_status", "snmp_sync_status", &Snmp_sync_status, STRV,0 }, { "Snmp_wait_after_close", "snmp_wait_after_close", (void *)&Snmp_wait_after_close, INTV,0 }, { "Status", "status", (void *)&Status, FLGV,0 }, { "Status_ignore", "status_ignore", &Status_ignore, STRV,0 }, { "Status_translate", "status_translate", &Status_translate, STRV,0 }, { "Stty_args", "stty", &Stty_args, STRV,0 }, { "Sync", "sync", &Sync, STRV,0 }, { "Sync_interval", "sync_interval", (void *)&Sync_interval, INTV,0 }, { "Snmp_sync_status", "snmp_sync_status", &Snmp_sync_status, STRV,0 }, { "Sync_timeout", "sync_timeout", (void *)&Sync_timeout, INTV,0 }, { "Tbcp", "tbcp", (void *)&Tbcp, FLGV,0 }, { "Text", "text", (void *)&Text, FLGV,0 }, { "Trace_on_stderr", "trace", (void *)&Trace_on_stderr, FLGV,0 }, { "Wait_for_banner_page", "wait_for_banner", (void *)&Wait_for_banner, FLGV,0 }, { "Waitend", "waitend", &Waitend, STRV,0 }, { "Waitend_ctrl_t_interval", "waitend_ctrl_t_interval", (void *)&Waitend_ctrl_t_interval, INTV,0 }, { "Waitend_interval", "waitend_interval", (void *)&Waitend_interval, INTV,0 }, { "Waitend_timeout", "waitend_timeout", (void *)&Waitend_timeout, INTV,0 }, { 0, 0, 0, 0, 0 } }; ifhp-3.5.20/src/stty.h0100644000175100017510000000071610130541267014730 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER ***** $Id: stty.h,v 1.1 1999/12/17 02:04:59 papowell Exp papowell $ **** HEADER *****/ #if !defined(_STTY_H_) #define _STTY_H_ 1 /* PROTOTYPES */ void Do_stty( int fd, char *Stty_command ); #endif ifhp-3.5.20/src/mkinstalldirs0100755000175100017510000000121106700536634016363 0ustar papowellpapowell#!/bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Last modified: 1994-03-25 # Public domain errstatus=0 for file in ${1+"$@"} ; do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d in ${1+"$@"} ; do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" 1>&2 mkdir "$pathcomp" || errstatus=$? fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here ifhp-3.5.20/src/Makefile.in0100644000175100017510000000675710130541267015634 0ustar papowellpapowell#************************************************************************** #* LPRng IFHP Filter #* Copyright 1994-1999 Patrick Powell, San Diego, CA #* #* $Id: Makefile.in,v 1.42 2004/09/24 20:18:14 papowell Exp papowell $ # SRC=@srcdir@ SHELL=@SHELL@ @SET_MAKE@ prefix=@prefix@ exec_prefix=@exec_prefix@ sysconfdir=@sysconfdir@ libexecdir=@libexecdir@ bindir=@bindir@ libdir=@libdir@ top_builddir=.. INSTALLCMD=@INSTALL@ FILTER_DIR=@FILTER_DIR@ IFHP_CONF=@IFHP_CONF@ CC = @CC@ LDCC = @LDCC@ LDFLAGS= @LDFLAGS@ LOCALEDIR= @LOCALEDIR@ PERL= @PERL@ # add additional definitions here # libraries you will need (found by config), add more to end LIBS= @LIBS@ @LTLIBINTL@ ######### - no changes by configure after here ############# #============================================================================= # List the directories you want to generate: # DIRS for all, clean, etc. # ALLDIRS for other such as documentation #============================================================================= # TEST_FLAGS= -DFORMAT_TEST -Wall -Wformat -Werror CFLAGS:= @CPPFLAGS@ @CFLAGS@ @DEFS@ \ -I. -I.. -I${SRC} $(TEST_FLAGS) \ -DIFHP_CONF=\"$(IFHP_CONF)\" -DLOCALEDIR=\"$(LOCALEDIR)\" LINK = $(LDCC) $(LDFLAGS) -o $@ STRIP=@STRIP_OPTION@ VPATH=.:..:${SRC} # commands INSTALL= wrapper snmp_printer_status extract_pjl UTILITIES=snmp_printer_status extract_pjl DATAFILES= snmp_printer_status.conf COMMANDS= ifhp textps EXTRA=monitor all: ${COMMANDS} ${INSTALL} ${EXTRA} snmp_printer_status: ${SRC}/snmp_printer_status.template Makefile sed -e 's,.PERL@,@PERL@,g' -e 's,.FILTER_DIR@,${FILTER_DIR},g' \ ${SRC}/snmp_printer_status.template \ >snmp_printer_status chmod 755 snmp_printer_status .PHONY: all clean install # # Object - Source dependencies # ######################################################################## OBJS= \ ifhp.o accounting.o checkcode.o debug.o errormsg.o \ globmatch.o open_device.o \ perlobj.o plp_snprintf.o safemalloc.o \ safestrutil.o stty.o vars.o ifhp: $(OBJS) ${LINK} $(OBJS) ${LIBS} $(OBJS): Makefile monitor.o $(OBJS): debug.h errormsg.h ifhp.h portable.h \ patchlevel.h config.h perlobj.h monitor: monitor.o plp_snprintf.o safemalloc.o safestrutil.o errormsg.o ${LINK} monitor.o plp_snprintf.o safemalloc.o safestrutil.o errormsg.o ${LIBS} textps: textps.o plp_snprintf.o ${LINK} textps.o plp_snprintf.o ${LIBS} # # Installation of commands # install: all if [ ! -d ${DESTDIR}$(FILTER_DIR) ] ; then ${SHELL} ${SRC}/mkinstalldirs ${DESTDIR}$(FILTER_DIR); fi; if [ ! -d ${DESTDIR}$(bindir) ] ; then ${SHELL} ${SRC}/mkinstalldirs ${DESTDIR}$(bindir); fi; if [ -n "${STRIP}" ] ; then strip $(COMMANDS); fi; if [ -n "${VERBOSE_INSTALL}" ] ; then set -x; fi; \ set -e; \ for i in $(COMMANDS) $(INSTALL) $(UTILITIES) ; do \ $(INSTALLCMD) -m 755 $$i ${DESTDIR}$(FILTER_DIR)/`basename $$i`; \ done ; \ for i in $(UTILITIES) ; do \ $(INSTALLCMD) -m 755 $$i ${DESTDIR}$(bindir)/`basename $$i`; \ done ; \ for i in $(DATAFILES) ; do \ $(INSTALLCMD) -m 644 ${SRC}/$$i ${DESTDIR}$(FILTER_DIR)/`basename $$i`; \ done ; # # Miscellaneous # clean: -rm -f $(COMMANDS) ${EXTRA} *.o *.core core ? tags ofhp CI= #CO=-kv CO=-l ci: if test ! -d RCS ; then mkdir RCS; fi; checkin() { \ rcs -l $$1; \ ci $(CI) -mUpdate -t-Initial $$1; \ co $(CO) $$1; \ }; \ for i in *.[ch] Makefile* *.sh_init *.ps *.conf; \ do \ if [ -f $$i ]; then checkin $$i; fi; \ done; distclean: clean -rm -f Makefile *.bak *.orig *.rej wrapper tags TAGS: ctags *.c *.h ifhp-3.5.20/src/textps.c0100644000175100017510000005744310130541267015260 0ustar papowellpapowell/*************************************************************************** * LPRng - An Extended Print Spooler System * * Copyright 1988-1995 Patrick Powell, San Diego State University * papowell@sdsu.edu * See LICENSE for conditions of use. * *************************************************************************** * MODULE: textps.c * PURPOSE: convert text to postscript file **************************************************************************/ static const char *const _id = "textps.c,v 1.1 1997/01/05 04:58:19 papowell Exp"; /*************************************************************************** From the Original LPRPS Distribution Mon Aug 21 07:15:20 PDT 1995 Patrick Powell This is lprps version 2.6plp. lprps is a collection of programs for using lpr with a PostScript printer connected by a bidirectional serial channel. It has been tested mainly with Suns running various versions of SunOS (4.0.3, 4.1 and 4.1.1). It contains the following programs: textps simple text to PostScript filter * Text to PostScript filter supports ISO Latin-1. There is no copyright on lprps. James Clark jjc@jclark.com Id: README,v 1.14 1993/02/22 12:43:37 jjc Exp The orignal code has been hacked, slashed, bombproofed, reformatted, debugged, and just generally abused beyond all reasonable bounds. Typical work. Patrick Powell Mon Aug 21 08:48:10 PDT 1995 ***************************************************************************/ /* textps.c */ #include "portable.h" #include "plp_snprintf.h" #define cval(x) (int)(*(unsigned const char *)(x)) /* VARARGS2 */ #ifdef HAVE_STDARGS void safefprintf (int fd, char *format,...); #else void safefprintf (); #endif /* * filter return codes and job status codes * - exit status of the filter process * If a printer filter fails, then we assume 1 status and * will record information about failure */ #ifndef TAB_WIDTH # define TAB_WIDTH 8 #endif /* not TAB_WIDTH */ #ifndef LINES_PER_PAGE # define LINES_PER_PAGE 66 #endif /* not LINES_PER_PAGE */ #ifndef PAGE_WIDTH # ifdef A4 # define PAGE_WIDTH (8.25*72) /* not exact, but close */ # else /* this funny format these US folks want to make us use... */ # define PAGE_WIDTH (8.5*72) # endif #endif /* not PAGE_WIDTH */ #ifndef CPI # define CPI (12.0) #endif /* not CPI */ /* page length in points, 72/inch */ #ifndef PAGE_LENGTH # ifdef A4 # define PAGE_LENGTH 842.0 # else /* 11 inches */ # define PAGE_LENGTH (11.0*72) # endif #endif /* PAGE_LENGTH */ #ifndef BASELINE_OFFSET # define BASELINE_OFFSET 36.0 #endif /* not BASELINE_OFFSET */ #ifndef BOTTOM_OFFSET # define BOTTOM_OFFSET 36.0 #endif /* not BOTTOM_OFFSET */ #ifndef VERTICAL_SPACING # define VERTICAL_SPACING 12.0 #endif /* not VERTICAL_SPACING */ #ifndef LEFT_MARGIN # define LEFT_MARGIN 28.0 #endif /* not LEFT_MARGIN */ #ifndef RIGHT_MARGIN # define RIGHT_MARGIN 28.0 #endif /* not RIGHT_MARGIN */ #ifndef FONT # define FONT "Courier" #endif /* not FONT */ #ifndef BOLD_FONT # define BOLD_FONT "Courier-Bold" #endif /* not BOLD_FONT */ extern char *optarg; extern int optind, getopt(); double header_height = 0.50*72; /* you may want to have more margins */ #ifndef TOPDROP #define TOPDROP .125 #endif double topdrop = TOPDROP*72; double header_width = 1.25*72; double bar_height = 0.25*72; typedef struct bar { double llx, lly; double dx, dy; double pts; double gray; char *font; char *str; } bar; bar Lhdr, Rhdr, Center; typedef struct output_char { int c; int is_bold; } output_char; output_char *output_char_list; int max_line_len = 256; int max_h_pos; int page_started; double page_width = PAGE_WIDTH; /* in points */ double column_width; /* in points */ double font_size; int line_width; /* max chars in line */ int tab_width = TAB_WIDTH; double cpi = CPI; /* characters per inch */ int lines_per_page = LINES_PER_PAGE; double page_length = PAGE_LENGTH; /* in points */ /* distance in points from top of page to first baseline */ double baseline_offset = BASELINE_OFFSET; double bottom_offset = BOTTOM_OFFSET; double vertical_spacing = VERTICAL_SPACING; /* in points */ double left_margin = LEFT_MARGIN; /* in points */ double right_margin = RIGHT_MARGIN; /* in points */ char *font = FONT; char *bold_font = BOLD_FONT; char *times_font = "Times-Roman"; char *times_bold = "Times-Bold"; double times_size = 12.0; double times_bold_size = 14.0; int rotated; /* rotated */ int double_cols; /* two columns */ int line_count; /* number on line */ int gaudy; /* do header */ char *datestr; char *filename; int column; int vpos; int hpos; double char_width; void PUTSTR( char *s ); int pageno = 0; int filepage = 0; int debug; int nscript; char *outputfile; FILE *outfp; char *printer; enum font { NONE, ROMAN, BOLD } current_font; char outbuffer[256]; void do_file(); void prologue(); void trailer(); char *prog; char *use_m[] = { "usage: %s [-T=opts[,opts]]* [files ...]\n", "r - rotated or landscape mode\n", "d - double columns\n", "c=n - set cpi (characters per inch)\n", "l=n - set lines per page\n", "m=n - set left margin (points)\n", "t=n - space from top of page to first line (points)\n", "v=n - vertical spacing (points)\n", "files - files to print\n", 0 }; char *use_n[] = { "usage: %s [-2Gr]* [-Ln] [-pout] [-Pprinter] [files ...]\n", "r - rotated or landscape mode\n", "2 - double columns\n", "G - gaudy output with headers" "Ln - set lines per page\n", "pout - output to file\n", "Pprinter - lpr to printer\n", 0 }; void usage() { int i; char **m = use_m; if( nscript ) m = use_n; for( i = 0; m[i]; ++i ){ FPRINTF(STDERR, m[i], prog ); } exit(1); } int main(int argc, char **argv) { int bad_files = 0; int opt; char *arg, *s, *end = 0; double t; int c; prog = argv[0]; /* make sure that the NSLPATH cannot be use to compromisze root * run executables */ /* paranoia, or even tripletanoia */ if( (getuid() == 0 || geteuid() == 0) && getenv("NLSPATH") ){ #if defined(HAVE_UNSETENV) unsetenv("NLSPATH"); #elif defined(HAVE_SETENV) setenv("NLSPATH","",1); #elif defined(HAVE_PUTENV) putenv("NLSPATH="); #else #error need to have one of unsetenv(), setenv(), or putenv() #endif } if( (s = strrchr( prog, '/' )) ){ ++s; } else { s = prog; } if( !strcmp(s, "nscript" ) ){ nscript = 1; } output_char_list = malloc( sizeof(output_char_list[0])*max_line_len); if( !nscript ) for( optind = 1; optind < argc; ++optind ){ arg = argv[optind]; if( arg[0] != '-' || (opt = arg[1]) == '-' ) break; optarg = &arg[2]; switch (opt) { case 'D': debug = atoi(optarg); break; case 'T': for( s = optarg; s ; s = end ){ if( debug ) FPRINTF(STDERR, "arg '%s'\n", s ); while( isspace( cval(s) ) ) ++s; if( (end = strchr( s, ',')) ){ *end++ = 0; } if( debug ) FPRINTF(STDERR, "arg '%s'\n", s ); optarg = s+2; switch( s[0] ){ case 'g': gaudy = 1; break; case 'r': rotated = 1; break; case 'd': double_cols = 1; break; case 'c': if (sscanf(optarg, "%lf", &cpi) != 1) usage(); break; case 'l': if (sscanf(optarg, "%d", &lines_per_page) != 1) usage(); break; case 'm': if (sscanf(optarg, "%lf", &left_margin) != 1) usage(); right_margin = left_margin; break; case 't': if (sscanf(optarg, "%lf", &baseline_offset) != 1) usage(); break; case 'v': if (sscanf(optarg, "%lf", &vertical_spacing) != 1) usage(); break; default: usage(); break; } } break; } } else { while( (c = getopt( argc, argv, "12GrL:p:P:t:" )) != EOF ){ switch( c ){ case 'G': gaudy = 1; break; case 'r': rotated = 1; break; case '2': double_cols = 1; break; case 'L': lines_per_page = atoi( optarg ); break; case 'p': outputfile = optarg; break; case 'P': printer = optarg; break; case 't': tab_width = atoi(optarg); if( tab_width <= 0 ) tab_width = TAB_WIDTH; break; default: usage(); } } } if( outputfile ){ outfp = fopen( outputfile, "w" ); if( outfp == NULL ){ c = errno; SNPRINTF(outbuffer,sizeof(outbuffer)) "cannot open '%s'", outputfile ); errno = c; perror( outbuffer ); exit( 1 ); } if( fileno(outfp) != 1 ){ dup2( fileno(outfp), 1 ); fclose( outfp ); } } if( nscript && outputfile == 0 ){ char cmd[128]; if( printer ){ SNPRINTF(cmd, sizeof(cmd)) "lpr -P%s", printer ); } else { SNPRINTF(cmd, sizeof(cmd)) "lpr" ); } outfp = popen( cmd, "w" ); if( outfp == NULL ){ c = errno; #if defined(HAVE_STRERROR) FPRINTF(STDERR, "popen '%s' failed - %s", cmd, strerror(errno) ); #else FPRINTF(STDERR, "popen '%s' failed - errno=%d", cmd, errno ); #endif /* HAVE_STRERROR */ exit( 1 ); } if( fileno(outfp) != 1 ){ dup2( fileno(outfp), 1 ); } } if( rotated ){ t = page_width; page_width = page_length; page_length = t; } column_width = page_width/(1+double_cols); if( double_cols ){ /* courier 10 has 12 CPI, 12 point spacing */ /* courier 7 has cpi */ left_margin = left_margin*0.5; right_margin = right_margin*0.5; font_size = 7; char_width = .6*font_size; /* from 10 points, proportional */ cpi = 72/char_width; vertical_spacing = font_size+1; bottom_offset = .25*72; } else { /* courier 10 has 12 CPI, 12 point line spacing */ char_width = 72.0/cpi; font_size = char_width/.6; vertical_spacing = font_size*1.2; } topdrop = header_height + topdrop; if( gaudy ){ baseline_offset = topdrop + 2*vertical_spacing; } line_width = (column_width-left_margin-right_margin)/char_width; Lhdr.str = "date"; Rhdr.str = "page"; Center.str = "title"; Lhdr.gray = Rhdr.gray = 0.80; Center.gray = 0.95; Lhdr.pts = 12.0; Lhdr.font = "TR"; Rhdr.pts = 14.0; Rhdr.font = "TB"; Center.font = "TR"; Center.pts = 12; Rhdr.dx = Lhdr.dx = header_width; Rhdr.dy = Lhdr.dy = header_height; Center.dy = bar_height; Lhdr.lly = Rhdr.lly = Center.lly = page_length - topdrop; Lhdr.llx = left_margin; Center.llx = Lhdr.llx + Lhdr.dx; Rhdr.llx = page_width - left_margin - right_margin - Rhdr.dx; Center.dx = Rhdr.llx - Center.llx; line_count = (int)((column_width-left_margin)/char_width)-1; t = (int)(page_length - baseline_offset-bottom_offset )/vertical_spacing; if( t < lines_per_page ) lines_per_page = t; prologue(); if (optind >= argc){ filename = "STDIN"; do_file(); } else { int i; for (i = optind; i < argc; i++) if (strcmp(argv[i], "-") != 0 && freopen((filename = argv[i]), "r", stdin) == NULL) { perror(argv[i]); bad_files++; } else { do_file(); } } trailer(); exit(0); } void add_char( int c ) { output_char *tem; if( hpos >= max_line_len ){ max_line_len = hpos + 100; output_char_list = realloc( output_char_list, sizeof(output_char_list[0])*max_line_len ); if( output_char_list == 0 ){ perror("realloc failed"); exit( 1 ); } } while( max_h_pos <= hpos ){ tem = &output_char_list[max_h_pos]; memset( tem, 0, sizeof(tem[0])); tem->c = ' '; ++max_h_pos; } tem = &output_char_list[hpos]; if( tem->c == c && c != ' ' ) tem->is_bold = BOLD; tem->c = c; ++hpos; } void pschar( int c) { int i = 0; c = c & 0377; if (!isascii(c) || iscntrl(c)){ SNPRINTF(outbuffer,sizeof(outbuffer)) "\\%03o", c ); } else if (c == '(' || c == ')' || c == '\\') { outbuffer[i++] = '\\'; outbuffer[i++] = c; outbuffer[i++] = 0; } else { outbuffer[i++] = c; outbuffer[i++] = 0; } PUTSTR( outbuffer ); } /* print an integer approximation to floating number */ void psnum(double f) { char *p; SNPRINTF(outbuffer,sizeof(outbuffer)) "%f", f); if( (p = strchr( outbuffer, '.' )) ) *p = 0; if( strlen(outbuffer) == 0 ) strcpy(outbuffer, "0" ); PUTSTR( outbuffer ); } /* put out the line */ void end_line( int start_pos, int vpos ) { PUTSTR(")"); psnum(column_width*column + left_margin + start_pos*char_width); PUTSTR(" "); psnum(page_length - baseline_offset - vpos*vertical_spacing); PUTSTR(" L\n"); /* FPRINTF(STDOUT, "%% page_length %d, baseline_offset %d, vpos %d, vspace %d\n", (int)page_length, (int)baseline_offset, (int)vpos, (int)vertical_spacing ); */ } void page_start() { SNPRINTF(outbuffer,sizeof(outbuffer)) "%%%%Page: ? %d\n%%%%BeginPageSetup\nPS\n%%%%EndPageSetup\n", ++pageno); ++filepage; PUTSTR( outbuffer ); if( rotated ){ SNPRINTF(outbuffer,sizeof(outbuffer)) "%d 0 translate 90 rotate\n", (int)page_length ); PUTSTR( outbuffer ); } if( gaudy ){ if( datestr == 0 ){ static char timestr[64]; time_t t = time((void*)0); struct tm *ltime; ltime = localtime(&t); SNPRINTF(timestr,sizeof(timestr)) "(%02d/%02d/%02d) (%02d:%02d:%02d)", ltime->tm_year, ltime->tm_mon+1, ltime->tm_mday, ltime->tm_hour, ltime->tm_min, ltime->tm_sec ); datestr = timestr; } SNPRINTF(outbuffer,sizeof(outbuffer)) "/page [(%d)] def\n", filepage); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "/date [%s] def\n", datestr ); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "/title [(%s)] def\n", filename ); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "HDR\n" ); PUTSTR( outbuffer ); } current_font = NONE; page_started = 1; column = 0; } void page_end( int endjob ) { if( !endjob && column < double_cols ){ ++column; } else { if( page_started ) PUTSTR("PE\n"); page_started = 0; column = 0; } vpos = 0; } /*static int ln;*/ void print_line(int advance) { int i, c; enum font font = 0; output_char *tem; int start_pos = 0; /* FPRINTF(STDERR, "ln[%d] max_h_pos '%d'\n", ++ln, max_h_pos ); */ /* for( i = 0; i < max_h_pos; ++i ){ FPRINTF(STDERR, "[%d] '%c'\n", i, output_char_list[i].c ); } */ while( max_h_pos > line_width ){ i = max_h_pos; max_h_pos = line_width; print_line( 1 ); for( c = 0; c + line_width < i; ++c ){ output_char_list[c] = output_char_list[c+line_width]; } max_h_pos = i - line_width; } if (!page_started) page_start(); for( i = 0; i < max_h_pos; ++i ){ tem = &output_char_list[i]; c = tem->c; if( c == ' ' && current_font != NONE ){ font = current_font; } else if( tem->is_bold ){ font = BOLD; } else { font = ROMAN; } if( current_font != font ){ if( start_pos != i ){ end_line(start_pos,vpos); } start_pos = i; if( font == BOLD ){ PUTSTR( "B" ); } else { PUTSTR( "R" ); } current_font = font; start_pos = i; } if( start_pos == i ){ PUTSTR("("); }; pschar(c); } if( start_pos != i ){ end_line( start_pos, vpos ); } if( advance ) ++vpos; if (vpos >= lines_per_page) { page_end(0); } hpos = 0; max_h_pos = 0; } char *defs[] = { /* set up a dictionary with 10 entries*/ "/textps 30 dict def textps begin", /* line output */ "/L { moveto show } bind def", /* page start */ "/PS { /level0 save def } bind def", /* page end */ "/PE { level0 restore showpage } bind def", /* box at (llx,lly) (len=dx,ht=dy,color=boxcolor), text size */ "/BX{ % llx lly dx dy boxcolor pts textcolor [label]", " /label exch def", " /textcolor exch def", " /pts exch def", " /boxcolor exch def", " /dy exch def", " /dx exch def", " /lly exch def", " /llx exch def", " /yh label length pts mul pts 0.3 mul add def", " /ypos lly dy yh sub 2 div add yh add def", " gsave", " boxcolor setgray", " llx lly moveto", " dx 0 rlineto 0 dy rlineto dx neg 0 rlineto", " closepath fill", " textcolor setgray", " label {", " dup", " /ypos ypos pts sub def", " stringwidth pop /strxh exch def", " /xpos llx dx strxh sub 2 div add def", " xpos ypos moveto show", " } forall", " grestore", "}def", "", /* font change establishment */ "/RE {", "\tfindfont", "\tdup maxlength dict begin", "\t{", "\t\t1 index /FID ne { def } { pop pop } ifelse", "\t} forall", "\t/Encoding exch def", "\tdup /FontName exch def", "\tcurrentdict end definefont pop", "} bind def", (char *)0 }; char *latin1[] = { ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", /* this should be `minus', but not all PS printers have it */ "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", ".notdef", "dotlessi", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", ".notdef", "ring", "cedilla", ".notdef", "hungarumlaut", "ogonek", "caron", ".notdef", "exclamdown", "cent", "sterling", "currency", "yen", "brokenbar", "section", "dieresis", "copyright", "ordfeminine", "guilsinglleft", "logicalnot", "hyphen", "registered", "macron", "degree", "plusminus", "twosuperior", "threesuperior", "acute", "mu", "paragraph", "periodcentered", "cedilla", "onesuperior", "ordmasculine", "guilsinglright", "onequarter", "onehalf", "threequarters", "questiondown", "Agrave", "Aacute", "Acircumflex", "Atilde", "Adieresis", "Aring", "AE", "Ccedilla", "Egrave", "Eacute", "Ecircumflex", "Edieresis", "Igrave", "Iacute", "Icircumflex", "Idieresis", "Eth", "Ntilde", "Ograve", "Oacute", "Ocircumflex", "Otilde", "Odieresis", "multiply", "Oslash", "Ugrave", "Uacute", "Ucircumflex", "Udieresis", "Yacute", "Thorn", "germandbls", "agrave", "aacute", "acircumflex", "atilde", "adieresis", "aring", "ae", "ccedilla", "egrave", "eacute", "ecircumflex", "edieresis", "igrave", "iacute", "icircumflex", "idieresis", "eth", "ntilde", "ograve", "oacute", "ocircumflex", "otilde", "odieresis", "divide", "oslash", "ugrave", "uacute", "ucircumflex", "udieresis", "yacute", "thorn", "ydieresis", }; /* llx lly dx dy boxcolor pts textcolor label BX */ void do_bar( bar *p ) { SNPRINTF(outbuffer,sizeof(outbuffer)) "%s %f %f %f %f %f %f 0 %s BX\n", p->font, p->llx, p->lly, p->dx, p->dy, p->gray, p->pts, p->str ); PUTSTR( outbuffer ); } void prologue() { int col, i; PUTSTR( "%!PS-Adobe-3.0\n"); SNPRINTF(outbuffer,sizeof(outbuffer)) "%%%%DocumentNeededResources: font %s\n", font); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "%%%%+ font %s\n", bold_font); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "%%%%+ font %s\n", times_font); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "%%%%+ font %s\n", times_bold); PUTSTR( outbuffer ); PUTSTR( "%%Pages: (atend)\n"); PUTSTR( "%%EndComments\n"); PUTSTR( "%%BeginProlog\n"); for (i = 0; defs[i]; i++){ PUTSTR( defs[i] ); PUTSTR( "\n" ); } PUTSTR( "/date [()] def\n" ); PUTSTR( "/page [()] def\n" ); PUTSTR( "/title [()] def\n" ); PUTSTR( "/HDR { gsave\n" ); do_bar( &Rhdr ); do_bar( &Lhdr ); do_bar( &Center ); SNPRINTF(outbuffer,sizeof(outbuffer)) "0 setlinewidth %f %f moveto %f %f lineto stroke\n", column_width, page_length - topdrop, column_width, bottom_offset ); PUTSTR( outbuffer ); PUTSTR( "grestore } def\n" ); PUTSTR( "/ISOLatin1Encoding where{pop}{/ISOLatin1Encoding[\n"); col = 0; for (i = 0; i < 256; i++) { int len = strlen(latin1[i]) + 2; col += len; if (col > 79) { PUTSTR("\n"); col = len; } SNPRINTF(outbuffer,sizeof(outbuffer)) "/%s ", latin1[i]); PUTSTR( outbuffer ); } PUTSTR( "\n] def}ifelse\nend\n"); PUTSTR( "%%BeginSetup\n"); SNPRINTF(outbuffer,sizeof(outbuffer)) "%%%%IncludeResource: font %s\n", font); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "%%%%IncludeResource: font %s\n", bold_font); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "%%%%IncludeResource: font %s\n", times_font); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "%%%%IncludeResource: font %s\n", times_bold); PUTSTR( outbuffer ); PUTSTR( "textps begin\n"); SNPRINTF(outbuffer,sizeof(outbuffer)) "/__%s ISOLatin1Encoding /%s RE\n", font, font); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "/R { /__%s findfont %f scalefont setfont } def\n", font, font_size); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "/__%s ISOLatin1Encoding /%s RE\n", bold_font, bold_font); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "/B { /__%s findfont %f scalefont setfont } def\n", bold_font, font_size); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "/TR { /%s findfont %f scalefont setfont } def\n", times_font, times_size); PUTSTR( outbuffer ); SNPRINTF(outbuffer,sizeof(outbuffer)) "/TB { /%s findfont %f scalefont setfont } def\n", times_bold, times_bold_size); PUTSTR( outbuffer ); PUTSTR( "%%EndSetup\n"); PUTSTR( "%%EndProlog\n"); } void trailer() { SNPRINTF(outbuffer,sizeof(outbuffer)) "%%%%Trailer\nend\n%%%%Pages: %d\n", pageno); PUTSTR( outbuffer ); } void do_file() { int c; int esced = 0; filepage = 0; while ((c = getchar()) != EOF){ if (esced) switch(c) { case '7': if (hpos > 0) { if (!page_started) page_start(); print_line(1); } esced = 0; break; default: /* silently ignore */ esced = 0; break; } else { switch (c) { case '\033': esced = 1; break; case '\b': if (hpos > 0) hpos--; break; case '\f': if (!page_started) page_start(); print_line(1); if(vpos<=0) page_start(); page_end(0); break; case '\r': if (!page_started) page_start(); print_line(0); break; case '\n': if (!page_started) page_start(); print_line(1); break; case '\t': hpos = ((hpos + tab_width)/tab_width)*tab_width; break; default: if (!(isascii(c) && iscntrl(c))) { add_char(c); } break; } } } if (hpos > 0 ){ if (!page_started) page_start(); print_line(1); } if (page_started) page_end(1); } void PUTSTR( char *msg ) { int len, i; i = len = strlen(msg); while( len > 0 && (i = write( 1, msg, len ) ) > 0 ){ len -= i, msg += i; } if( i < 0 ) exit( 1 ); } int Write_fd_str( int fd, const char *msg ) { int n; n = strlen(msg); return write(fd,msg,n); } /* VARARGS2 */ #ifdef HAVE_STDARGS void safefprintf (int fd, char *format,...) #else void safefprintf (va_alist) va_dcl #endif { #ifndef HAVE_STDARGS int fd; char *format; #endif char buf[1024]; VA_LOCAL_DECL VA_START (format); VA_SHIFT (fd, int); VA_SHIFT (format, char *); buf[0] = 0; (void) VSNPRINTF (buf, sizeof(buf)) format, ap); Write_fd_str(fd,buf); } ifhp-3.5.20/src/portable.h0100644000175100017510000005774210130541266015547 0ustar papowellpapowell/*************************************************************************** * LPRng - An Extended Print Spooler System * * Copyright 1988-2000, Patrick Powell, San Diego, CA * papowell@astart.com * See LICENSE for conditions of use. * $Id: portable.h,v 1.12 2002/01/30 14:34:20 papowell Exp papowell $ ***************************************************************************/ #ifndef _PLP_PORTABLE_H #define _PLP_PORTABLE_H 1 /*************************************************************************** * MODULE: portable.h * PURPOSE: * The configure program generates config.h, which defines various * macros indicating the presence or abscence of include files, etc. * However, there are some systems which pass the tests, but things * do not work correctly on them. This file will try and fix * these things up for the user. * * NOTE: if there were no problems, this file would be: * #include "config.h" * * Sigh. Patrick Powell Thu Apr 6 07:00:48 PDT 1995 * NOTE: thanks to all the folks who worked on the PLP software, * Justin Mason especially. Some of the things * that you have to do to get portability are truely bizzare. * * portable.h,v 3.14 1998/03/24 02:43:22 papowell Exp **************************************************************************/ #if !defined(EXTERN) #define EXTERN extern #define DEFINE(X) #undef DEFS #endif #ifndef __STDC__ LPRng requires ANSI Standard C compiler #endif #include "config.h" #ifdef HAVE_CTYPE_H #include #endif /************************************************************************* * ARGH: some things that "configure" can't get right. *************************************************************************/ /*************************************************************************** * porting note: if you port PLP and you get some errors * caused by autoconf guessing the wrong set of functions/headers/structs, * add or change the entry for your system in the ARGH section below. * You might want to try and determine how your system is identified * by the C preprocessor and use this informaton rather than trying * to look for information in various f1les. * Patrick Powell and Justin Mason ***************************************************************************/ /************************************************************************* * APOLLO Ports * Thu Apr 6 07:01:51 PDT 1995 Patrick Powell * This appears to be historical. *************************************************************************/ #ifdef apollo # define IS_APOLLO OSVERSION /* #undef __STDC__ */ /* # define CONFLICTING_PROTOS */ #endif /************************************************************************* * ULTRIX. * Patrick Powell Thu Apr 6 07:17:34 PDT 1995 * * Take a chance on using the standard calls *************************************************************************/ #ifdef ultrix # define IS_ULTRIX OSVERSION #endif /************************************************************************* * AIX. *************************************************************************/ #ifdef _AIX32 # define IS_AIX32 OSVERSION #endif /************************************************************************* * Sun *************************************************************************/ #if defined(sun) #endif /************************************************************************* * SCO OpenServer 5.0.5 *************************************************************************/ /* normal include files do not define MAXPATHLEN - rather PATHSIZE in sys/param.h */ #ifdef sco #ifndef MAXPATHLEN #define MAXPATHLEN PATHSIZE #endif /* SCO doesn't define the S_ISSOCK POSIX macro to use in testing the stat.st_mode structure member - it appears as though a socket has st_mode = 0020000 (same as character special) */ #ifndef S_ISSOCK #define S_IFSOCK 0020000 #define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) #endif #endif /************************************************************************* * Cray *************************************************************************/ #if defined(cray) #define MAXPATHLEN 1023 #define HAVE_SIGLONGJMP 1 /* configure incorrectly chooses STATVFS */ #if defined(USE_STATFS_TYPE) #undef USE_STATFS_TYPE #endif #define USE_STATFS_TYPE SRV3_STATFS #endif /*************************************************************************/ #if defined(NeXT) # define IS_NEXT OSVERSION # define __STRICT_BSD__ #endif /*************************************************************************/ #if defined(__sgi) && defined(_SYSTYPE_SVR4) # define IS_IRIX5 OSVERSION #endif /*************************************************************************/ #if defined(__sgi) && defined(_SYSTYPE_SYSV) #define IS_IRIX4 OSVERSION #endif /*************************************************************************/ #if defined(__linux__) || defined (__linux) || defined (LINUX) # define IS_LINUX OSVERSION #endif /*************************************************************************/ #if defined(__convex__) /* Convex OS 11.0 - from w_stef */ # define IS_CONVEX OSVERSION # define LPASS8 (L004000>>16) #endif /*************************************************************************/ #ifdef _AUX_SOURCE # define IS_AUX OSVERSION # define _POSIX_SOURCE # undef SETPROCTITLE #endif /*************************************************************************/ #if defined(SNI) && defined(sinix) # define IS_SINIX OSVERSION #endif /*************************************************************************/ #if defined(__svr4__) && !defined(SVR4) # define SVR4 __svr4__ #endif /*************************************************************************** * Solaris SUNWorks CC compiler * man page indicates __SVR4 is defined, as is __unix, __sun ***************************************************************************/ #if (defined(__SVR4) || defined(_SVR4_)) && !defined(SVR4) # define SVR4 1 #endif /*************************************************************************/ #if defined(__bsdi__) # define IS_BSDI OSVERSION #endif /*************************************************************************/ /************************************************************************* * we also need some way of spotting IS_DATAGEN (Data Generals), * and IS_SEQUENT (Sequent machines). Any suggestions? * these ports probably don't work anymore... *************************************************************************/ /************************************************************************* * END OF ARGH SECTION; next: overrides from the Makefile. *************************************************************************/ /************************* * STTY functions to use * *************************/ #define SGTTYB 0 #define TERMIO 1 #define TERMIOS 2 /************************* * FSTYPE functions to use * *************************/ #define SVR3_STATFS 0 #define ULTRIX_STATFS 1 #define STATFS 2 #define STATVFS 3 #if defined(MAKE_USE_STATFS) # undef USE_STATFS # define USE_STATFS MAKE_USE_STATFS #endif #if defined(MAKE_USE_STTY) # undef USE_STTY # define USE_STTY MAKE_USE_STTY #endif /********************************************************************* * GET STANDARD INCLUDE FILES * This is the one-size-fits-all include that should grab everthing. * This has a horrible impact on compilation speed, but then, do you * want compilation speed or portability? * * Patrick Powell Thu Apr 6 07:21:10 PDT 1995 ********************************************************************* * If you do not have the following, you are doomed. Or at least * going to have an uphill hard time. * NOTE: string.h might also be strings.h on some very very odd systems * * Patrick Powell Thu Apr 6 07:21:10 PDT 1995 *********************************************************************/ /********************************************************************* * yuck -- this is a nightmare! half-baked-ANSI systems are poxy (jm) * * Note that configure checks for absolute compliance, i.e.- * older versions of SUNOS, HP-UX, do not meet this. * * Patrick Powell Thu Apr 6 07:21:10 PDT 1995 *********************************************************************/ #ifdef HAVE_UNISTD_H # include #else extern int dup2 (); extern int execve (); extern uid_t geteuid (), getegid (); extern int setgid (), getgid (); #endif #ifdef HAVE_STDLIB_H # include #else char *getenv( char * ); void abort(void); #endif #include #include #include #if defined(HAVE_STRINGS_H) # include #endif #include #include #include #include #include #include #include #if defined(HAVE_SYS_SIGNAL_H) # include #endif #include #include #include #include #include #ifdef HAVE_MEMORY_H #include #endif #ifndef HAVE_STRCHR # define strchr index # define strrchr rindex #endif /* case insensitive compare for OS without it */ #if !defined(HAVE_STRCASECMP) int strcasecmp (const char *s1, const char *s2); #endif #if !defined(HAVE_STRNCASECMP) int strncasecmp (const char *s1, const char *s2, int len ); #endif #if !defined(HAVE_STRCASECMP_DEF) int strcasecmp (const char *s1, const char *s2 ); #endif /********************************************************************* * directory management is nasty. There are two standards: * struct directory and struct dirent. * Solution: macros + a typedef. * Patrick Powell Thu Apr 6 07:44:50 PDT 1995 * *See GNU autoconf documentation for this little AHEM gem... and others * too obnoxious to believe *********************************************************************/ #if HAVE_DIRENT_H # include # define NLENGTH(dirent) strlen((dirent)->d_name) #else # define dirent direct # define NLENGTH(dirent) (dirent)->d_namlen # if HAVE_SYS_NDIR_H # include # endif # if HAVE_SYS_DIR_H # include # endif # if HAVE_NDIR_H # include # endif #endif typedef struct dirent plp_dir_t; /********************************************************************* * malloc strikes again. Definition is a la ANSI C. However, * You may need to edit this on historical systems. * Patrick Powell Thu Apr 6 07:47:54 PDT 1995 *********************************************************************/ #if !defined(HAVE_STDLIB_H) # if defined(HAVE_MALLOC_H) # include # else void *malloc(size_t); void free(void *); # endif #endif #ifndef HAVE_ERRNO_DECL extern int errno; #endif /********************************************************************* * Note the may already be included by some previous * lines. You may need to edit this by hand. * Better solution is to put include guards in all of the include files. * Patrick Powell Thu Apr 6 07:55:58 PDT 1995 *********************************************************************/ #ifdef TIME_WITH_SYS_TIME # include # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #ifdef HAVE_SYS_FILE_H # include #endif #ifdef HAVE_SYS_RESOURCE_H # include #endif #ifdef HAVE_SYS_FCNTL_H # include #endif #ifdef HAVE_FCNTL_H # include #endif /* * we use the FCNTL code if we have it * We want you to define F_SETLK, etc. If they are not defined, * Then you better put a system dependent configuration * in and define them. */ #if defined(HAVE_FCNTL) && ! defined(F_SETLK) /*ABORT: "defined(HAVE_FCNTL) && ! defined(F_SETLK)"*/ #undef HAVE_FCNTL #endif #if defined(HAVE_LOCKF) && ! defined(F_LOCK) /*ABORT: "defined(HAVE_LOCKF) && ! defined(F_LOCK)"*/ /* You must fix this up */ #undef HAVE_LOCKF #endif #if defined(HAVE_FLOCK) && ! defined(LOCK_EX) /*AB0RT: "defined(HAVE_FLOCK) && ! defined(LOCK_EX)"*/ /* You must fix this up */ #undef HAVE_FLOCK #endif #ifdef HAVE_LIMITS_H #include #endif /* 4.2 BSD systems */ #ifndef S_IRUSR # define S_IRUSR S_IREAD # define S_IWUSR S_IWRITE # define S_IXUSR S_IEXEC # define S_IXGRP (S_IEXEC >> 3) # define S_IXOTH (S_IEXEC >> 6) #endif #ifndef S_ISLNK # define S_ISLNK(mode) (((mode) & S_IFLNK) == S_IFLNK) #endif #ifndef S_ISREG # define S_ISREG(mode) (((mode) & S_IFREG) == S_IFREG) #endif #ifndef S_ISDIR # define S_ISDIR(mode) (((mode) & S_IFDIR) == S_IFDIR) #endif /* 4.2 BSD systems */ #ifndef SEEK_SET # define SEEK_SET 0 # define SEEK_CUR 1 # define SEEK_END 2 #endif #ifndef HAVE_KILLPG # define killpg(pg,sig) ((int) kill ((pid_t)(-(pg)), (sig))) #else extern int killpg(pid_t pgrp, int sig); #endif /*********************************************************************** * wait() stuff: most recent systems support a compatability version * of "union wait", but it's not as fully-featured as the recent stuff * that uses an "int *". However, we want to keep support for the * older BSD systems as much as possible, so it's still supported; * however, if waitpid() exists, we're POSIX.1 compliant, and we should * not use "union wait". (hack hack hack) (jm) * * I agree. See the waitchild.c code for a tour through the depths of * portability hell. * * Patrick Powell Thu Apr 6 08:03:58 PDT 1995 * ***********************************************************************/ #ifdef HAVE_WAITPID # undef HAVE_UNION_WAIT /* and good riddance */ #endif /*************************************************************************** * HAVE_UNION_WAIT will be def'd by configure if it's in , * and isn't just there for compatibility (like it is on HP/UX). ***************************************************************************/ #ifdef HAVE_UNION_WAIT typedef union wait plp_status_t; /* * with some BSDish systems, there are already #defines for this, * so we should use them if they're there. */ # ifndef WCOREDUMP # define WCOREDUMP(x) ((x).w_coredump) # endif # ifndef WEXITSTATUS # define WEXITSTATUS(x) ((x).w_retcode) # endif # ifndef WTERMSIG # define WTERMSIG(x) ((x).w_termsig) # endif # ifndef WIFSTOPPED # define WIFSTOPPED(x) ((x).w_stopval == WSTOPPED) # endif # ifndef WIFEXITED # define WIFEXITED(x) ((x).w_stopval == WEXITED) # endif #else typedef int plp_status_t; /* The POSIX defaults for these macros. (this is cheating!) */ # ifndef WTERMSIG # define WTERMSIG(x) ((x) & 0x7f) # endif # ifndef WCOREDUMP # define WCOREDUMP(x) ((x) & 0x80) # endif # ifndef WEXITSTATUS # define WEXITSTATUS(x) ((((unsigned) x) >> 8) & 0xff) # endif # ifndef WIFSIGNALED # define WIFSIGNALED(x) (WTERMSIG (x) != 0) # endif # ifndef WIFEXITED # define WIFEXITED(x) (WTERMSIG (x) == 0) # endif #endif /* HAVE_UNION_WAIT */ /*********************************************************************** * SVR4: SIGCHLD is really SIGCLD; #define it here. * PLP lpd _does_ handle the compatibility semantics properly * (Advanced UNIX Programming p. 281). ***********************************************************************/ #if !defined(SIGCHLD) && defined(SIGCLD) # define SIGCHLD SIGCLD #endif /*********************************************************************** * configure will set RETSIGTYPE to the type returned by signal() ***********************************************************************/ typedef RETSIGTYPE plp_signal_t; typedef plp_signal_t (*plp_sigfunc_t)(int) ; #ifndef HAVE_GETDTABLESIZE # ifdef NOFILE # define getdtablesize() NOFILE # else # ifdef NOFILES_MAX # define getdtablesize() NOFILES_MAX # endif # endif #endif #ifndef HAVE_STRDUP # ifdef __STDC__ char *strdup(const char*); # else char *strdup(); # endif #endif #ifndef IPPORT_RESERVED #define IPPORT_RESERVED 1024 #endif /* varargs declarations: */ #if defined(HAVE_STDARG_H) # include # define HAVE_STDARGS /* let's hope that works everywhere (mj) */ # define VA_LOCAL_DECL va_list ap; # define VA_START(f) va_start(ap, f) # define VA_SHIFT(v,t) ; /* no-op for ANSI */ # define VA_END va_end(ap) #else # if defined(HAVE_VARARGS_H) # include # undef HAVE_STDARGS # define VA_LOCAL_DECL va_list ap; # define VA_START(f) va_start(ap) /* f is ignored! */ # define VA_SHIFT(v,t) v = va_arg(ap,t) # define VA_END va_end(ap) # else XX ** NO VARARGS ** XX # endif #endif #if !defined(IS_ULTRIX) && defined(HAVE_SYSLOG_H) # include #endif #if defined(HAVE_SYS_SYSLOG_H) # include #endif # if !(defined(LOG_PID) && defined(LOG_NOWAIT) && defined(HAVE_OPENLOG)) # undef HAVE_OPENLOG # endif /* LOG_PID && LOG_NOWAIT */ /* * Priorities (these are ordered) */ #ifndef LOG_ERR # define LOG_EMERG 0 /* system is unusable */ # define LOG_ALERT 1 /* action must be taken immediately */ # define LOG_CRIT 2 /* critical conditions */ # define LOG_ERR 3 /* error conditions */ # define LOG_WARNING 4 /* warning conditions */ # define LOG_NOTICE 5 /* normal but signification condition */ # define LOG_INFO 6 /* informational */ # define LOG_DEBUG 7 /* debug-level messages */ #endif #ifdef LOG_LPR # define SYSLOG_FACILITY LOG_LPR #else # ifdef LOG_LOCAL0 # define SYSLOG_FACILITY LOCAL0 # else # define SYSLOG_FACILITY (0) /* for Ultrix -- facilities aren't supported */ # endif #endif /************************************************************************* * If we have SVR4 and no setpgid() then we need getpgrp() *************************************************************************/ #if defined(SVR4) || defined(__alpha__) # undef HAVE_SETPGRP_0 #endif /* * NONBLOCKING Open and IO - different flags for * different systems */ #define NONBLOCK (O_NDELAY|O_NONBLOCK) #if defined(HPUX) && HPUX<110 # undef NONBLOCK # define NONBLOCK (O_NONBLOCK) # undef FD_SET_FIX # define FD_SET_FIX(X) (int *) #endif /********************************************************************* * AIX systems need this *********************************************************************/ #if defined(HAVE_SYS_SELECT_H) # include #endif /********************************************************************** * Signal blocking **********************************************************************/ #ifdef HAVE_SIGPROCMASK /* a signal set */ #define plp_block_mask sigset_t #else /* an integer */ #define plp_block_mask int #endif /********************************************************************** * Select() problems **********************************************************************/ #ifdef HAVE_SELECT_H #include #endif #if !defined(FD_SET_FIX) # define FD_SET_FIX(X) X #endif /********************************************************************** * IPV6 and newer versions **********************************************************************/ #if !defined(HAVE_INET_PTON) int inet_pton( int family, const char *strptr, void *addr ); #endif #if !defined(HAVE_INET_NTOP) const char *inet_ntop( int family, const void *addr, char *strptr, size_t len ); #endif /***************************************************** * Internationalisation of messages, using GNU gettext *****************************************************/ #if HAVE_LOCALE_H # include #endif #if ENABLE_NLS # include # define _(Text) gettext(Text) # ifdef gettext_noop # define N_(Text) gettext_noop(Text) # else # define N_(Text) Text # endif #else # define _(Text) Text # define N_(Text) Text # define textdomain(Domain) # define bindtextdomain(Package, Directory) #endif /********************************************************************** * SUNOS Definitions **********************************************************************/ #ifdef SUNOS extern int _flsbuf(int, FILE *); extern int _filbuf(FILE *); extern int accept(int s, struct sockaddr *name, int *namelen); extern int bind(int s, struct sockaddr *name, int namelen); extern int connect(int s, struct sockaddr *name, int namelen); extern void bzero(void *s, size_t n); extern void endgrent( void ); extern int fflush( FILE *stream ); extern int fclose( FILE *stream ); extern int flock( int fd, int operation ); extern int fprintf(FILE *, const char *, ...); extern int fputs( const char *, FILE *stream ); extern int fstat(int fd, struct stat *buf ); extern int fseek( FILE *stream, long offset, int ptrname ); extern int ftruncate( int fd, off_t length ); extern int fwrite( char *ptr, int size, int nitems, FILE *stream); extern int getdtablesize( void ); extern int getpeername(int s, struct sockaddr *name, int *namelen); extern int getsockname(int s, struct sockaddr *name, int *namelen); extern int getsockopt(int s, int level, int optname, char *optval,int *optlen); extern int ioctl(int fd, int request, caddr_t arg ); extern int killpg(int pgrp, int sig ); extern int listen(int s, int backlog ); extern int lockf(int fd, int cmd, long size ); /*extern int lseek(int fd, off_t pos, int how ); */ extern int lstat(const char *path, struct stat *buf ); #define memmove(dest,src,len) bcopy(src,dest,len) extern void bcopy(const void *src,void *dest,size_t len); extern int mkstemp(char *s ); extern int openlog( const char *ident, int logopt, int facility ); extern int perror(const char *); extern int printf( const char *, ...); extern int rename(const char *, const char *); extern int select (int width, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); extern void setgrent(void); extern int seteuid( int euid ); extern int setreuid( int ruid, int euid ); extern int setsockopt(int s, int level, int optname, const char *optval,int optlen); extern int socket( int domain, int type, int protocol ); extern int socketpair(int, int, int, int *); extern int sscanf( char *s, char *format, ... ); extern int stat(const char *path, struct stat *buf ); extern int strcasecmp( const char *, const char * ); extern char *strerror( int ); extern int strncasecmp( const char *, const char *, int n ); extern long strtol( const char *str, char **ptr, int base ); extern double strtod( const char *str, char **ptr ); extern int shutdown( int sock, int how ); extern int gettimeofday(struct timeval *tp, struct timezone *tzp); extern int getrlimit(int resource, struct rlimit *rlp); extern char * sbrk(int incr); extern int fchmod(int fd, int mode); extern int strftime(char *buf, int bufsize, const char *fmt, struct tm *tm); extern void syslog(int, const char *, ...); extern int system( const char *str ); extern time_t time( time_t *t ); extern int tolower( int ); extern int toupper( int ); extern int tputs( const char *cp, int affcnt, int (*outc)() ); extern int vfprintf(FILE *, const char *, ...); extern int vprintf(FILE *, const char *, va_list ap); #endif #ifdef SOLARIS extern int setreuid( uid_t ruid, uid_t euid ); extern int mkstemp(char *s ); #ifdef HAVE_GETDTABLESIZE extern int getdtablesize(void); #endif #endif #if !defined(HAVE_SYSLOG_DEF) extern void syslog(int, const char *, ...); #endif #if !defined(HAVE_OPENLOG_DEF) extern int openlog( const char *ident, int logopt, int facility ); #endif #ifdef IS_AIX32 extern int seteuid(uid_t); #endif /* IPV6 structures define */ #if defined(AF_INET6) # if defined(IN_ADDR6) # define in6_addr in_addr6 # endif #endif #if defined(HAVE_ARPA_NAMESER_H) # include #endif #if defined(HAVE_RESOLV_H) # include #endif #ifdef HAVE_INNETGR #if !defined(HAVE_INNETGR_DEF) extern int innetgr(const char *netgroup, const char *machine, const char *user, const char *domain); #endif #endif #define Cast_int_to_voidstar(v) ((void *)(long)(v)) #define Cast_ptr_to_int(v) ((int)(long)(v)) #define Cast_ptr_to_long(v) ((long)(v)) #define cval(x) (int)(*(unsigned const char *)(x)) /* for testing, set -Wall -Wformat and then make */ #if defined(FORMAT_TEST) # define FPRINTF fprintf # define PRINTF printf # define STDOUT stdout # define STDERR stderr # define SNPRINTF(X,Y) printf( # define VSNPRINTF(X,Y) vprintf( # define SETSTATUS(X) printf( #else # define FPRINTF safefprintf # define PRINTF safeprintf # define STDOUT 1 # define STDERR 2 # define SNPRINTF(X,Y) plp_snprintf(X,Y, # define VSNPRINTF(X,Y) plp_vsnprintf(X,Y, # define SETSTATUS(X) setstatus(X, #endif #endif ifhp-3.5.20/src/plp_snprintf.c0100644000175100017510000010526710130541266016444 0ustar papowellpapowell/************************************************************************** * Copyright 1994-2002 Patrick Powell, San Diego, CA **************************************************************************/ /* Overview: plp_snprintf( char *buffer, int len, const char *format,...) plp_unsafe_snprintf( char *buffer, int len, const char *format,...) its horribly unsafe companion that does NOT protect you from the printing of evil control characters, but may be necessary See the man page documentation below This version of snprintf was developed originally for printing on a motley collection of specialized hardware that had NO IO library. Due to contractual restrictions, a clean room implementation of the printf() code had to be developed. The method chosen for printf was to be as paranoid as possible, as these platforms had NO memory protection, and very small address spaces. This made it possible to try to print very long strings, i.e. - all of memory, very easily. To guard against this, all printing was done via a buffer, generous enough to hold strings, but small enough to protect against overruns, etc. Strangely enough, this proved to be of immense importance when SPRINTFing to a buffer on a stack... The rest, of course, is well known, as buffer overruns in the stack are a common way to do horrible things to operating systems, security, etc etc. This version of snprintf is VERY limited by modern standards. Revision History: First Released Version - 1994. This version had NO comments. First Released Version - 1994. This version had NO comments. Second Major Released Version - Tue May 23 10:43:44 PDT 2000 Configuration and other items changed. Read this doc. Treat this as a new version. Minor Revision - Mon Apr 1 09:41:28 PST 2002 - fixed up some constants and casts COPYRIGHT AND TERMS OF USE: You may use, copy, distribute, or otherwise incorporate this software and documentation into any product or other item, provided that the copyright in the documentation and source code as well as the source code generated constant strings in the object, executable or other code remain in place and are present in executable modules or objects. You may modify this code as appropriate to your usage; however the modified version must be identified by changing the various source and object code identification strings as is appropriately noted in the source code. You can use this with the GNU CONFIGURE utility. This should define the following macros appropriately: HAVE_STDARG_H - if the include file is available HAVE_VARARG_H - if the include file is available HAVE_STRERROR - if the strerror() routine is available. If it is not available, then examine the lines containing the tests below. HAVE_SYS_ERRLIST - have sys_errlist available HAVE_DECL_SYS_ERRLIST - sys_errlist declaration in include files HAVE_SYS_NERR - have sys_nerr available HAVE_DECL_SYS_NERR - sys_nerr declaration in include files HAVE_QUAD_T - if the quad_t type is defined HAVE_LONG_LONG - if the long long type is defined HAVE_LONG_DOUBLE - if the long double type is defined If you are using the GNU configure (autoconf) facility, add the following line to the configure.in file, to force checking for the quad_t and long long data types: AC_CHECK_HEADERS(stdlib.h,stdio.h,unistd.h,errno.h) AC_CHECK_FUNCS(strerror) AC_CACHE_CHECK(for errno, ac_cv_errno, [ AC_TRY_LINK(,[extern int errno; return (errno);], ac_cv_errno=yes, ac_cv_errno=no) ]) if test "$ac_cv_errno" = yes; then AC_DEFINE(HAVE_ERRNO) AC_CACHE_CHECK(for errno declaration, ac_cv_decl_errno, [ AC_TRY_COMPILE([ #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_ERRNO_H #include ],[return(sys_nerr);], ac_cv_decl_errno=yes, ac_cv_decl_errno=no) ]) if test "$ac_cv_decl_errno" = yes; then AC_DEFINE(HAVE_DECL_ERRNO) fi; fi AC_CACHE_CHECK(for sys_nerr, ac_cv_sys_nerr, [ AC_TRY_LINK(,[extern int sys_nerr; return (sys_nerr);], ac_cv_sys_nerr=yes, ac_cv_sys_nerr=no) ]) if test "$ac_cv_sys_nerr" = yes; then AC_DEFINE(HAVE_SYS_NERR) AC_CACHE_CHECK(for sys_nerr declaration, ac_cv_decl_sys_nerr, [ AC_TRY_COMPILE([ #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif],[return(sys_nerr);], ac_cv_decl_sys_nerr_def=yes, ac_cv_decl_sys_nerr_def=no) ]) if test "$ac_cv_decl_sys_nerr" = yes; then AC_DEFINE(HAVE_DECL_SYS_NERR) fi fi AC_CACHE_CHECK(for sys_errlist array, ac_cv_sys_errlist, [AC_TRY_LINK(,[extern char *sys_errlist[]; sys_errlist[0];], ac_cv_sys_errlist=yes, ac_cv_sys_errlist=no) ]) if test "$ac_cv_sys_errlist" = yes; then AC_DEFINE(HAVE_SYS_ERRLIST) AC_CACHE_CHECK(for sys_errlist declaration, ac_cv_sys_errlist_def, [AC_TRY_COMPILE([ #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif],[char *s = sys_errlist[0]; return(*s);], ac_cv_decl_sys_errlist=yes, ac_cv_decl_sys_errlist=no) ]) if test "$ac_cv_decl_sys_errlist" = yes; then AC_DEFINE(HAVE_DECL_SYS_ERRLIST) fi fi AC_CACHE_CHECK(checking for long long, ac_cv_long_long, [ AC_TRY_COMPILE([ #include #include ], [printf("%d",sizeof(long long));], ac_cv_long_long=yes, ac_cv_long_long=no) ]) if test $ac_cv_long_long = yes; then AC_DEFINE(HAVE_LONG_LONG) fi AC_CACHE_CHECK(checking for long double, ac_cv_long_double, [ AC_TRY_COMPILE([ #include #include ], [printf("%d",sizeof(long double));], ac_cv_long_double=yes, ac_cv_long_double=no) ]) if test $ac_cv_long_double = yes; then AC_DEFINE(HAVE_LONG_DOUBLE) fi AC_CACHE_CHECK(checking for quad_t, ac_cv_quad_t, [ AC_TRY_COMPILE([ #include #include ], [printf("%d",sizeof(quad_t));], ac_cv_quad_t=yes, ac_cv_quad_t=no) ]) if test $ac_cv_quad_t = yes; then AC_DEFINE(HAVE_QUAD_T) fi NAME plp_snprintf, plp_vsnprintf - formatted output conversion SYNOPSIS #include #include int plp_snprintf(const char *format, size_t size, va_list ap); int plp_unsafe_snprintf(const char *format, size_t size, va_list ap); AKA snprintf and unsafe_snprintf in the documentation below int vsnprintf(char *str, size_t size, const char *format, va_list ap); int unsafe_vsnprintf(char *str, size_t size, const char *format, va_list ap); AKA vsnprintf and unsafe_vsnprintf in the documentation below (Multithreaded Safe) DESCRIPTION The printf() family of functions produces output according to a format as described below. Snprintf(), and vsnprintf() write to the character string str. These functions write the output under the control of a format string that specifies how subsequent arguments (or arguments accessed via the variable-length argument facilities of stdarg(3)) are converted for output. These functions return the number of characters printed (not including the trailing `\0' used to end output to strings). Snprintf() and vsnprintf() will write at most size-1 of the characters printed into the output string (the size'th character then gets the terminating `\0'); if the return value is greater than or equal to the size argument, the string was too short and some of the printed characters were discarded. The size or str may be given as zero to find out how many characters are needed; in this case, the str argument is ignored. By default, the snprintf function will not format control characters (except new line and tab) in strings. This is a safety feature that has proven to be extremely critical when using snprintf for secure applications and when debugging. If you MUST have control characters formatted or printed, then use the unsafe_snprintf() and unsafe_vsnprintf() and on your own head be the consequences. You have been warned. There is one exception to the comments above, and that is the "%c" (character) format. It brutally assumes that the user will have performed the necessary 'isprint()' or other checks and uses the integer value as a character. The format string is composed of zero or more directives: ordinary characters (not %), which are copied unchanged to the output stream; and conversion specifications, each of which results in fetching zero or more subsequent arguments. Each conversion specification is introduced by the character %. The arguments must correspond properly (after type promotion) with the conversion specifier. After the %, the following appear in sequence: o Zero or more of the following flags: - A zero `0' character specifying zero padding. For all conversions except n, the converted value is padded on the left with zeros rather than blanks. If a precision is given with a numeric conversion (d, i, o, u, i, x, and X), the `0' flag is ignored. - A negative field width flag `-' indicates the converted value is to be left adjusted on the field boundary. Except for n conversions, the converted value is padded on the right with blanks, rather than on the left with blanks or zeros. A `-' overrides a `0' if both are given. - A space, specifying that a blank should be left before a positive number produced by a signed conversion (d, e, E, f, g, G, or i). - A `+' character specifying that a sign always be placed before a number produced by a signed conversion. A `+' overrides a space if both are used. o An optional decimal digit string specifying a minimum field width. If the converted value has fewer characters than the field width, it will be padded with spaces on the left (or right, if the left-adjustment flag has been given) to fill out the field width. o An optional precision, in the form of a period `.' followed by an optional digit string. If the digit string is omitted, the precision is taken as zero. This gives the minimum number of digits to appear for d, i, o, u, x, and X conversions, the number of digits to appear after the decimal-point for e, E, and f conversions, the maximum number of significant digits for g and G conversions, or the maximum number of characters to be printed from a string for s conversions. o The optional character h, specifying that a following d, i, o, u, x, or X conversion corresponds to a short int or unsigned short int argument, or that a following n conversion corresponds to a pointer to a short int argument. o The optional character l (ell) specifying that a following d, i, o, u, x, or X conversion applies to a pointer to a long int or unsigned long int argument, or that a following n conversion corresponds to a pointer to a long int argument. o The optional character q, specifying that a following d, i, o, u, x, or X conversion corresponds to a quad_t or u_quad_t argument, or that a following n conversion corresponds to a quad_t argument. This value is always printed in HEX notation. Tough. quad_t's are an OS system implementation, and should not be allowed. o The character L specifying that a following e, E, f, g, or G conversion corresponds to a long double argument. o A character that specifies the type of conversion to be applied. A field width or precision, or both, may be indicated by an asterisk `*' instead of a digit string. In this case, an int argument supplies the field width or precision. A negative field width is treated as a left adjustment flag followed by a positive field width; a negative precision is treated as though it were missing. The conversion specifiers and their meanings are: diouxX The int (or appropriate variant) argument is converted to signed decimal (d and i), unsigned octal (o), unsigned decimal (u), or unsigned hexadecimal (x and X) notation. The letters abcdef are used for x conversions; the letters ABCDEF are used for X conversions. The precision, if any, gives the minimum number of digits that must appear; if the converted value requires fewer digits, it is padded on the left with zeros. eE The double argument is rounded and converted in the style [-]d.ddde+-dd where there is one digit before the decimal-point character and the number of digits after it is equal to the precision; if the precision is missing, it is taken as 6; if the precision is zero, no decimal-point character appears. An E conversion uses the letter E (rather than e) to introduce the exponent. The exponent always contains at least two digits; if the value is zero, the exponent is 00. f The double argument is rounded and converted to decimal notation in the style [-]ddd.ddd, where the number of digits after the decimal-point character is equal to the precision specification. If the precision is missing, it is taken as 6; if the precision is explicitly zero, no decimal-point character appears. If a decimal point appears, at least one digit appears before it. g The double argument is converted in style f or e (or E for G conversions). The precision specifies the number of significant digits. If the precision is missing, 6 digits are given; if the precision is zero, it is treated as 1. Style e is used if the exponent from its conversion is less than -4 or greater than or equal to the precision. Trailing zeros are removed from the fractional part of the result; a decimal point appears only if it is followed by at least one digit. c The int argument is converted to an unsigned char, and the resulting character is written. s The ``char *'' argument is expected to be a pointer to an array of character type (pointer to a string). Characters from the array are written up to (but not including) a terminating NUL character; if a precision is specified, no more than the number specified are written. If a precision is given, no null character need be present; if the precision is not specified, or is greater than the size of the array, the array must contain a terminating NUL character. % A `%' is written. No argument is converted. The complete conversion specification is `%%'. In no case does a non-existent or small field width cause truncation of a field; if the result of a conversion is wider than the field width, the field is expanded to contain the conversion result. EXAMPLES To print a date and time in the form `Sunday, July 3, 10:02', where weekday and month are pointers to strings: #include fprintf(stdout, "%s, %s %d, %.2d:%.2d\n", weekday, month, day, hour, min); To print pi to five decimal places: #include #include fprintf(stdout, "pi = %.5f\n", 4 * atan(1.0)); To allocate a 128 byte string and print into it: #include #include #include char *newfmt(const char *fmt, ...) { char *p; va_list ap; if ((p = malloc(128)) == NULL) return (NULL); va_start(ap, fmt); (void) vsnprintf(p, 128, fmt, ap); va_end(ap); return (p); } SEE ALSO printf(1), scanf(3) STANDARDS Turkey C Standardization and wimpy POSIX folks did not define snprintf or vsnprintf(). BUGS The conversion formats %D, %O, and %U are not standard and are provided only for backward compatibility. The effect of padding the %p format with zeros (either by the `0' flag or by specifying a precision), and the benign effect (i.e., none) of the `#' flag on %n and %p conversions, as well as other nonsensical combinations such as %Ld, are not standard; such combinations should be avoided. The typedef names quad_t and u_quad_t are infelicitous. */ #include "config.h" #include #include #include #include #if defined(HAVE_STRING_H) # include #endif #if defined(HAVE_STRINGS_H) # include #endif #if defined(HAVE_ERRNO_H) #include #endif /* * For testing, define these values */ #if 0 #define HAVE_STDARG_H 1 #define TEST 1 #define HAVE_QUAD_T 1 #endif /**** ENDINCLUDE ****/ /************************************************* * KEEP THIS STRING - MODIFY AT THE END WITH YOUR REVISIONS * i.e. - the LOCAL REVISIONS part is for your use *************************************************/ static char *const _id = "plp_snprintf V2000.08.18 Copyright Patrick Powell 1988-2000 " "$Id: plp_snprintf.c,v 1.8 2003/09/04 18:38:32 papowell Exp papowell $" " LOCAL REVISIONS: "; /* varargs declarations: */ # undef HAVE_STDARGS /* let's hope that works everywhere (mj) */ # undef VA_LOCAL_DECL # undef VA_START # undef VA_SHIFT # undef VA_END #if defined(HAVE_STDARG_H) # include # define HAVE_STDARGS /* let's hope that works everywhere (mj) */ # define VA_LOCAL_DECL va_list ap; # define VA_START(f) va_start(ap, f) # define VA_SHIFT(v,t) ; /* no-op for ANSI */ # define VA_END va_end(ap) #else # if defined(HAVE_VARARGS_H) # include # undef HAVE_STDARGS # define VA_LOCAL_DECL va_list ap; # define VA_START(f) va_start(ap) /* f is ignored! */ # define VA_SHIFT(v,t) v = va_arg(ap,t) # define VA_END va_end(ap) # else XX ** NO VARARGS ** XX # endif #endif union value { #if defined(HAVE_QUAD_T) quad_t qvalue; #endif #if defined(HAVE_LONG_LONG) long long value; #else long value; #endif double dvalue; }; #undef CVAL #define CVAL(s) (*((unsigned char *)s)) #define safestrlen(s) ((s)?strlen(s):0) static char * plp_Errormsg ( int err, char *buffer ); static void dopr( int visible_control, char **buffer, int *left, const char *format, va_list args ); static void fmtstr( int visible_control, char **buffer, int *left, char *value, int ljust, int len, int zpad, int precision ); static void fmtnum( char **buffer, int *left, union value *value, int base, int dosign, int ljust, int len, int zpad, int precision ); #if defined(HAVE_QUAD_T) static void fmtquad( char **buffer, int *left, union value *value, int base, int dosign, int ljust, int len, int zpad, int precision ); #endif static void fmtdouble( char **bufer, int *left, int fmt, double value, int ljust, int len, int zpad, int precision ); static void dostr( char **buffer, int *left, char *str ); static void dopr_outch( char **buffer, int *left, int c ); int plp_vsnprintf(char *str, size_t count, const char *fmt, va_list args) { int left; char *buffer; if( (int)count < 0 ) count = 0; left = count; if( count == 0 ) str = 0; buffer = str; dopr( 1, &buffer, &left, fmt, args ); /* fprintf(stderr,"str 0x%x, buffer 0x%x, count %d, left %d\n", (int)str, (int)buffer, count, left ); */ if( str && count > 0 ){ if( left > 0 ){ str[count-left] = 0; } else { str[count-1] = 0; } } return(count - left); } int plp_unsafe_vsnprintf(char *str, size_t count, const char *fmt, va_list args) { int left; char *buffer; if( (int)count < 0 ) count = 0; left = count; if( count == 0 ) str = 0; buffer = str; dopr( 0, &buffer, &left, fmt, args ); /* fprintf(stderr,"str 0x%x, buffer 0x%x, count %d, left %d\n", (int)str, (int)buffer, count, left ); */ if( str && count > 0 ){ if( left > 0 ){ str[count-left] = 0; } else { str[count-1] = 0; } } return(count - left); } /* VARARGS3 */ #ifdef HAVE_STDARGS int plp_snprintf (char *str,size_t count,const char *fmt,...) #else int plp_snprintf (va_alist) va_dcl #endif { #ifndef HAVE_STDARGS char *str; size_t count; char *fmt; #endif int n = 0; VA_LOCAL_DECL VA_START (fmt); VA_SHIFT (str, char *); VA_SHIFT (count, size_t ); VA_SHIFT (fmt, char *); n = plp_vsnprintf ( str, count, fmt, ap); VA_END; return( n ); } /* VARARGS3 */ #ifdef HAVE_STDARGS int plp_unsafe_snprintf (char *str,size_t count,const char *fmt,...) #else int plp_unsafe_snprintf (va_alist) va_dcl #endif { #ifndef HAVE_STDARGS char *str; size_t count; char *fmt; #endif int n = 0; VA_LOCAL_DECL VA_START (fmt); VA_SHIFT (str, char *); VA_SHIFT (count, size_t ); VA_SHIFT (fmt, char *); n = plp_unsafe_vsnprintf ( str, count, fmt, ap); VA_END; return( n ); } static void dopr( int visible_control, char **buffer, int *left, const char *format, va_list args ) { int ch; union value value; int longflag = 0; int quadflag = 0; char *strvalue; int ljust; int len; int zpad; int precision; int set_precision; double dval; int err = errno; int base = 0; int signed_val = 0; while( (ch = *format++) ){ switch( ch ){ case '%': longflag = quadflag = ljust = len = zpad = base = signed_val = 0; precision = -1; set_precision = 0; nextch: ch = *format++; switch( ch ){ case 0: dostr( buffer, left, "**end of format**" ); return; case '-': ljust = 1; goto nextch; case '.': set_precision = 1; precision = 0; goto nextch; case '*': if( set_precision ){ precision = va_arg( args, int ); } else { len = va_arg( args, int ); } goto nextch; case '0': /* set zero padding if len not set */ if(len==0 && set_precision == 0 ) zpad = '0'; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if( set_precision ){ precision = precision*10 + ch - '0'; } else { len = len*10 + ch - '0'; } goto nextch; case 'l': ++longflag; goto nextch; case 'q': #if !defined( HAVE_QUAD_T ) dostr( buffer, left, "*no quad_t support *"); return; #endif quadflag = 1; goto nextch; case 'u': case 'U': if( base == 0 ){ base = 10; signed_val = 0; } case 'o': case 'O': if( base == 0 ){ base = 8; signed_val = 0; } case 'd': case 'D': if( base == 0 ){ base = 10; signed_val = 1; } case 'x': if( base == 0 ){ base = 16; signed_val = 0; } case 'X': if( base == 0 ){ base = -16; signed_val = 0; } #if defined( HAVE_QUAD_T ) if( quadflag ){ value.qvalue = va_arg( args, quad_t ); fmtquad( buffer, left, &value,base,signed_val, ljust, len, zpad, precision ); break; } else #endif if( longflag > 1 ){ #if defined(HAVE_LONG_LONG) if( signed_val ){ value.value = va_arg( args, long long ); } else { value.value = va_arg( args, unsigned long long ); } #else if( signed_val ){ value.value = va_arg( args, long ); } else { value.value = va_arg( args, unsigned long ); } #endif } else if( longflag ){ if( signed_val ){ value.value = va_arg( args, long ); } else { value.value = va_arg( args, unsigned long ); } } else { if( signed_val ){ value.value = va_arg( args, int ); } else { value.value = va_arg( args, unsigned int ); } } fmtnum( buffer, left, &value,base,signed_val, ljust, len, zpad, precision ); break; case 's': strvalue = va_arg( args, char *); fmtstr( visible_control, buffer, left, strvalue,ljust,len, zpad, precision ); break; case 'c': ch = va_arg( args, int ); { char b[2]; b[0] = ch; b[1] = 0; fmtstr( 0, buffer, left, b,ljust,len, zpad, precision ); } break; case 'f': case 'g': case 'e': dval = va_arg( args, double ); fmtdouble( buffer, left, ch, dval,ljust,len, zpad, precision ); break; case 'm': { char shortbuffer[32]; fmtstr( visible_control, buffer, left, plp_Errormsg(err, shortbuffer),ljust,len, zpad, precision ); } break; case '%': dopr_outch( buffer, left, ch ); continue; default: dostr( buffer, left, "???????" ); } longflag = 0; break; default: dopr_outch( buffer, left, ch ); break; } } } /* * Format '%[-]len[.precision]s' * - = left justify (ljust) * len = minimum length * precision = numbers of chars in string to use */ static void fmtstr( int visible_control, char **buffer, int *left, char *value, int ljust, int len, int zpad, int precision ) { int padlen, strlenv, i, c; /* amount to pad */ if( value == 0 ){ value = ""; } /* cheap strlen so you do not have library call */ for( strlenv = i = 0; (c=CVAL(value+i)); ++i ){ if( visible_control && iscntrl( c ) && c != '\t' && c != '\n' ){ ++strlenv; } ++strlenv; } if( precision > 0 && strlenv > precision ){ strlenv = precision; } padlen = len - strlenv; if( padlen < 0 ) padlen = 0; if( ljust ) padlen = -padlen; while( padlen > 0 ) { dopr_outch( buffer, left, ' ' ); --padlen; } /* output characters */ for( i = 0; i < strlenv && (c = CVAL(value+i)); ++i ){ if( visible_control && iscntrl( c ) && c != '\t' && c != '\n' ){ dopr_outch(buffer, left, '^'); c = ('@' | (c & 0x1F)); } dopr_outch(buffer, left, c); } while( padlen < 0 ) { dopr_outch( buffer, left, ' ' ); ++padlen; } } static void fmtnum( char **buffer, int *left, union value *value, int base, int dosign, int ljust, int len, int zpad, int precision ) { int signvalue = 0; #if defined(HAVE_LONG_LONG) unsigned long long uvalue; #else unsigned long uvalue; #endif char convert[sizeof( union value) * 8 + 16]; int place = 0; int padlen = 0; /* amount to pad */ int caps = 0; /* fprintf(stderr,"value 0x%x, base %d, dosign %d, ljust %d, len %d, zpad %d\n", value, base, dosign, ljust, len, zpad );/ **/ uvalue = value->value; if( dosign ){ if( value->value < 0 ) { signvalue = '-'; uvalue = -value->value; } } if( base < 0 ){ caps = 1; base = -base; } do{ convert[place++] = (caps? "0123456789ABCDEF":"0123456789abcdef") [uvalue % (unsigned)base ]; uvalue = (uvalue / (unsigned)base ); }while(uvalue); convert[place] = 0; padlen = len - place; if( padlen < 0 ) padlen = 0; if( ljust ) padlen = -padlen; /* fprintf( stderr, "str '%s', place %d, sign %c, padlen %d\n", convert,place,signvalue,padlen); / **/ if( zpad && padlen > 0 ){ if( signvalue ){ dopr_outch( buffer, left, signvalue ); --padlen; signvalue = 0; } while( padlen > 0 ){ dopr_outch( buffer, left, zpad ); --padlen; } } while( padlen > 0 ) { dopr_outch( buffer, left, ' ' ); --padlen; } if( signvalue ) dopr_outch( buffer, left, signvalue ); while( place > 0 ) dopr_outch( buffer, left, convert[--place] ); while( padlen < 0 ){ dopr_outch( buffer, left, ' ' ); ++padlen; } } #if defined(HAVE_QUAD_T) static void fmtquad( char **buffer, int *left, union value *value, int base, int dosign, int ljust, int len, int zpad, int precision ) { int signvalue = 0; int place = 0; int padlen = 0; /* amount to pad */ int caps = 0; int i, c; union { quad_t qvalue; unsigned char qconvert[sizeof(quad_t)]; } vvalue; char convert[2*sizeof(quad_t)+1]; /* fprintf(stderr,"value 0x%x, base %d, dosign %d, ljust %d, len %d, zpad %d\n", value, base, dosign, ljust, len, zpad );/ **/ vvalue.qvalue = value->qvalue; if( base < 0 ){ caps = 1; } for( i = 0; i < (int)sizeof(quad_t); ++i ){ c = vvalue.qconvert[i]; convert[2*i] = (caps? "0123456789ABCDEF":"0123456789abcdef")[ (c >> 4) & 0xF]; convert[2*i+1] = (caps? "0123456789ABCDEF":"0123456789abcdef")[ c & 0xF]; } convert[2*i] = 0; place = safestrlen(convert); padlen = len - place; if( padlen < 0 ) padlen = 0; if( ljust ) padlen = -padlen; /* fprintf( stderr, "str '%s', place %d, sign %c, padlen %d\n", convert,place,signvalue,padlen); / **/ if( zpad && padlen > 0 ){ if( signvalue ){ dopr_outch( buffer, left, signvalue ); --padlen; signvalue = 0; } while( padlen > 0 ){ dopr_outch( buffer, left, zpad ); --padlen; } } while( padlen > 0 ) { dopr_outch( buffer, left, ' ' ); --padlen; } if( signvalue ) dopr_outch( buffer, left, signvalue ); while( place > 0 ) dopr_outch( buffer, left, convert[--place] ); while( padlen < 0 ){ dopr_outch( buffer, left, ' ' ); ++padlen; } } #endif static void mystrcat(char *dest, char *src ) { if( dest && src ){ dest += safestrlen(dest); strcpy(dest,src); } } static void fmtdouble( char **buffer, int *left, int fmt, double value, int ljust, int len, int zpad, int precision ) { char convert[sizeof( union value) * 8 + 512]; char formatstr[128]; /* fprintf(stderr,"len %d, precision %d\n", len, precision ); */ if( len > 255 ){ len = 255; } if( precision > 255 ){ precision = 255; } if( precision >= 0 && len > 0 && precision > len ) precision = len; strcpy( formatstr, "%" ); /* 1 */ if( ljust ) mystrcat(formatstr, "-" ); /* 1 */ if( zpad ) mystrcat(formatstr, "0" ); /* 1 */ if( len >= 0 ){ sprintf( formatstr+safestrlen(formatstr), "%d", len ); /* 3 */ } if( precision >= 0 ){ sprintf( formatstr+safestrlen(formatstr), ".%d", precision ); /* 3 */ } /* format string will be at most 10 chars long ... */ sprintf( formatstr+safestrlen(formatstr), "%c", fmt ); /* this is easier than trying to do the portable dtostr */ /* fprintf(stderr,"format string '%s'\n", formatstr); */ sprintf( convert, formatstr, value ); dostr( buffer, left, convert ); } static void dostr( char **buffer, int *left, char *str ) { if(str)while(*str) dopr_outch( buffer, left, *str++ ); } static void dopr_outch( char **buffer, int *left, int c ) { if( *left > 0 ){ *(*buffer)++ = c; } *left -= 1; } /**************************************************************************** * static char *plp_errormsg( int err ) * returns a printable form of the * errormessage corresponding to the valie of err. * This is the poor man's version of sperror(), not available on all systems * Patrick Powell Tue Apr 11 08:05:05 PDT 1995 ****************************************************************************/ /****************************************************************************/ #if !defined(HAVE_STRERROR) # undef num_errors # if defined(HAVE_SYS_ERRLIST) # if !defined(HAVE_DECL_SYS_ERRLIST) extern const char *const sys_errlist[]; # endif # if defined(HAVE_SYS_NERR) # if !defined(HAVE_DECL_SYS_NERR) extern int sys_nerr; # endif # define num_errors (sys_nerr) # endif # endif # if !defined(num_errors) # define num_errors (-1) /* always use "errno=%d" */ # endif #endif static char * plp_Errormsg ( int err, char *buffer /* int maxlen = 32 */) { char *cp; #if defined(HAVE_STRERROR) cp = (void *)strerror(err); #else # if defined(HAVE_SYS_ERRLIST) if (err >= 0 && err < num_errors) { cp = (void *)sys_errlist[err]; } else # endif { (void) sprintf (buffer, "errno=%d", err); cp = buffer; } #endif return (cp); } #if defined(TEST) #include int main( void ) { char buffer[128]; char *t; char *test1 = "01234"; int n; errno = 1; buffer[0] = 0; n = plp_snprintf( buffer, 0, (t="test")); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t="errno '%m'")); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%s"), test1 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%12s"), test1 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%-12s"), test1 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%12.2s"), test1 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%-12.2s"), test1 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%g"), 1.25 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%g"), 1.2345 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%12g"), 1.25 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%12.1g"), 1.25 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%12.2g"), 1.25 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%12.3g"), 1.25 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%0*d"), 6, 1 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); #if defined(HAVE_LONG_LONG) n = plp_snprintf( buffer, sizeof(buffer), (t = "%llx"), 1, 2, 3, 4 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%llx"), (long long)1, (long long)2 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%qx"), 1, 2, 3, 4 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%qx"), (quad_t)1, (quad_t)2 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); #endif n = plp_snprintf( buffer, sizeof(buffer), (t = "0%x, 0%x"), (char *)(0x01234567), (char *)0, 0, 0, 0); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "0%x, 0%x"), (char *)(0x01234567), (char *)0x89ABCDEF, 0, 0, 0); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "0%x, 0%x"), t, 0, 0, 0, 0); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%f"), 1.25 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%f"), 1.2345 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%12f"), 1.25 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%12.2f"), 1.25 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%f"), 1.0 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%.0f"), 1.0 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%0.0f"), 1.0 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%1.0f"), 1.0 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%1.5f"), 1.0 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); n = plp_snprintf( buffer, sizeof(buffer), (t = "%5.5f"), 1.0 ); printf( "[%d] %s = '%s'\n", n, t, buffer ); return(0); } #endif ifhp-3.5.20/src/perlobj.h0100644000175100017510000002133710130541266015363 0ustar papowellpapowell/*************************************************************************** * RMI - The RMI Project * * Copyright 2000, Patrick Powell, San Diego, CA * papowell@astart.com * See LICENSE for conditions of use. * $Id: perlobj.h,v 1.3 2002/05/01 01:10:38 papowell Exp papowell $ ***************************************************************************/ #ifndef _PERLOBJS_H_ #define _PERLOBJS_H_ 1 /* * PERL Objects * The general approach is to model things a la Perl: We have an object with a type (NONE, STR, ARRAY, HASH, LIST, and USER_ARRAY) The STR object can be a 'real' string with dynamically allocated memory or a 'fake string' whose memory is actually in the object. We use these only in HASH objects to save a bit of space. The ARRAY is what it appears to be: an array of OBJS. The LIST is an array of pointers to dynamically allocate strings. The USER_ARRAY is basically a way to do a malloc of an array of structures for the user. We can even include a 'callback' to free them if we want... The HASH is a key/value array, sorted by key value, a la perl. */ # define VALUESEP " \t=" # define PRINTCAPSEP ":|" # define LISTSEP ",; \t" # define FILESEP ",;: \t\n\f\015" # define WHITESPACE " \t\n\f\015" # define LINEENDS "\n\014" enum OBJ_ST{ OBJ_ST_INT, OBJ_ST_DOUBLE, OBJ_ST_PTR, OBJ_ST_SHORTSTR, OBJ_ST_STR, OBJ_ST_BINSTR }; enum OBJ_T_OBJ { OBJ_T_NONE = 0, OBJ_T_SCALAR, OBJ_T_STR, OBJ_T_ARRAY, OBJ_T_HASH, OBJ_T_USER_ARRAY, OBJ_T_LIST }; struct obj_obj; typedef void (*obj_proc_free)( void *p ); typedef void (*obj_proc_dump)( int verbose, const char *indent, const char *header, void *p ); typedef void (*obj_proc_copy)( void *dest, void *src, MEMPASS ); typedef struct scalar_obj { union { long ival; /* integer (actually long) value */ double dval; /* double */ void *pval; /* pointer */ } value; } SCALAR_OBJ; typedef struct array_obj { int len, maxlen; /* current length, maximum length */ int size; /* size of element */ obj_proc_free free_user_obj; /* call this to free element for user array */ obj_proc_dump dump_user_obj; /* call this to dump */ obj_proc_copy copy_user_obj; /* call this to copy */ void *value; /* pointer to allocated memory */ } ARRAY_OBJ; #define SHORT_STR_LEN 24 typedef struct obj_obj { unsigned char type, subtype; union { SCALAR_OBJ scalar; ARRAY_OBJ array; char strval[SHORT_STR_LEN]; } info; } OBJ; typedef struct hash_element { OBJ key; OBJ value; } HASH_ELEMENT; /* allocate this much more for an object when doing an allocation */ #define STR_PAD 2 #define HASH_PAD 8 #define ARRAY_PAD 8 #define USER_ARRAY_PAD 8 #define LIST_PAD 8 /* PROTOTYPES */ const char *Type_to_str( int key ); const char *Subtype_to_str( int key ); int TYPE_OBJ( OBJ *p ); int SUBTYPE_OBJ( OBJ *p ); OBJ *NEW_OBJ( OBJ *p, MEMPASS ); OBJ *Clear_OBJ( OBJ *p ); void FREE_OBJ( OBJ *p ); long IVAL_OBJ( OBJ *p ); double DVAL_OBJ( OBJ *p ); void * PVAL_OBJ( OBJ *p ); /* VARARGS2 */ #ifdef HAVE_STDARGS OBJ * SET_SCALAR_OBJ( MEMPASS, OBJ *p, int type, ... ) #else # if defined(DEF) OBJ * SET_SCALAR_OBJ(va_alist) va_dcl # else OBJ * SET_SCALAR_OBJ() # endif #endif ; OBJ * SET_IVAL_OBJ( OBJ *p, int v, MEMPASS ); OBJ * SET_DVAL_OBJ( OBJ *p, double v, MEMPASS ); OBJ * SET_PVAL_OBJ( OBJ *p, void *v, MEMPASS ); int IS_STR_OBJ( OBJ *p ); char * VAL_SHORTSTR_OBJ( OBJ *p ); char * VAL_STR_OBJ( OBJ *p); void * VAL_BINSTR_OBJ( OBJ *p); int LEN_STR_OBJ( OBJ *p); int LEN_BINSTR_OBJ( OBJ *p); OBJ * SET_STR_OBJ(OBJ *p, const char *str, MEMPASS); OBJ * SET_SHORTSTR_OBJ(OBJ *p, const char *str, MEMPASS); OBJ * SET_MAXLEN_STR_OBJ( OBJ *p, int maxlen, MEMPASS ); int GET_MAXLEN_STR_OBJ( OBJ *p ); OBJ *SET_MAXLEN_BINSTR_OBJ( OBJ *p, int maxlen, MEMPASS); OBJ *SET_LEN_BINSTR_OBJ( OBJ *p, int len, MEMPASS); int GET_MAXLEN_BINSTR_OBJ( OBJ *p, int maxlen); OBJ * SET_BINSTR_OBJ( OBJ *p, const char *str, int len, MEMPASS ); /* VARARGS2 */ #ifdef HAVE_STDARGS OBJ * APPEND_STR_OBJ( MEMPASS, OBJ *p, ... ) #else # if defined(DEF) OBJ * APPEND_STR_OBJ(va_alist) va_dcl # else OBJ * APPEND_STR_OBJ() # endif #endif ; /* VARARGS2 */ #ifdef HAVE_STDARGS OBJ * PREFIX_STR_OBJ( MEMPASS, OBJ *p, ... ) #else # if defined(DEF) OBJ * PREFIX_STR_OBJ(va_alist) va_dcl # else OBJ * PREFIX_STR_OBJ() # endif #endif ; /* VARARGS2 */ #ifdef HAVE_STDARGS OBJ * APPEND_BINSTR_OBJ( OBJ *p, ... ) #else # if defined(DEF) OBJ * APPEND_BINSTR_OBJ(va_alist) va_dcl # else OBJ * APPEND_BINSTR_OBJ() # endif #endif ; OBJ * NEW_STR_OBJ( const char *str, MEMPASS ); OBJ * NEW_BINSTR_OBJ( void *str, int len, MEMPASS ); int LEN_ARRAY_OBJ( OBJ *p ); void * AT_ARRAY_OBJ( OBJ *p, int indexv ); OBJ * EXTEND_ARRAY_OBJ( OBJ *p, int len, int size, MEMPASS ); OBJ * TRUNC_ARRAY_OBJ( OBJ *p, int len, MEMPASS ); OBJ *SHIFT_DOWN_ARRAY_OBJ( OBJ *p, MEMPASS ); OBJ *ROTATE_DOWN_ARRAY_OBJ( OBJ *p, MEMPASS ); OBJ * NEW_ARRAY_OBJ( OBJ *p, MEMPASS); OBJ * NEW_USER_ARRAY_OBJ( OBJ *p, int size, obj_proc_free freeit, obj_proc_dump dumpit, obj_proc_copy copyit, MEMPASS ); int GET_SIZE_ARRAY_OBJ( OBJ *p ); OBJ * NEW_LIST_OBJ( OBJ *p, MEMPASS); int LEN_LIST_OBJ( OBJ *p ); char ** GET_LIST_OBJ( OBJ *p ); char * GET_ENTRY_LIST_OBJ( OBJ *p, int indexv ); OBJ * SET_ENTRY_LIST_OBJ( OBJ *p, int indexv, const char *s, MEMPASS ); OBJ * APPEND_LIST_OBJ( OBJ *p, const char *s, MEMPASS ); OBJ * APPEND_LIST_BIN_OBJ( OBJ *p, const char *s, int valuelen, MEMPASS ); OBJ * EXTEND_LIST_OBJ( OBJ *p, int len, MEMPASS ); int LEN_HASH_OBJ( OBJ *p ); OBJ * KEY_HASH_OBJ( OBJ *p, int indexv ); OBJ * VALUE_HASH_OBJ( OBJ *p, int indexv ); OBJ * GET_HASH_OBJ( OBJ *p, const char *key ); OBJ * SET_HASH_OBJ( OBJ *p, const char *key, OBJ *value, MEMPASS ); OBJ *SET_HASH_STR_OBJ( OBJ *p, const char *key, const char *str, MEMPASS ); char *GET_HASH_STR_OBJ( OBJ *p, const char *key, MEMPASS ); char *To_STR_CONV( OBJ *p, MEMPASS ); long To_IVAL_CONV( OBJ *p, MEMPASS ); OBJ *SET_HASH_IVAL_OBJ( OBJ *p, const char *key, int val, MEMPASS ); int GET_HASH_IVAL_OBJ( OBJ *p, const char *key ); OBJ *SET_HASH_DVAL_OBJ( OBJ *p, const char *key, double val, MEMPASS ); double GET_HASH_DVAL_OBJ( OBJ *p, const char *key ); OBJ *SET_HASH_PVAL_OBJ( OBJ *p, const char *key, void * val, MEMPASS ); void * GET_HASH_PVAL_OBJ( OBJ *p, const char *key ); void REMOVE_HASH_OBJ( OBJ *p, const char *key ); OBJ * NEW_HASH_OBJ(OBJ *p, MEMPASS); OBJ * COPY_OBJ( OBJ *dest, OBJ *p, MEMPASS ); void To_STR_OBJ( OBJ *p, MEMPASS ); void DUMP_OBJ( const char *header, OBJ *p); void SHORT_DUMP_OBJ( const char *header, OBJ *p); void REAL_DUMP_OBJ( int verbose, const char *indent, const char *header, OBJ *p); int Read_fd_STR_OBJ( OBJ **p_ptr, const char *filename, int fd, char *errstr, int errlen, MEMPASS ); int Read_file_STR_OBJ( OBJ **p_ptr, const char *filename, char *errstr, int errlen, MEMPASS ); OBJ *Split_STR_OBJ( OBJ *p, int nomod, char *str, int type, const char *linesep, const char *escape, int commentchar, int trim, char *keysep, int do_append, int lc, int flagvalues, int value_urlunesc, MEMPASS ); int NeedURLEsc( int c, int full ); int NeedURLEscStr( const char *s, int *extra, int full ); OBJ *URLEsc_OBJ( OBJ *p, const char *instr, int full, MEMPASS ); void URLUnEscStr( char *s ); OBJ *URLUnEsc_OBJ( OBJ *p ); int NeedBackslashEsc( char *str, char *escape ); int NeedBackslashEscStr( const char *s, int *extra, char *escape ); OBJ *BackslashEsc_OBJ( OBJ *p, const char *instr, char *escape, MEMPASS ); OBJ *Hash_to_LIST_OBJ( OBJ *list, OBJ *hash, char *sep, int urlesc, int full, char *backslash_esc, MEMPASS ); OBJ *Join_list_OBJ( OBJ *str, OBJ *list, char *prefix, char *suffix, MEMPASS ); OBJ *Hash_to_STR_OBJ( OBJ *str, OBJ *hash, char *prefix, char *suffix, char *sep, int urlesc, int full, char *backslash_esc, MEMPASS ); OBJ *Split_file_LIST_OBJ( OBJ *list, char *filelist ); int Read_file_list_OBJ( OBJ *output, const char *filenames, char *directories, int required, int doinclude, int depth, int maxdepth, int type, const char *linesep, const char *escape, int commentchar, int trim, char *keysep, int do_append, int lc, int flagvalues, int unesc, char *errmsg, int errlen, MEMPASS ) ; OBJ *Obj_to_STR_OBJ( OBJ *str, OBJ *obj, MEMPASS ); OBJ *Str_to_STR_OBJ( OBJ *str, char *s, MEMPASS ); OBJ *Str_obj_to_STR_OBJ( OBJ *str, OBJ *obj, MEMPASS ); OBJ *Hash_obj_to_STR_OBJ( OBJ *str, OBJ *obj, char *prefix, MEMPASS ); OBJ *Array_obj_to_STR_OBJ( OBJ *str, OBJ *obj, char *prefix, MEMPASS ); OBJ *List_obj_to_STR_OBJ( OBJ *str, OBJ *obj, char *prefix, MEMPASS ); OBJ *Obj_obj_to_STR_OBJ( OBJ *str, OBJ *obj, char *prefix, MEMPASS ); char *Parse_token_to_str( int c ); void Init_parse( char *str ); char *Get_parse_position( void ); int Get_parse_token( OBJ *str ); int Parse_hash_obj_str( OBJ *hash ); int Parse_array_obj_str( OBJ *array ); int Parse_obj_obj_str( OBJ **objp ); char *Parse_err_msg( void ); #endif ifhp-3.5.20/src/perlobj.c0100644000175100017510000023631410130541266015361 0ustar papowellpapowell/*************************************************************************** * RMI - The RMI Project * * Copyright 2002, Patrick Powell, San Diego, CA * papowell@astart.com * See LICENSE for conditions of use. * $Id: perlobj.c,v 1.8 2004/02/25 15:56:25 papowell Exp papowell $ ***************************************************************************/ /* * PERL Objects * * OBJ - int, long, double, void * * STR, BINSTR, ARRAY, HASH * * STR: dynamically allocated string, null terminated * BINSTR: dynamically allocated string, length specified * USER_ARRAY: array of user defined elements * ARRAY: array of OBJs * HASH: hash of OBJS * LIST: array of char *'s - i.e. char *v[] object. * */ #include "portable.h" #include "safemalloc.h" #include "safestrutil.h" #include "errormsg.h" #include "debug.h" #include "plp_snprintf.h" #include "perlobj.h" extern int Errorcode; #ifndef SMALLBUFFER # define SMALLBUFFER 512 #endif #ifndef LARGEBUFFER # define LARGEBUFFER 10240 #endif #ifdef DEMALLOC #undef CHECK #define CHECK if( dmalloc_verify(0) != DMALLOC_VERIFY_NOERROR ) exit(1); #else #undef CHECK #define CHECK #endif /* * allocate an object */ #undef PAIR #ifndef _UNPROTO_ # define PAIR(X) { #X , X } #else # define __string(X) "X" # define PAIR(X) { __string(X) , X } #endif /* * Type_to_str: handy debugging function */ struct key_val_ { char *key; int value; }; struct key_val_ st_obj_keys[] = { PAIR(OBJ_ST_INT), PAIR(OBJ_ST_DOUBLE), PAIR(OBJ_ST_PTR), PAIR(OBJ_ST_SHORTSTR), PAIR(OBJ_ST_STR), PAIR(OBJ_ST_BINSTR), {0,0}, }; struct key_val_ obj_keys[] = { PAIR(OBJ_T_NONE), PAIR(OBJ_T_SCALAR), PAIR(OBJ_T_STR), PAIR(OBJ_T_ARRAY), PAIR(OBJ_T_HASH), PAIR(OBJ_T_USER_ARRAY), PAIR(OBJ_T_LIST), {0,0}, }; static const char *Get_keystr_( int value, struct key_val_ *v ) { static char msg[32]; while( v->key ){ if( v->value == value ){ return( v->key ); } ++v; } SNPRINTF(msg,sizeof(msg)) "Unknown type %d", value); return(msg); } const char *Type_to_str( int key ) { return( Get_keystr_( key, obj_keys ) ); } const char *Subtype_to_str( int key ) { return( Get_keystr_( key, st_obj_keys ) ); } /* * get type and subtype. Note: this should be inlined... */ #ifndef INLINE_OBJ int TYPE_OBJ( OBJ *p ) { return( p?p->type:OBJ_T_NONE); } int SUBTYPE_OBJ( OBJ *p ) { return( p?p->subtype:0); } #endif /* * OBJ *NEW_OBJ( MEMPASS ) * - allocate new object */ #ifndef INLINE_OBJ OBJ *NEW_OBJ( OBJ *p, MEMPASS ) { if( p ){ Clear_OBJ(p); } else { p = malloc_or_die( sizeof( OBJ ), MEMPASSED ); memset(p,0,sizeof(p[0])); } return( p ); } #endif /* * Clear_OBJ( OBJ *p ) * Clear and free all of the memory associated with this object */ OBJ *Clear_OBJ( OBJ *p ) { int i; OBJ *vector; char **list; HASH_ELEMENT *element; DEBUGFC(DUTILS4){ DUMP_OBJ("Clear_OBJ", p); } if( !p ){ return p; } else { switch( p->type ){ case OBJ_T_NONE: break; case OBJ_T_USER_ARRAY: if( p->info.array.free_user_obj ){ for( i = 0; i < p->info.array.len; ++i ){ p->info.array.free_user_obj( AT_ARRAY_OBJ(p, i) ); } } safefree( p->info.array.value, MEMINFO ); break; case OBJ_T_SCALAR: break; case OBJ_T_STR: switch( p->subtype ){ default: Errorcode = -1; FATAL(LOG_ERR)"Clear_OBJ: type %d (%s) has bad subtype %d (%s)", p->type, Type_to_str(p->type), p->subtype, Subtype_to_str(p->subtype) ); break; case OBJ_ST_SHORTSTR: break; case OBJ_ST_STR: case OBJ_ST_BINSTR: safefree( p->info.array.value, MEMINFO ); break; } break; case OBJ_T_ARRAY: vector = p->info.array.value; for( i = 0; i < p->info.array.len; ++i ){ Clear_OBJ( &vector[i] ); } safefree( p->info.array.value, MEMINFO ); break; case OBJ_T_HASH: element = p->info.array.value; for( i = 0; i < p->info.array.len; ++i ){ Clear_OBJ( &element[i].key ); Clear_OBJ( &element[i].value ); } safefree( p->info.array.value, MEMINFO ); break; case OBJ_T_LIST: list = p->info.array.value; for( i = 0; i < p->info.array.len; ++i ){ if( list[i] ) safefree(list[i], MEMINFO); list[i] = 0; } safefree( p->info.array.value, MEMINFO ); break; } memset(p,0,sizeof(p[0])); } DEBUGF(DUTILS4)("Clear_OBJ: returning obj 0x%lx", Cast_ptr_to_long(p) ); return( p ); } /* * void FREE_OBJ( OBJ *p ) * Clear the object, then free it */ void FREE_OBJ( OBJ *p ) { if( p ){ Clear_OBJ( p ); safefree(p, MEMINFO); } } /* * get the scalar values and allocate a scalar object */ long IVAL_OBJ( OBJ *p ) { long v = 0; if( !p || p->type == OBJ_T_NONE ) return( 0 ); if( p->type != OBJ_T_SCALAR && p->type != OBJ_T_STR ){ Errorcode = -1; FATAL(LOG_ERR)"IVAL_OBJ: type %d (%s) not scalar or string", p->type, Type_to_str(p->type) ); } if( p->type == OBJ_T_SCALAR && p->subtype != OBJ_ST_INT ){ To_STR_OBJ(p, MEMINFO); v = strtol(p->info.array.value, 0, 0); } else if( p->type == OBJ_T_STR ){ v = strtol(p->info.array.value, 0, 0); } else { v = p->info.scalar.value.ival; } return( v ); } double DVAL_OBJ( OBJ *p ) { double v; if( !p || p->type == OBJ_T_NONE ) return( 0 ); if( p->type != OBJ_T_SCALAR && p->type != OBJ_T_STR ){ Errorcode = -1; FATAL(LOG_ERR)"DVAL_OBJ: type %d (%s) not scalar or string", p->type, Type_to_str(p->type) ); } if( p->type == OBJ_T_SCALAR && p->subtype != OBJ_ST_DOUBLE ){ To_STR_OBJ(p, MEMINFO); v = strtod(p->info.array.value, 0); } else if( p->type == OBJ_T_STR ){ v = strtod(p->info.array.value, 0); } else { v = p->info.scalar.value.dval; } return( v ); } void * PVAL_OBJ( OBJ *p ) { void *v; if( !p || p->type == OBJ_T_NONE ) return( 0 ); if( p->type != OBJ_T_SCALAR && p->type != OBJ_T_STR ){ Errorcode = -1; FATAL(LOG_ERR)"DVAL_OBJ: type %d (%s) not scalar or string", p->type, Type_to_str(p->type) ); } if( p->type == OBJ_T_SCALAR && p->subtype != OBJ_ST_PTR ){ To_STR_OBJ(p, MEMINFO); v = (void *)strtol(p->info.array.value, 0, 0); } else if( p->type == OBJ_T_STR ){ v = (void *)strtol(p->info.array.value, 0, 0); } else { v = p->info.scalar.value.pval; } return( v ); } /* VARARGS2 */ #ifdef HAVE_STDARGS OBJ * SET_SCALAR_OBJ( MEMPASS, OBJ *p, int type, ... ) #else # if defined(DEF) OBJ * SET_SCALAR_OBJ(va_alist) va_dcl # else OBJ * SET_SCALAR_OBJ() # endif #endif { #ifndef HAVE_STDARGS OBJ *p; const char *file; int line *file; int type; #endif VA_LOCAL_DECL VA_START (type); VA_SHIFT (file, const char *); VA_SHIFT (line, int); VA_SHIFT (p, OBJ *); VA_SHIFT (type, int); if( !p || p->type != OBJ_T_SCALAR ){ p = NEW_OBJ( p, MEMINFO ); } p->type = OBJ_T_SCALAR; p->subtype = type; p->subtype = type; switch( type ){ case OBJ_ST_INT: p->info.scalar.value.ival = va_arg( ap, int ); break; case OBJ_ST_DOUBLE: p->info.scalar.value.dval = va_arg( ap, double ); break; case OBJ_ST_PTR: p->info.scalar.value.pval = va_arg( ap, void * ); break; default: Errorcode = -1; FATAL(LOG_ERR)"SET_SCALAR_OBJ: sub type %d (%s) not scalar", type, Type_to_str(type) ); break; } VA_END; return( p ); } OBJ * SET_IVAL_OBJ( OBJ *p, int v, MEMPASS ) { p = NEW_OBJ( p, MEMPASSED ); p->type = OBJ_T_SCALAR; p->subtype = OBJ_ST_INT; p->info.scalar.value.ival = v; return(p); } OBJ * SET_DVAL_OBJ( OBJ *p, double v, MEMPASS ) { p = NEW_OBJ( p, MEMPASSED ); p->type = OBJ_T_SCALAR; p->subtype = OBJ_ST_DOUBLE; p->info.scalar.value.dval = v; return(p); } OBJ * SET_PVAL_OBJ( OBJ *p, void *v, MEMPASS ) { p = NEW_OBJ( p, MEMPASSED ); p->type = OBJ_T_SCALAR; p->subtype = OBJ_ST_PTR; p->info.scalar.value.pval = v; return(p); } /* * string manipulations */ int IS_STR_OBJ( OBJ *p ) { return( p && (p->type == OBJ_T_STR) ); } /* * get the string point from a short string (hash) or string */ char * VAL_SHORTSTR_OBJ( OBJ *p ) { if( p && p->type == OBJ_T_STR ){ switch( p->subtype ){ case OBJ_ST_SHORTSTR: return( p->info.strval ); default: return( p->info.array.value ); } } return( 0 ); } char * VAL_STR_OBJ( OBJ *p) { if( !p ) return( 0 ); if( p->type == OBJ_T_NONE ){ p->type = OBJ_T_STR; p->subtype = OBJ_ST_STR; p->info.array.size = 1; } else if( p->type == OBJ_T_SCALAR ){ To_STR_OBJ(p, MEMINFO); } else if( p->type != OBJ_T_STR || p->subtype != OBJ_ST_STR ){ Errorcode = -1; FATAL(LOG_ERR)"VAL_STR_OBJ: object %d (%s) is not OBJ_T_STR type or subtype %d (%s) is not OBJ_ST_STR", p->type, Type_to_str(p->type), p->subtype, Subtype_to_str(p->subtype) ); return( 0 ); } return( p->info.array.value ); } void * VAL_BINSTR_OBJ( OBJ *p) { if( !p ) return( 0 ); if( p->type == OBJ_T_NONE ){ p->type = OBJ_T_STR; p->subtype = OBJ_ST_BINSTR; p->info.array.size = 1; } else if( p->type != OBJ_T_STR || p->subtype != OBJ_ST_BINSTR ){ Errorcode = -1; FATAL(LOG_ERR)"VAL_BINSTR_OBJ: object %d (%s) not OBJ_T_STR type or subtype %d (%s) not OBJ_ST_BINSTR", p->type, Type_to_str(p->type), p->subtype, Subtype_to_str(p->subtype) ); return( 0 ); } return( (void *)p->info.array.value ); } int LEN_STR_OBJ( OBJ *p) { if( !p ) return( 0 ); if( p->type == OBJ_T_NONE ){ p->type = OBJ_T_STR; p->subtype = OBJ_ST_STR; p->info.array.size = 1; } else if( p->type != OBJ_T_STR && p->type != OBJ_ST_STR ){ Errorcode = -1; FATAL(LOG_ERR)"LEN_STR_OBJ: object %d (%s) not OBJ_T_STR type or subtype %d (%s) not OBJ_ST_STR", p->type, Type_to_str(p->type), p->subtype, Subtype_to_str(p->subtype) ); return( 0 ); } return( safestrlen( p->info.array.value ) ); } int LEN_BINSTR_OBJ( OBJ *p) { if( !p ) return( 0 ); if( p->type == OBJ_T_NONE ){ p->type = OBJ_T_STR; p->subtype = OBJ_ST_BINSTR; p->info.array.size = 1; } else if( p->type != OBJ_T_STR && p->type != OBJ_ST_BINSTR ){ Errorcode = -1; FATAL(LOG_ERR)"LEN_STR_OBJ: object %d (%s) not OBJ_T_STR type or subtype %d (%s) not OBJ_ST_BINSTR", p->type, Type_to_str(p->type), p->subtype, Subtype_to_str(p->subtype) ); return( 0 ); } return( p->info.array.len ); } OBJ * SET_STR_OBJ(OBJ *p, const char *str, MEMPASS) { int len = safestrlen(str); DEBUGF(DUTILS4)("SET_STR_OBJ: from %s, line %d, str='%s', obj 0x%lx", file, line, str, Cast_ptr_to_long(p) ); if( !str ) str = ""; if( !p || p->type != OBJ_T_STR || p->subtype != OBJ_ST_STR ){ p = NEW_OBJ( p, MEMPASSED ); p->type = OBJ_T_STR; p->subtype = OBJ_ST_STR; p->info.array.size = 1; } SET_MAXLEN_STR_OBJ( p, len, MEMPASSED ); memmove( p->info.array.value, str, len+1); return( p ); } /* * set the short key strings for the HASH object */ OBJ * SET_SHORTSTR_OBJ(OBJ *p, const char *str, MEMPASS) { int len; if( !p || str == 0 || p->type != OBJ_T_STR || (p->subtype != OBJ_ST_SHORTSTR) ){ p = NEW_OBJ( p, MEMPASSED ); p->type = OBJ_T_STR; p->subtype = OBJ_ST_SHORTSTR; p->info.array.size = 1; } if( !str ) str = ""; len = safestrlen(str); if( len < (int)sizeof(p->info.strval) ){ memmove( p->info.strval, str, len+1); } else { p->subtype = OBJ_ST_STR; SET_MAXLEN_STR_OBJ( p, len, MEMPASSED ); memmove( p->info.array.value, str, len+1); } return( p ); } /* * void SET_MAXLEN_STR_OBJ( OBJ *p, int maxlen) * allocate space long enough for the specified string length. * you may need to change the string type as well */ OBJ * SET_MAXLEN_STR_OBJ( OBJ *p, int maxlen, MEMPASS ) { if( !p || p->type != OBJ_T_STR || p->subtype != OBJ_ST_STR ){ p = NEW_OBJ( p, MEMPASSED ); p->type = OBJ_T_STR; p->subtype = OBJ_ST_STR; p->info.array.size = 1; } DEBUGF(DUTILS4)("SET_MAXLEN_STR_OBJ: obj 0x%lx, want %d, maxlen %d", Cast_ptr_to_long(p), maxlen, p->info.array.maxlen ); if( p->info.array.maxlen <= maxlen ){ maxlen += STR_PAD; DEBUGF(DUTILS4)("SET_MAXLEN_STR_OBJ: alloc maxlen %d", maxlen ); p->info.array.value = realloc_or_die( p->info.array.value, maxlen+1, MEMPASSED); p->info.array.maxlen = maxlen; } return( p ); } int GET_MAXLEN_STR_OBJ( OBJ *p ) { if( !p ){ /* Errorcode = -1; FATAL(LOG_ERR)"GET_MAXLEN_STR_OBJ: NULL object"); */ } else if( p->type == OBJ_T_NONE ){ p->type = OBJ_T_STR; p->subtype = OBJ_ST_STR; p->info.array.size = 1; } else if( p->type != OBJ_T_STR && p->type != OBJ_T_STR ){ Errorcode = -1; FATAL(LOG_ERR)"GET_MAXLEN_STR_OBJ: object %d (%s) not OBJ_T_STR or subtype %d (%s) is not OBJ_T_STR", p->type, Type_to_str(p->type), p->subtype, Subtype_to_str(p->subtype) ); return(0); } return( p->info.array.maxlen ); } OBJ *SET_MAXLEN_BINSTR_OBJ( OBJ *p, int maxlen, MEMPASS) { if( !p || p->type != OBJ_T_STR || p->subtype != OBJ_ST_BINSTR ){ p = NEW_OBJ( p, MEMPASSED ); p->type = OBJ_T_STR; p->subtype = OBJ_ST_BINSTR; p->info.array.size = 1; } DEBUGF(DUTILS4)("SET_MAXLEN_BINSTR_OBJ: want maxlen %d, current maxlen %d", maxlen, p->info.array.maxlen ); if( p->info.array.maxlen <= maxlen ){ p->info.array.value = realloc_or_die( p->info.array.value, maxlen+1, MEMPASSED); p->info.array.maxlen = maxlen; } return( p ); } OBJ *SET_LEN_BINSTR_OBJ( OBJ *p, int len, MEMPASS) { p = SET_MAXLEN_BINSTR_OBJ(p, len, MEMPASSED); p->info.array.len = len; return( p ); } int GET_MAXLEN_BINSTR_OBJ( OBJ *p, int maxlen) { int len; if( !p ) return(0); if( p->type != OBJ_T_STR && p->subtype != OBJ_ST_BINSTR ){ Errorcode = -1; FATAL(LOG_ERR)"GET_MAXLEN_BINSTR_OBJ: object %d (%s) not OBJ_T_STR or subtype %d (%s) is not OBJ_T_BINSTR", p->type, Type_to_str(p->type), p->subtype, Subtype_to_str(p->subtype) ); return(0); } len = p->info.array.maxlen; return( len ); } OBJ * SET_BINSTR_OBJ( OBJ *p, const char *str, int len, MEMPASS ) { if( !p || p->type != OBJ_T_STR || p->subtype != OBJ_ST_BINSTR ){ p = NEW_OBJ( p, MEMPASSED ); p->type = OBJ_T_STR; p->subtype = OBJ_ST_BINSTR; } SET_MAXLEN_BINSTR_OBJ(p,len,MEMPASSED); if( len ){ if( !str ){ Errorcode = -1; FATAL(LOG_ERR)"SET_BINSTR_OBJ: no str value" ); return( 0 ); } memmove( p->info.array.value, str, len ); } p->info.array.len = len; return( p ); } /* * APPEND_STR_OBJ( OBJ *p, char *v1, char *v2, ... , (char *)0 ) * - append the strings to the STR_OBJ p */ /* VARARGS2 */ #ifdef HAVE_STDARGS OBJ * APPEND_STR_OBJ( MEMPASS, OBJ *p, ... ) #else # if defined(DEF) OBJ * APPEND_STR_OBJ(va_alist) va_dcl # else OBJ * APPEND_STR_OBJ() # endif #endif { char *str; #ifndef HAVE_STDARGS OBJ *p; const char *file; int line; #endif VA_LOCAL_DECL VA_START (p); VA_SHIFT (file, char *); VA_SHIFT (line, int); VA_SHIFT (p, OBJ *); if( !p || p->type != OBJ_T_STR || p->subtype != OBJ_ST_STR ){ p = NEW_OBJ( p, MEMINFO ); p->type = OBJ_T_STR; p->subtype = OBJ_ST_STR; p->info.array.size = 1; SET_STR_OBJ(p,"",MEMINFO); } DEBUGFC(DUTILS4){ DUMP_OBJ( "APPEND_STR_OBJ: before", p); } while( (str = va_arg(ap, char *)) ){ int len = safestrlen(str); if( len ){ int olen = LEN_STR_OBJ( p ); SET_MAXLEN_STR_OBJ( p, olen+len, MEMINFO ); memmove(((char *)p->info.array.value)+olen, str, len+1); } } DEBUGFC(DUTILS4){ DUMP_OBJ( "APPEND_STR_OBJ: after", p); } VA_END; return( p ); } /* * PREFIX_STR_OBJ( OBJ *p, char *v1, char *v2, ... , (char *)0 ) * - prefix the strings to the STR_OBJ p */ /* VARARGS2 */ #ifdef HAVE_STDARGS OBJ * PREFIX_STR_OBJ( MEMPASS, OBJ *p, ... ) #else # if defined(DEF) OBJ * PREFIX_STR_OBJ(va_alist) va_dcl # else OBJ * PREFIX_STR_OBJ() # endif #endif { char *str; #ifndef HAVE_STDARGS OBJ *p; const char *file; int line; #endif VA_LOCAL_DECL VA_START (p); VA_SHIFT (file, char *); VA_SHIFT (line, int); VA_SHIFT (p, OBJ *); if( !p || p->type != OBJ_T_STR || p->subtype != OBJ_ST_STR ){ p = NEW_OBJ( p, MEMINFO ); p->type = OBJ_T_STR; p->subtype = OBJ_ST_STR; p->info.array.size = 1; SET_STR_OBJ(p,"",MEMINFO); } DEBUGFC(DUTILS4){ DUMP_OBJ( "PREFIX_STR_OBJ: before", p); } while( (str = va_arg(ap, char *)) ){ int len = safestrlen(str); if( len ){ int olen = safestrlen( p->info.array.value ); SET_MAXLEN_STR_OBJ( p, olen+len, MEMINFO ); *((char *)(p->info.array.value)+olen) = 0; memmove((char *)(p->info.array.value)+len, p->info.array.value, olen+1 ); memmove(p->info.array.value, str, len); } } DEBUGFC(DUTILS4){ DUMP_OBJ( "PREFIX_STR_OBJ: after", p); } VA_END; return( p ); } /* * APPEND_BINSTR_OBJ( OBJ *p, char *v1,int len1, char *v2, int len2,... , (char *)0 ) * - append the strings to the STR_OBJ p */ /* VARARGS2 */ #ifdef HAVE_STDARGS OBJ * APPEND_BINSTR_OBJ( OBJ *p, ... ) #else # if defined(DEF) OBJ * APPEND_BINSTR_OBJ(va_alist) va_dcl # else OBJ * APPEND_BINSTR_OBJ() # endif #endif { char *str; #ifndef HAVE_STDARGS OBJ *p; #endif VA_LOCAL_DECL VA_START (p); VA_SHIFT (p, OBJ *); if( !p || p->type != OBJ_T_STR || p->subtype != OBJ_ST_BINSTR ){ p = NEW_OBJ( p, MEMINFO ); p->type = OBJ_T_STR; p->subtype = OBJ_ST_BINSTR; p->info.array.size = 1; } while( (str = va_arg(ap, char *)) ){ int len = va_arg(ap, int); if( len ){ int olen = p->info.array.len; int nlen = olen + len; SET_MAXLEN_BINSTR_OBJ( p, nlen, MEMINFO ); memmove((char *)(p->info.array.value)+olen, str, len+1); p->info.array.len = nlen; } } VA_END; return( p ); } OBJ * NEW_STR_OBJ( const char *str, MEMPASS ) { return( SET_STR_OBJ(0, str, MEMPASSED )); } OBJ * NEW_BINSTR_OBJ( void *str, int len, MEMPASS ) { return( SET_BINSTR_OBJ(0, str, len, MEMPASSED) ); } /* * array manipulations */ int LEN_ARRAY_OBJ( OBJ *p ) { if( !p ){ return(0); } if( p->type == OBJ_T_NONE ){ p->type = OBJ_T_ARRAY; p->info.array.size = sizeof( p[0] ); } else if( p->type != OBJ_T_ARRAY && p->type != OBJ_T_USER_ARRAY ){ Errorcode = -1; FATAL(LOG_ERR)"LEN_ARRAY_OBJ: object %d (%s) not OBJ_T_ARRAY or OBJ_T_USER_ARRAY", p->type, Type_to_str(p->type) ); return( 0 ); } return( p->info.array.len ); } void * AT_ARRAY_OBJ( OBJ *p, int indexv ) { if( !p ){ Errorcode = -1; FATAL(LOG_ERR)"AT_ARRAY_OBJ: NULL OBJECT"); return( 0 ); } if( p->type != OBJ_T_ARRAY && p->type != OBJ_T_USER_ARRAY && p->type != OBJ_T_LIST){ Errorcode = -1; FATAL(LOG_ERR)"AT_ARRAY_OBJ: object %d (%s) not OBJ_T_ARRAY, OBJ_T_USER_ARRAY or OBJ_T_LIST", p->type, Type_to_str(p->type) ); return( 0 ); } if( indexv >= p->info.array.len ){ Errorcode = -1; FATAL(LOG_ERR)"AT_ARRAY_OBJ: index %d >= array len %d", indexv, p->info.array.len ); return( 0 ); } if( p->info.array.value == 0 ){ LOGMSG(LOG_ERR)"AT_ARRAY_OBJ: LOGIC ERROR - index %d, len %d, maxlen %d, no value obj 0x%lx", indexv, p->info.array.len, p->info.array.maxlen, Cast_ptr_to_long(p)); abort(); return( 0 ); } return( (OBJ *)((char *)p->info.array.value + p->info.array.size*indexv) ); } OBJ * EXTEND_ARRAY_OBJ( OBJ *p, int len, int size, MEMPASS ) { if( !p ){ Errorcode = -1; FATAL(LOG_ERR)"EXTEND_ARRAY_OBJ: NULL object"); return(0); } if( p->type == OBJ_T_NONE ){ if( !size ){ p->type = OBJ_T_ARRAY; p->info.array.size = sizeof( p[0] ); } else if( size ){ p->type = OBJ_T_USER_ARRAY; p->info.array.size = size; } } switch( p->type ){ case OBJ_T_ARRAY: case OBJ_T_USER_ARRAY: case OBJ_T_LIST: break; default: Errorcode = -1; FATAL(LOG_ERR)"EXTEND_ARRAY_OBJ: object %d (%s) not OBJ_T_ARRAY or OBJ_T_USER_ARRAY", p->type, Type_to_str(p->type) ); return( 0 ); } if( p->info.array.size == 0 ){ Errorcode = -1; FATAL(LOG_ERR)"EXTEND_ARRAY_OBJ: object %d (%s) has 0 size", p->type, Type_to_str(p->type) ); } if( len >= p->info.array.maxlen ){ int extra = 0; int oldlen = p->info.array.len; switch( p->type ){ case OBJ_T_USER_ARRAY: extra = USER_ARRAY_PAD; break; case OBJ_T_ARRAY: extra = ARRAY_PAD; break; case OBJ_T_LIST: extra = LIST_PAD; break; } p->info.array.maxlen = len+extra; p->info.array.value = realloc_or_die( p->info.array.value, (p->info.array.maxlen + 1) *p->info.array.size, MEMPASSED ); memset( (char *)(p->info.array.value) + p->info.array.size *oldlen, 0, (p->info.array.maxlen - oldlen + 1) * p->info.array.size ); } p->info.array.len = len; return p; } OBJ * TRUNC_ARRAY_OBJ( OBJ *p, int len, MEMPASS ) { if( !p || p->type == OBJ_T_NONE ){ p = NEW_OBJ(p, MEMPASSED); p->type = OBJ_T_ARRAY; p->info.array.size = sizeof( p[0] ); } else if( p->type != OBJ_T_ARRAY && p->type != OBJ_T_USER_ARRAY ){ Errorcode = -1; FATAL(LOG_ERR)"TRUNC_ARRAY_OBJ: object %d (%s) not OBJ_T_ARRAY or OBJ_T_USER_ARRAY", p->type, Type_to_str(p->type) ); return( 0 ); } if( p->info.array.size == 0 ){ Errorcode = -1; FATAL(LOG_ERR)"TRUNC_ARRAY_OBJ: object %d (%s) size zero", p->type, Type_to_str(p->type) ); return( 0 ); } while( p->info.array.len > len ){ void *d; --p->info.array.len; d = ((char *)(p->info.array.value) + p->info.array.size*p->info.array.len); if( p->type == OBJ_T_USER_ARRAY ){ if( p->info.array.free_user_obj ){ p->info.array.free_user_obj(d); } memset( d, 0, p->info.array.size); } else { Clear_OBJ((OBJ *)d); } } return p; } OBJ *SHIFT_DOWN_ARRAY_OBJ( OBJ *p, MEMPASS ) { int len; OBJ *s, *t; if( !p || p->type == OBJ_T_NONE ){ p = NEW_OBJ(p,MEMPASSED); p->type = OBJ_T_ARRAY; p->info.array.size = sizeof( p[0] ); } len = LEN_ARRAY_OBJ(p); if( len+1 >= p->info.array.maxlen ){ p = EXTEND_ARRAY_OBJ( p, len+1, 0, MEMPASSED ); p->info.array.len = len; } s = AT_ARRAY_OBJ(p,0); if( len ){ /* move the whole array down */ t = AT_ARRAY_OBJ(p,1); memmove(t,s,len * p->info.array.size); } memset(s,0, p->info.array.size); ++p->info.array.len; /*DUMP_OBJ("SHIFT_DOWN: after", p);*/ return(p); } OBJ *ROTATE_DOWN_ARRAY_OBJ( OBJ *p, MEMPASS ) { int len; OBJ *s, *t; if( !p || p->type == OBJ_T_NONE ){ p = NEW_OBJ( p, MEMPASSED ); p->type = OBJ_T_ARRAY; p->info.array.size = sizeof( p[0] ); } len = LEN_ARRAY_OBJ(p); /* shift the whole array down */ if( len+1 > p->info.array.maxlen ){ p = EXTEND_ARRAY_OBJ( p, len+1, 0, MEMPASSED ); p->info.array.len = len; } if( len > 1 ){ s = AT_ARRAY_OBJ(p,0); t = AT_ARRAY_OBJ(p,1); memmove(t,s,len * p->info.array.size); t = AT_ARRAY_OBJ(p,len); memmove(s,t,p->info.array.size); memset(t,0,p->info.array.size); } /*DUMP_OBJ("ROTATE_DOWN: after", p);*/ return(p); } OBJ * NEW_ARRAY_OBJ( OBJ *p, MEMPASS) { p = NEW_OBJ( p, MEMPASSED ); p->type = OBJ_T_ARRAY; p->info.array.size = sizeof( p[0] ); return(p); } OBJ * NEW_USER_ARRAY_OBJ( OBJ *p, int size, obj_proc_free freeit, obj_proc_dump dumpit, obj_proc_copy copyit, MEMPASS ) { if( size == 0 ){ Errorcode = -1; FATAL(LOG_ERR)"NEW_USER_ARRAY_OBJ: size zero"); return( 0 ); } p = NEW_OBJ(p, MEMPASSED); p->type = OBJ_T_USER_ARRAY; p->info.array.size = size; p->info.array.free_user_obj = freeit; p->info.array.dump_user_obj = dumpit; p->info.array.copy_user_obj = copyit; return(p); } /* * sizes */ int GET_SIZE_ARRAY_OBJ( OBJ *p ) { int size = 0; if( p ) switch( p->type ){ case OBJ_T_ARRAY: case OBJ_T_USER_ARRAY: size = p->info.array.size; break; case OBJ_T_STR: size = 1; break; } return( size ); } /* * list manipulations */ OBJ * NEW_LIST_OBJ( OBJ *p, MEMPASS) { p = NEW_OBJ( p, MEMPASSED ); p->type = OBJ_T_LIST; p->info.array.size = sizeof( char * ); return(p); } int LEN_LIST_OBJ( OBJ *p ) { if( !p ){ return(0); } if( p->type == OBJ_T_NONE ){ p->type = OBJ_T_LIST; p->info.array.size = sizeof( char *); } if( p->type != OBJ_T_LIST ){ Errorcode = -1; FATAL(LOG_ERR)"LEN_ARRAY_OBJ: object %d (%s) not OBJ_T_LIST", p->type, Type_to_str(p->type) ); return( 0 ); } return( p->info.array.len ); } char ** GET_LIST_OBJ( OBJ *p ) { if( !p ){ /*Errorcode = -1; FATAL(LOG_ERR)"GET_ENTRY_LIST_OBJ: NULL object");*/ return(0); } if( p->type == OBJ_T_NONE ){ p->type = OBJ_T_LIST; p->info.array.size = sizeof( char * ); } if( p->type != OBJ_T_LIST ){ Errorcode = -1; FATAL(LOG_ERR)"LEN_ARRAY_OBJ: object %d (%s) not OBJ_T_LIST", p->type, Type_to_str(p->type) ); return( 0 ); } return( p->info.array.value ); } char * GET_ENTRY_LIST_OBJ( OBJ *p, int indexv ) { char **sp; if( !p ){ Errorcode = -1; FATAL(LOG_ERR)"GET_ENTRY_LIST_OBJ: NULL object"); return(0); } if( p->type == OBJ_T_NONE ){ p->type = OBJ_T_LIST; p->info.array.size = sizeof( char * ); } if( p->type != OBJ_T_LIST ){ Errorcode = -1; FATAL(LOG_ERR)"LEN_ARRAY_OBJ: object %d (%s) not OBJ_T_LIST", p->type, Type_to_str(p->type) ); return( 0 ); } sp = AT_ARRAY_OBJ( p, indexv ); if( sp ){ return( *sp ); } return( 0 ); } OBJ * SET_ENTRY_LIST_OBJ( OBJ *p, int indexv, const char *s, MEMPASS ) { char **sp; if( !p ){ Errorcode = -1; FATAL(LOG_ERR)"SET_ENTRY_LIST_OBJ: NULL object"); return(0); } if( p && p->type == OBJ_T_NONE ){ p->type = OBJ_T_LIST; p->info.array.size = sizeof( char * ); } if( p->type != OBJ_T_LIST ){ Errorcode = -1; FATAL(LOG_ERR)"LEN_ARRAY_OBJ: object %d (%s) not OBJ_T_LIST", p->type, Type_to_str(p->type) ); return( 0 ); } sp = AT_ARRAY_OBJ( p, indexv ); *sp = safestrdup(s, MEMPASSED); return( p ); } OBJ * APPEND_LIST_OBJ( OBJ *p, const char *s, MEMPASS ) { int len; char **sp; if( !p || p->type == OBJ_T_NONE ){ p = NEW_LIST_OBJ( p, MEMPASSED ); } if( p->type != OBJ_T_LIST ){ Errorcode = -1; FATAL(LOG_ERR)"LEN_ARRAY_OBJ: object %d (%s) not OBJ_T_LIST", p->type, Type_to_str(p->type) ); return( 0 ); } len = p->info.array.len; if( len >= p->info.array.maxlen ){ EXTEND_LIST_OBJ(p,len+1,MEMPASSED); } p->info.array.len = len+1; sp = AT_ARRAY_OBJ( p, len ); *sp = safestrdup(s, MEMPASSED ); /*DEBUGFC(DUTILS4){ DUMP_OBJ( "APPEND_LIST_OBJ: ", p ); }*/ return( p ); } OBJ * APPEND_LIST_BIN_OBJ( OBJ *p, const char *s, int valuelen, MEMPASS ) { int len; char **sp; char *newval; if( !p || p->type == OBJ_T_NONE ){ p = NEW_LIST_OBJ( p, MEMPASSED ); } if( p->type != OBJ_T_LIST ){ Errorcode = -1; FATAL(LOG_ERR)"LEN_ARRAY_OBJ: object %d (%s) not OBJ_T_LIST", p->type, Type_to_str(p->type) ); return( 0 ); } len = p->info.array.len; if( len >= p->info.array.maxlen ){ EXTEND_LIST_OBJ(p,len+1,MEMPASSED); } p->info.array.len = len+1; sp = AT_ARRAY_OBJ( p, len ); newval = malloc_or_die(valuelen, MEMPASSED); memmove( newval, s, valuelen ); *sp = newval; DEBUGFC(DUTILS4){ DUMP_OBJ( "APPEND_LIST_OBJ: ", p ); } return( p ); } OBJ * EXTEND_LIST_OBJ( OBJ *p, int len, MEMPASS ) { if( !p ){ Errorcode = -1; FATAL(LOG_ERR)"EXTEND_LIST_OBJ: NULL object"); return(0); } if( p->type == OBJ_T_NONE ){ p->type = OBJ_T_LIST; p->info.array.size = sizeof( char * ); } if( p->type != OBJ_T_LIST ){ Errorcode = -1; FATAL(LOG_ERR)"LEN_ARRAY_OBJ: object %d (%s) not OBJ_T_LIST", p->type, Type_to_str(p->type) ); return( 0 ); } return( EXTEND_ARRAY_OBJ( p, len, 0, MEMPASSED ) ); } /* * hash manipulations */ int LEN_HASH_OBJ( OBJ *p ) { if( !p ) return( 0 ); if( p->type == OBJ_T_NONE ){ p->type = OBJ_T_HASH; p->info.array.size = sizeof( p[0] ); } if( p->type != OBJ_T_HASH ){ Errorcode = -1; FATAL(LOG_ERR)"LEN_HASH_OBJ: object %d (%s) not OBJ_T_HASH", p->type, Type_to_str(p->type) ); return( 0 ); } return( p->info.array.len ); } OBJ * KEY_HASH_OBJ( OBJ *p, int indexv ) { HASH_ELEMENT *element; if( !p ){ Errorcode = -1; FATAL(LOG_ERR)"KEY_HASH_OBJ: NULL object"); return(0); } if( p->type != OBJ_T_HASH ){ Errorcode = -1; FATAL(LOG_ERR)"KEY_HASH_OBJ: object %d (%s) not OBJ_T_HASH", p->type, Type_to_str(p->type) ); return( 0 ); } if( indexv < 0 || indexv >= p->info.array.len ){ Errorcode = -1; FATAL(LOG_ERR)"KEY_HASH_OBJ: object %d (%s) len %d, indexv %d out of bounds", p->type, Type_to_str(p->type), p->info.array.len, indexv ); return( 0 ); } element = p->info.array.value; return( &(element[indexv].key) ); } OBJ * VALUE_HASH_OBJ( OBJ *p, int indexv ) { HASH_ELEMENT *element; if( !p ){ Errorcode = -1; FATAL(LOG_ERR)"VALUE_HASH_OBJ: NULL object"); return(0); } if( p->type != OBJ_T_HASH ){ Errorcode = -1; FATAL(LOG_ERR)"VALUE_HASH_OBJ: object %d (%s) not OBJ_T_HASH", p->type, Type_to_str(p->type) ); return( 0 ); } if( indexv < 0 || indexv >= p->info.array.len ){ Errorcode = -1; FATAL(LOG_ERR)"VALUE_HASH_OBJ: object %d (%s) len %d, indexv %d out of bounds", p->type, Type_to_str(p->type), p->info.array.len, indexv ); return( 0 ); } element = p->info.array.value; return( &(element[indexv].value) ); } OBJ * GET_HASH_OBJ( OBJ *p, const char *key ) { DEBUGF(DUTILS4)( "GET_HASH_OBJ: OBJ 0x%lx, KEY '%s' \n", Cast_ptr_to_long(p), key); if( !p || p->type == OBJ_T_NONE || !key ){ return(0); } if( p->type != OBJ_T_HASH ){ Errorcode = -1; FATAL(LOG_ERR)"GET_HASH_OBJ: object %d (%s) not OBJ_T_HASH", p->type, Type_to_str(p->type) ); return( 0 ); } if( p->info.array.len == 0 ) return(0); /* now we do a binary search */ { int bottom = 0; int top = p->info.array.len-1; HASH_ELEMENT *element = p->info.array.value; while( bottom <= top ){ int middle = (bottom + top)/2; char *s = VAL_SHORTSTR_OBJ(&element[middle].key); int cmp = safestrcmp( key, s ); DEBUGF(DUTILS4)( "GET_HASH_OBJ: KEY '%s' bottom %d, middle %d, top %d, comparing '%s', cmp %d\n", key, bottom, middle, top, s, cmp ); if( cmp < 0 ){ top = middle-1; } else if( cmp > 0 ){ bottom = middle+1; } else { void *ptr = &(element[middle].value); DEBUGF(DUTILS4)( "GET_HASH_OBJ: OBJ 0x%lx, KEY '%s' FOUND 0x%lx\n", Cast_ptr_to_long(p), key, Cast_ptr_to_long(ptr)); return( ptr ); } } } return( 0 ); } OBJ * SET_HASH_OBJ( OBJ *p, const char *key, OBJ *value, MEMPASS ) { int bottom, top; int middle = 0, cmp = -1; int count = 0; char *s; HASH_ELEMENT *element; if( !p || p->type == OBJ_T_NONE ){ p = NEW_OBJ(p, MEMPASSED); p->type = OBJ_T_HASH; p->info.array.size = sizeof( element[0] ); } else if( p->type != OBJ_T_HASH ){ Errorcode = -1; FATAL(LOG_ERR)"SET_HASH_OBJ: object %d (%s) not OBJ_T_HASH", p->type, Type_to_str(p->type) ); return( 0 ); } if( key == 0 ){ Errorcode = -1; FATAL(LOG_ERR)"SET_HASH_OBJ: object %d (%s) - searching for NULL key", p->type, Type_to_str(p->type) ); return( 0 ); } /* now we do a binary search */ bottom = 0; top = p->info.array.len-1; element = p->info.array.value; DEBUGF(DUTILS4)("SET_HASH_OBJ: START '%s' bottom %d, top %d, len %d, maxlen %d\n", key, bottom, top, p->info.array.len, p->info.array.maxlen ); s = 0; while( bottom <= top ){ middle = (bottom + top)/2; s = VAL_SHORTSTR_OBJ(&element[middle].key); cmp = safestrcmp( key, s ); DEBUGF(DUTILS4)("SET_HASH_OBJ: KEY '%s' bottom %d, middle %d, top %d, compare '%s', cmp %d\n", key, bottom, middle, top,s, cmp ); if( cmp < 0 ){ top = middle-1; } else if( cmp > 0 ){ bottom = middle+1; } else { break; } } /* if cmp < 0, we find the place where it goes to > 0 */ DEBUGF(DUTILS4)( "SET_HASH_OBJ: FINAL '%s' bottom %d, middle %d, top %d, compare '%s', cmp %d\n", key, bottom, middle, top, element?s:0, cmp ); if( cmp ){ if( p->info.array.len >= p->info.array.maxlen ){ int oldmax = p->info.array.maxlen; p->info.array.maxlen += 1 + HASH_PAD; p->info.array.value = element = realloc_or_die( p->info.array.value, sizeof(element[0]) * p->info.array.maxlen, MEMPASSED ); memset(&element[oldmax], 0, sizeof(element[0])*(p->info.array.maxlen-oldmax)); } DEBUGFC(DUTILS4){ SHORT_DUMP_OBJ( "SET_HASH_OBJ: after extension", p ); } if( cmp < 0 ){ /* we need to move middle to end up one position */ } else if( cmp > 0 ){ /* we need to move middle+1 to end up one position */ ++middle; } count = p->info.array.len - middle; DEBUGF(DUTILS4)( "SET_HASH_OBJ: ADJUST middle %d, count %d\n", middle, count ); if( count ){ memmove( &element[middle+1], &element[middle], sizeof(element[0]) * count ); } ++p->info.array.len; memset( &element[middle], 0, sizeof( element[0] ) ); SET_SHORTSTR_OBJ( &element[middle].key, key, MEMPASSED ); } { void *ptr = &(element[middle].value); DEBUGF(DUTILS4)( "SET_HASH_OBJ: OBJ 0x%lx, KEY '%s' FOUND 0x%lx\n", Cast_ptr_to_long(p), key, Cast_ptr_to_long(ptr)); COPY_OBJ( ptr, value, MEMPASSED ); return( ptr ); } } /* * OBJ *SET_HASH_STR_OBJ( OBJ *p, const char *key, const char *str ) * * - set a hash value to a string */ OBJ *SET_HASH_STR_OBJ( OBJ *p, const char *key, const char *str, MEMPASS ) { OBJ *v = 0; if( str ){ v = GET_HASH_OBJ( p, key ); if( !v ){ v = SET_HASH_OBJ( p, key, 0, MEMPASSED ); } SET_STR_OBJ( v, str, MEMPASSED ); } else { REMOVE_HASH_OBJ( p, key ); } return(v); } /* * char *GET_HASH_STR_OBJ( OBJ *p, const char *key ) * * - get a string from a hash */ char *GET_HASH_STR_OBJ( OBJ *p, const char *key, MEMPASS ) { char *s = 0; OBJ *v = GET_HASH_OBJ( p, key ); if( v ){ To_STR_CONV(v, MEMPASSED); s = VAL_STR_OBJ( v ); } return(s); } /* * char *To_STR_CONV( OBJ *p ) * convert to string in place */ char *To_STR_CONV( OBJ *p, MEMPASS ) { char buffer[SMALLBUFFER]; if( p ){ switch( p->type ){ case OBJ_T_NONE: break; case OBJ_T_SCALAR: switch( p->subtype ){ case OBJ_ST_INT: SNPRINTF(buffer,sizeof(buffer)) "%ld", IVAL_OBJ(p) ); SET_STR_OBJ(p,buffer, MEMPASSED); break; case OBJ_ST_DOUBLE: SNPRINTF(buffer,sizeof(buffer)) "%f", DVAL_OBJ(p) ); SET_STR_OBJ(p,buffer, MEMPASSED); break; case OBJ_ST_PTR: SNPRINTF(buffer,sizeof(buffer)) "0x%lx", Cast_ptr_to_long(PVAL_OBJ(p)) ); SET_STR_OBJ(p,buffer, MEMPASSED); break; } break; case OBJ_T_STR: break; default: Errorcode = -1; FATAL(LOG_ERR)"To_STR_CONV: cannot convert object %d (%s)", p->type, Type_to_str(p->type) ); break; } } DEBUGFC(DUTILS4){ DUMP_OBJ( "To_STR_CONV", p ); } return( VAL_STR_OBJ(p) ); } /* * char *To_IVAL_CONV( OBJ *p ) * convert to string, return value */ long To_IVAL_CONV( OBJ *p, MEMPASS ) { long n = 0; if( p ){ switch( p->type ){ case OBJ_T_NONE: break; case OBJ_T_SCALAR: switch( p->subtype ){ case OBJ_ST_INT: n = IVAL_OBJ(p); break; case OBJ_ST_DOUBLE: n = DVAL_OBJ(p); break; case OBJ_ST_PTR: n = Cast_ptr_to_long(PVAL_OBJ(p)); break; } break; case OBJ_T_STR: n = strtol(VAL_STR_OBJ(p), 0, 0); break; default: Errorcode = -1; FATAL(LOG_ERR)"To_IVAL_CONV: cannot convert object %d (%s)", p->type, Type_to_str(p->type) ); break; } } DEBUGFC(DUTILS4){ DUMP_OBJ( "To_IVAL_CONV", p ); } return( n ); } /* * OBJ *SET_HASH_IVAL_OBJ( OBJ *p, const char *key, int val ) * * - set a hash value to an integer */ OBJ *SET_HASH_IVAL_OBJ( OBJ *p, const char *key, int val, MEMPASS ) { OBJ *v = SET_HASH_OBJ( p, key, 0, MEMPASSED ); SET_IVAL_OBJ( v, val, MEMPASSED ); return(v); } /* * int GET_HASH_IVAL_OBJ( OBJ *p, const char *key ) * * - get a string from a hash */ int GET_HASH_IVAL_OBJ( OBJ *p, const char *key ) { int n= 0; OBJ *v = GET_HASH_OBJ( p, key ); if( v ){ n = IVAL_OBJ(v); } return(n); } /* * OBJ *SET_HASH_DVAL_OBJ( OBJ *p, const char *key, int val ) * * - set a hash value to an integer */ OBJ *SET_HASH_DVAL_OBJ( OBJ *p, const char *key, double val, MEMPASS ) { OBJ *v = SET_HASH_OBJ( p, key, 0, MEMPASSED ); SET_DVAL_OBJ( v, val, MEMPASSED ); return(v); } /* * int GET_HASH_DVAL_OBJ( OBJ *p, const char *key ) * * - get a string from a hash */ double GET_HASH_DVAL_OBJ( OBJ *p, const char *key ) { double n= 0; OBJ *v = GET_HASH_OBJ( p, key ); if( v ){ n = DVAL_OBJ(v); } return(n); } /* * OBJ *SET_HASH_PVAL_OBJ( OBJ *p, const char *key, void * val ) * * - set a hash value to a pointer */ OBJ *SET_HASH_PVAL_OBJ( OBJ *p, const char *key, void * val, MEMPASS ) { OBJ *v = SET_HASH_OBJ( p, key, 0, MEMPASSED ); SET_PVAL_OBJ( v, val, MEMPASSED ); return(v); } /* * void * GET_HASH_PVAL_OBJ( OBJ *p, const char *key ) * * - get a pointer from a hash */ void * GET_HASH_PVAL_OBJ( OBJ *p, const char *key ) { void *n = 0; OBJ *v = GET_HASH_OBJ( p, key ); if( v ){ n = PVAL_OBJ( v ); } return(n); } void REMOVE_HASH_OBJ( OBJ *p, const char *key ) { DEBUGF(DUTILS4)( "REMOVE_HASH_OBJ: OBJ 0x%lx, KEY '%s' \n", Cast_ptr_to_long(p), key); if( !p ){ Errorcode = -1; FATAL(LOG_ERR)"REMOVE_HASH_OBJ: NULL object"); return; } if( p->type == OBJ_T_NONE ){ p->type = OBJ_T_HASH; } else if( p->type != OBJ_T_HASH ){ Errorcode = -1; FATAL(LOG_ERR)"REMOVE_HASH_OBJ: object %d (%s) not OBJ_T_HASH", p->type, Type_to_str(p->type) ); return; } if( key == 0 ){ Errorcode = -1; FATAL(LOG_ERR)"REMOVE_HASH_OBJ: object %d (%s) - searching for NULL key", p->type, Type_to_str(p->type) ); return; } if( p->info.array.len == 0 ) return; /* now we do a binary search */ { int count; int bottom = 0; int top = p->info.array.len-1; HASH_ELEMENT *element = p->info.array.value; while( bottom <= top ){ int middle = (bottom + top)/2; char *s = VAL_SHORTSTR_OBJ(&element[middle].key); int cmp = safestrcmp( key, s ); DEBUGF(DUTILS4)( "REMOVE_HASH_OBJ: KEY '%s' bottom %d, middle %d, top %d, comparing '%s', cmp %d\n", key, bottom, middle, top, s, cmp ); if( cmp < 0 ){ top = middle-1; } else if( cmp > 0 ){ bottom = middle+1; } else { count = p->info.array.len - middle - 1; DEBUGF(DUTILS4)( "REMOVE_HASH_OBJ: FOUND '%s' middle %d, count %d\n", s, middle, count ); /* we remove this element */ Clear_OBJ(&element[middle].key); Clear_OBJ(&element[middle].value); if( count ){ memmove( &element[middle], &element[middle+1], sizeof(element[0]) *count ); } --p->info.array.len; break; } } } } OBJ * NEW_HASH_OBJ(OBJ *p, MEMPASS) { p = NEW_OBJ( p, MEMPASSED ); p->type = OBJ_T_HASH; p->info.array.size = sizeof( HASH_ELEMENT ); return(p); } /* * object manipulations */ OBJ * COPY_OBJ( OBJ *dest, OBJ *p, MEMPASS ) { HASH_ELEMENT *newelement, *oldelement; int i, len; DEBUGFC(DUTILS4){ DUMP_OBJ( "COPY_OBJ - in", p ); } if( !p ){ return(p); } dest = NEW_OBJ(dest,MEMPASSED); dest->type = p->type; dest->subtype = p->subtype; switch( p->type ){ case OBJ_T_NONE: break; case OBJ_T_SCALAR: memmove( dest, p, sizeof(p[0]) ); break; case OBJ_T_STR: dest->info.array.size = p->info.array.size; switch( p->subtype ){ case OBJ_ST_SHORTSTR: SET_SHORTSTR_OBJ(dest,VAL_SHORTSTR_OBJ(p), MEMPASSED ); break; case OBJ_ST_STR: SET_STR_OBJ(dest,VAL_STR_OBJ(p), MEMPASSED ); break; case OBJ_ST_BINSTR: SET_BINSTR_OBJ(dest,VAL_BINSTR_OBJ(p), LEN_BINSTR_OBJ(p), MEMPASSED ); break; default: Errorcode = -1; FATAL(LOG_ERR)"COPY_OBJ: unknonwn OBJ_T_STR subtype %d (%s)", p->subtype, Subtype_to_str(p->subtype) ); break; } break; case OBJ_T_LIST: case OBJ_T_ARRAY: case OBJ_T_USER_ARRAY: /* copy all of the information */ dest->info.array.size = p->info.array.size; dest->info.array.free_user_obj = p->info.array.free_user_obj; dest->info.array.dump_user_obj = p->info.array.dump_user_obj; dest->info.array.copy_user_obj = p->info.array.copy_user_obj; /* allocate the storage area */ if( p->type == OBJ_T_LIST ){ EXTEND_LIST_OBJ( dest, p->info.array.len, MEMPASSED ); } else if( p->info.array.len ){ EXTEND_ARRAY_OBJ( dest, p->info.array.len, 0, MEMPASSED ); } for( i = 0; i < p->info.array.len; ++i ){ void *s = AT_ARRAY_OBJ(p,i); void *d = AT_ARRAY_OBJ(dest,i); switch( p->type ){ case OBJ_T_LIST: { char *t = ((char **)s)[0]; *((char **)d) = safestrdup(t,MEMPASSED); } break; case OBJ_T_ARRAY: COPY_OBJ(d,s,MEMPASSED); break; case OBJ_T_USER_ARRAY: if( dest->info.array.copy_user_obj ){ (dest->info.array.copy_user_obj)(d,s,MEMPASSED); } else { memmove(d,s,dest->info.array.size); } break; } } break; case OBJ_T_HASH: dest->info.array.size = sizeof(newelement[0]); len = dest->info.array.len = p->info.array.len; dest->info.array.maxlen = len + HASH_PAD; dest->info.array.value = realloc_or_die( dest->info.array.value, sizeof(newelement[0]) * dest->info.array.maxlen, MEMPASSED ); memset(dest->info.array.value, 0, sizeof(newelement[0])*(dest->info.array.maxlen)); if( len ){ newelement = dest->info.array.value; oldelement = p->info.array.value; for( i = 0; i < len; ++i ){ SET_SHORTSTR_OBJ(&newelement[i].key, VAL_SHORTSTR_OBJ(&oldelement[i].key), MEMPASSED); COPY_OBJ(&newelement[i].value, &oldelement[i].value, MEMPASSED); } } break; default: Errorcode = -1; FATAL(LOG_ERR)"COPY_OBJ: unknonwn object %d (%s)", p->type, Type_to_str(p->type) ); break; } DEBUGFC(DUTILS4){ DUMP_OBJ( "COPY_OBJ - out", dest ); } return( dest ); } /* * convert OBJ to a string object */ void To_STR_OBJ( OBJ *p, MEMPASS ) { char buffer[SMALLBUFFER]; buffer[0] = 0; if( !p ){ Errorcode = -1; FATAL(LOG_ERR)"To_STR_OBJ: 0 object pointer"); } switch( p->type ){ case OBJ_T_NONE: SET_STR_OBJ(p,"", MEMPASSED); break; case OBJ_T_SCALAR: switch( p->subtype ){ case OBJ_ST_INT: SNPRINTF(buffer,sizeof(buffer)) "%ld", IVAL_OBJ(p) ); SET_STR_OBJ(p,buffer, MEMPASSED); break; case OBJ_ST_DOUBLE: SNPRINTF(buffer,sizeof(buffer)) "%f", DVAL_OBJ(p) ); SET_STR_OBJ(p,buffer, MEMPASSED); break; case OBJ_ST_PTR: SNPRINTF(buffer,sizeof(buffer)) "0x%lx", Cast_ptr_to_long(PVAL_OBJ(p)) ); SET_STR_OBJ(p,buffer, MEMPASSED); break; } break; case OBJ_T_STR: switch( p->subtype ){ case OBJ_ST_STR: break; case OBJ_ST_SHORTSTR: safestrncpy(buffer,VAL_SHORTSTR_OBJ(p)); SET_STR_OBJ(p,buffer, MEMPASSED); break; } break; default: Errorcode = -1; FATAL(LOG_ERR)"To_STR_OBJ: cannot convert object %d (%s)", p->type, Type_to_str(p->type) ); break; } DEBUGFC(DUTILS4){ DUMP_OBJ( "To_STR_OBJ", p ); } } void DUMP_OBJ( const char *header, OBJ *p) { REAL_DUMP_OBJ( 1, "", header, p); } void SHORT_DUMP_OBJ( const char *header, OBJ *p) { REAL_DUMP_OBJ( 0, "", header, p); } void REAL_DUMP_OBJ( int verbose, const char *indent, const char *header, OBJ *p) { char buffer[LARGEBUFFER], *s; char newindent[SMALLBUFFER]; HASH_ELEMENT *element; int len, i, n, extra; buffer[0] = 0; len = 0; if( header == 0 ){ header = "????"; }; if( indent == 0 ){ indent = "....."; }; SNPRINTF(newindent, sizeof(newindent)) "%s ", indent); if( verbose ){ SNPRINTF( buffer+len, sizeof(buffer)-len) "%s%s - OBJ 0x%lx (TYPE %s, SUBTYPE %s)", indent, header, Cast_ptr_to_long(p), p?Type_to_str(p->type):"", p?Subtype_to_str(p->subtype):"" ); } else { SNPRINTF( buffer+len, sizeof(buffer)-len) "%s%s - %s%s", indent, header, p?Type_to_str(p->type):"", p?"":" " ); } header = " "; len = strlen(buffer); if( p ){ switch( p->type ){ case OBJ_T_NONE: if( verbose ){ SNPRINTF( buffer+len, sizeof(buffer)-len) " len %d, maxlen %d, size %d, value 0x%lx", p->info.array.len, p->info.array.maxlen, p->info.array.size, Cast_ptr_to_long(p->info.array.value) ); } else { SNPRINTF( buffer+len, sizeof(buffer)-len) ""); } LOGDEBUG("%s",buffer); break; case OBJ_T_USER_ARRAY: SNPRINTF( buffer+len, sizeof(buffer)-len) " len %d, maxlen %d, size %d, value 0x%lx", p->info.array.len, p->info.array.maxlen, p->info.array.size, Cast_ptr_to_long(p->info.array.value) ); LOGDEBUG("%s",buffer); if( p->info.array.dump_user_obj ){ for( i = 0; i < p->info.array.len; ++i ){ SNPRINTF( buffer, sizeof(buffer)) "[%d] ",i ); (p->info.array.dump_user_obj)( verbose, newindent, buffer, AT_ARRAY_OBJ( p, i ) ); } } break; case OBJ_T_SCALAR: switch( p->subtype ){ case OBJ_ST_INT: SNPRINTF( buffer+len, sizeof(buffer)-len) " = %ld (0x%lx)", IVAL_OBJ(p), IVAL_OBJ(p) ); LOGDEBUG("%s",buffer); break; case OBJ_ST_DOUBLE: SNPRINTF( buffer+len, sizeof(buffer)-len) " = %f", DVAL_OBJ(p) ); LOGDEBUG("%s",buffer); break; case OBJ_ST_PTR: SNPRINTF( buffer+len, sizeof(buffer)-len) " = 0x%lx", Cast_ptr_to_long(PVAL_OBJ(p))); LOGDEBUG("%s",buffer); break; } break; case OBJ_T_STR: switch( p->subtype ){ case OBJ_ST_SHORTSTR: case OBJ_ST_STR: s = VAL_SHORTSTR_OBJ(p); n = GET_MAXLEN_STR_OBJ(p); if( verbose ){ SNPRINTF( buffer+len, sizeof(buffer)-len) " len %d, maxlen %d, value 0x%lx '%s'", safestrlen(s), n, Cast_ptr_to_long(s), s ); } else { SNPRINTF( buffer+len, sizeof(buffer)-len) " '%s'", s ); } LOGDEBUG("%s",buffer); break; case OBJ_ST_BINSTR: if( verbose ){ SNPRINTF( buffer+len, sizeof(buffer)-len) " len %d, maxlen %d, value 0x%lx", p->info.array.len, p->info.array.maxlen, Cast_ptr_to_long( p->info.array.value) ); } else { SNPRINTF( buffer+len, sizeof(buffer)-len) " len %d", p->info.array.len ); } LOGDEBUG("%s",buffer); buffer[0] = 0; if( p->info.array.value ){ for( i = 0; i < p->info.array.len; ++i ){ if( !( i%16 ) ) { if( i ){ len = strlen(buffer); SNPRINTF( buffer+len, sizeof(buffer)-len) "\n" ); } len = strlen(buffer); SNPRINTF( buffer+len, sizeof(buffer)-len) "%s%s[0x%02x] ", indent, i?"":header, i?"":" ", i ); } len = strlen(buffer); SNPRINTF(buffer+len, sizeof(buffer)-len) " %02x", ((unsigned char *)p->info.array.value)[i] ); } LOGDEBUG("%s", buffer ); } break; } break; case OBJ_T_ARRAY: case OBJ_T_LIST: extra = (p->type == OBJ_T_LIST)?1:0; if( verbose ){ SNPRINTF( buffer+len, sizeof(buffer)-len) " len %d, maxlen %d, size %d, value 0x%lx", p->info.array.len, p->info.array.maxlen, p->info.array.size, Cast_ptr_to_long( p->info.array.value) ); } else { SNPRINTF( buffer+len, sizeof(buffer)-len) " len %d", p->info.array.len ); } LOGDEBUG("%s",buffer); buffer[0] = 0; for( i = 0; i < p->info.array.len; ++i ){ if( p->type == OBJ_T_ARRAY ){ SNPRINTF( buffer, sizeof(buffer)) "[%d] ",i ); REAL_DUMP_OBJ(verbose, newindent, buffer, &((OBJ *)(p->info.array.value))[i]); } else if( p->type == OBJ_T_LIST ){ int len; char *s = 0; SNPRINTF( buffer, sizeof(buffer)) "%s[%d] ",newindent, i ); len = strlen(buffer); if( p->info.array.value) s = ((char **)(p->info.array.value))[i]; if( verbose ){ SNPRINTF( buffer+len, sizeof(buffer)-len) " STR 0x%lx '%s' ",Cast_ptr_to_long(s), s ); } else { SNPRINTF( buffer+len, sizeof(buffer)-len) " '%s' ", s ); } LOGDEBUG("%s",buffer); } } if( extra ){ SNPRINTF( buffer, sizeof(buffer)) "%s[%d] ",newindent, i ); if( p->type == OBJ_T_LIST ){ int len = strlen(buffer); char *s = 0; if( p->info.array.value) s = ((char **)(p->info.array.value))[i]; SNPRINTF( buffer+len, sizeof(buffer)-len) " 0x%lx", Cast_ptr_to_long(s) ); LOGDEBUG("%s",buffer); } } break; case OBJ_T_HASH: if( verbose ){ SNPRINTF( buffer+len, sizeof(buffer)-len) " len %d, maxlen %d, value 0x%lx", p->info.array.len, p->info.array.maxlen, Cast_ptr_to_long( p->info.array.value) ); } else { SNPRINTF( buffer+len, sizeof(buffer)-len) " len %d", p->info.array.len ); } LOGDEBUG("%s",buffer); buffer[0] = 0; element = p->info.array.value; for( i = 0; i < p->info.array.len; ++i ){ if( verbose ){ SNPRINTF( buffer, sizeof(buffer)) "[%d] key ",i ); REAL_DUMP_OBJ(verbose, newindent, buffer, &element[i].key); SNPRINTF( buffer, sizeof(buffer)) " value "); REAL_DUMP_OBJ(verbose, newindent, buffer, &element[i].value); } else { SNPRINTF( buffer, sizeof(buffer)) "[%d] HASH key '%s' ",i, VAL_SHORTSTR_OBJ(&element[i].key) ); REAL_DUMP_OBJ(verbose, newindent, buffer, &element[i].value); } } break; default: SNPRINTF( buffer+len, sizeof(buffer)-len) " UNKNOWN OBJ TYPE" ); LOGDEBUG("%s",buffer); } } else { LOGDEBUG("%s", buffer ); } } /* * OBJ * Read_fd_STR_OBJ( OBJ **p, int fd, char *errstr, int errlen ) * Read a file into the STR OBJ *p. * Returns: < 0 if error, errstr set to error message * >= 0 if no error */ int Read_fd_STR_OBJ( OBJ **p_ptr, const char *filename, int fd, char *errstr, int errlen, MEMPASS ) { int n; OBJ *p = *p_ptr; char buffer[LARGEBUFFER]; *p_ptr = p = SET_STR_OBJ(p, "", MEMPASSED); while( (n = read( fd, buffer,sizeof(buffer)-1)) > 0 ){ buffer[n] = 0; APPEND_STR_OBJ( MEMPASSED, p, buffer, 0 ); } if( n < 0 ){ SNPRINTF(errstr,errlen)"Read_fd_STR_OBJ: error reading fd %d, file '%s' - %s", fd, filename, strerror(errno) ); } return( n ); } /* * int Read_file_STR_OBJ( OBJ **p, const char *file, char *errstr, int errlen, MEMPASS ) * Read a file into the STR OBJ p. * Returns: < 0, 0 if no error, errstr set to error message * p - string object */ int Read_file_STR_OBJ( OBJ **p_ptr, const char *filename, char *errstr, int errlen, MEMPASS ) { int n, fd = open( filename, O_RDONLY, 0 ); if( fd < 0 ){ SNPRINTF(errstr,errlen)"Read_file_STR_OBJ: error opening file '%s' - '%s'", file, strerror(errno) ); return( -1 ); } n = Read_fd_STR_OBJ( p_ptr, filename, fd, errstr, errlen, MEMPASSED ); close(fd); return( n ); } /* * OBJ *Split_STR_OBJ( OBJ *p, int nomod, char *str, * int type, const char *linesep, char *escape, * int commentchar, int trim, * const char *keysep, int do_append, int lowercase, int flagvalues, int unesc ) * * Split a string up into lines or a hash. The 'str' value will * be modified in this process. If nomodify is nonzero, use * a copy of the string. * * * If type == OBJ_T_ARRAY, then we return an array of lines * type == OBJ_T_HASH, then we return a hash of the values * * For OBJ_ARRAY: * * Split the input on all characters in 'linesep'. * If the character in linesep is also in escape and is prefaced by * \ (i.e. - it is escaped), then do not split on it. * * If trim != 0 then \ is replaced by blanks, and then * leading and trailing whitespace and blank lines are removed along * with CR characters. * * If commentchar != 0, i.e. - commentchar = '#', * then remove all text following '#' to the end of a line. * Note that this is done after trimming a line. * * * For OBJ_HASH: * We do all of the splitting, and then for each line, we use the * characters in 'keysep' to spit each line into 'keyvalue' * pairs, and then use 'key' as a hash key. * * If do_append is nonzero, then we let + append the value * to the exisiting value and - prefix the value with * as the separator if needed * * If the lowercase is nonzero, then lowercase the key * * If the flagvalues is nonzero and a key does not have a value, * then set the value to {key=>1}; * if it has the form 'key@' then set it to {key=>0}. * * If the 'unesc' value is nonzero, then we URL unescape the value * * Example: split up a file of the form * ' line1 \\n line2\n line3' -> ['line1 line2', 'line3'] * Split( p, "...", OBJ_ARRAY, "\n", "\n", '#', 1, 0, 0) * Example: split up a line of the form below into hash entries: * v1=p1:v1=p2: v3=p3 : = {v1=>p1, v3=>p3 } * Split( p, "...", OBJ_HASH, ":", ":", / comment / 0, / trim / 1, * / keysep / "=", 1,) */ OBJ *Split_STR_OBJ( OBJ *p, int nomod, char *str, int type, const char *linesep, const char *escape, int commentchar, int trim, char *keysep, int do_append, int lc, int flagvalues, int value_urlunesc, MEMPASS ) { OBJ *v, *strduplicate = 0; char *s, *t, *end, *value, *start; int count, len, c, doesc; if( !p || p->type != type ){ p = NEW_OBJ(p, MEMPASSED); if( type == OBJ_T_ARRAY ){ p = NEW_ARRAY_OBJ( p, MEMPASSED ); } else if( type == OBJ_T_HASH ){ p = NEW_HASH_OBJ( p, MEMPASSED ); } else if( type == OBJ_T_LIST ){ p = NEW_LIST_OBJ( p, MEMPASSED ); } } if( nomod ){ strduplicate = SET_STR_OBJ( strduplicate, str, MEMINFO ); str = VAL_STR_OBJ(strduplicate); } if( type == OBJ_T_ARRAY || type == OBJ_T_LIST ){ count = 1; len = p->info.array.len; if( linesep ) for( s = str; s && (s = strpbrk(s,linesep)); ++s ) ++count; DEBUGF(DUTILS4)( "Split_STR_OBJ: count %d, len %d, maxlen %d", count, len, p->info.array.maxlen ); /* set up array */ p = EXTEND_ARRAY_OBJ( p, len+count, 0, MEMPASSED ); p->info.array.len = len; } /* now we split the string up and process the lines */ for( s = str; (start = s) && cval(s); s = end ){ again: /* look for an unescaped end of line */ c = 0; if( (end = safestrpbrk(s,linesep)) ){ c = cval(end); *end++ = 0; } DEBUGFC(DUTILS4){ char b[256]; SNPRINTF(b,sizeof(b)-6) "%s", start ); if( start && safestrlen(b) != safestrlen(start) ) safestrncat(b,"..."); DEBUGF(DUTILS4)( "Split_STR_OBJ: line '%s'", b ); } /* now remove stuff after comments */ if( commentchar && (t = safestrchr(s,commentchar)) ){ while( s != t && safestrchr( escape, cval(t) ) && cval(end-1) != '\\' ){ t = safestrchr(t+1,commentchar); } while( t && t < end ){ *t++ = 0; } } /* now we check to see if we have an escaped line */ if( end-s > 1 && end[-2] == '\\' ){ /* backup */ --end; *end = c; /* whitespace is a special case */ if( isspace(c) ){ *end = ' '; } memmove(end-1,end,strlen(end)+1); s = end; goto again; } s = start; if( trim ){ while( isspace(cval(s)) ) ++s; for( len = strlen(s); len > 0 && isspace(cval(s+len-1)); --len ); s[len] = 0; } if( trim && !cval(s) ){ continue; } DEBUGF(DUTILS4)( "Split_STR_OBJ: result '%s'", s ); if( type == OBJ_T_LIST ){ APPEND_LIST_OBJ(p,s,MEMINFO); } else if( type == OBJ_T_ARRAY ){ len = p->info.array.len; p = EXTEND_ARRAY_OBJ( p, len+1, 0, MEMPASSED ); v = AT_ARRAY_OBJ( p,len ); SET_STR_OBJ(v,s, MEMPASSED); } else if( type == OBJ_T_HASH ){ int append = 0, prefix = 0; doesc = 1; if( (value = safestrpbrk(s,keysep)) ){ *value++ = 0; while( isspace(cval(value)) ) ++value; if( do_append ){ len = strlen( s ); if( len > 0 ){ int c = cval(s+len-1); if( c == '-' ){ prefix = 1; s[len-1] = 0; } else if( c == '+' ){ append = 1; s[len-1] = 0; } } } for( len = strlen( s ); len > 0 && isspace(cval(s+len-1)); --len); s[len] = 0; } else { if( flagvalues ){ value = "1"; len = strlen( s ); if( cval(s+len-1) == '@' ){ s[len-1] = 0; value = "0"; } } doesc = 0; } if( lc ) lowercase(s); if( value_urlunesc && doesc ) URLUnEscStr( value ); if( !ISNULL(s) ){ DEBUGF(DUTILS4)( "Split_STR_OBJ: key '%s', value '%s', append %d, prefix '%d'", s, value, append, prefix ); if( (append || prefix) ){ OBJ *obj = GET_HASH_OBJ(p, s); if( !obj ){ SET_HASH_STR_OBJ(p,s,value, MEMPASSED); } else { char m[2]; m[0] = do_append; m[1] = 0; if( prefix ){ PREFIX_STR_OBJ(MEMINFO,obj,value,m, 0); } else if( append ){ APPEND_STR_OBJ(MEMINFO,obj,m,value, 0); } } DEBUGF(DUTILS4)( "Split_STR_OBJ: append/prefix result '%s'", VAL_STR_OBJ(obj) ); } else { SET_HASH_STR_OBJ(p,s,value, MEMPASSED); } } } } DEBUGFC(DUTILS1){ SHORT_DUMP_OBJ( "Split_STR_OBJ - done", p ); } FREE_OBJ( strduplicate ); strduplicate = 0; return(p); } /* * OBJ *SemiURLEsc( OBJ *p, const char *str ) * Semi URL Escape a string to the STR_OBJ p * if p is 0, allocate a new string * Note: the str cannot be p's value */ int NeedURLEsc( int c, int full ) { if( full ){ return( !isprint(c) || (!isalnum(c) && !strchr("_-", c )) ); } return( !isprint(c) || strchr( "?+,;:'%\\\"", c ) ); } /* * int NeedURLEscStr( const char *s, int *extra, int full ) * Check to see if Semi URL Escape is needed * return: 0 - not needed, != needed, extra set to extra length */ int NeedURLEscStr( const char *s, int *extra, int full ) { int c, v = 0, count = 0; DEBUGF(DUTILS4)("NeedURLEscStr: '%s'", s ); if( ISNULL(s) ) return (0); for( ; (c = cval(s)); ++s ){ if( full ){ if( NeedURLEsc(c,full) ){ v = 1; if( c != ' '){ count += 2; } } } else { if( NeedURLEsc(c, full) ){ v = 1; count += 2; } } DEBUGF(DUTILS4)("NeedURLEscStr: full %d, check '%c' = %d, count %d", full, c , v, count ); } if( extra ) *extra = count; return(v); } OBJ *URLEsc_OBJ( OBJ *p, const char *instr, int full, MEMPASS ) { int c, extra = 0; char *str; p = SET_STR_OBJ(p, instr, MEMPASSED); DEBUGF(DUTILS4)("URLEsc_OBJ: full %d, str '%s'", full, instr ); if( NeedURLEscStr( instr, &extra, full ) ){ DEBUGF(DUTILS4)("URLEsc: extra %d, len %d" , extra, strlen(instr) ); if( extra ){ SET_MAXLEN_STR_OBJ( p, extra + strlen(instr), MEMPASSED ); } for( str = VAL_STR_OBJ(p); (c = cval(instr)); ++instr ){ if( full && c == ' ' ){ *str++ = '+'; } else if( NeedURLEsc( c, full ) ){ SNPRINTF(str,4)"%%%02x", c ); str += strlen(str); } else { *str++ = c; } } if( str ) *str = 0; } DEBUGFC(DUTILS4){ DUMP_OBJ("URLEsc_OBJ: result", p ); } return( p ); } void URLUnEscStr( char *s ) { char *t; int c; if( !ISNULL(s) ){ for( t = s; (c = cval(s)); ++s ){ if( c == '+' ){ *t++ = ' '; } else if( c != '%' ){ *t++ = c; } else { char val[3]; ++s; val[0] = *s; ++s; val[1] = *s; val[2] = 0; *t++ = strtol(val,0,16); } } *t = 0; } } OBJ *URLUnEsc_OBJ( OBJ *p ) { DEBUGFC(DUTILS4){ DUMP_OBJ("URLUnEsc: ", p ); } if( !p ) return (0); if( p->type != OBJ_T_STR || p->subtype != OBJ_ST_STR ){ Errorcode = -1; FATAL(LOG_ERR)"URLUnEsc: object %d (%s) not OBJ_T_STR or subtype %d (%s) not OBJ_T_STR", p->type, Type_to_str(p->type), p->subtype, Subtype_to_str(p->subtype) ); return(0); } URLUnEscStr(VAL_STR_OBJ(p)); return( p ); } /* * general backslash escape */ int NeedBackslashEsc( char *str, char *escape ) { return( safestrpbrk( str, escape ) != 0); } int NeedBackslashEscStr( const char *s, int *extra, char *escape ) { int c, v = 0, count = 0; DEBUGF(DUTILS4)("NeedBackslashEscStr: '%s'", s ); if( ISNULL(s) ) return (0); for( ; (c = cval(s)); ++s ){ if( safestrchr( escape, c ) ){ v = 1; count += 1; } DEBUGF(DUTILS4)("NeedBackslashEscStr: check '%c' = %d, count %d", c , v, count ); } if( extra ) *extra = count; return(v); } /* * Backslash escape a string */ OBJ *BackslashEsc_OBJ( OBJ *p, const char *instr, char *escape, MEMPASS ) { int c, extra = 0; char *str; p = SET_STR_OBJ(p, instr, MEMPASSED); DEBUGF(DUTILS4)("BackslashEsc: str '%s', escape '%s'", instr, escape ); if( NeedBackslashEscStr( instr, &extra, escape ) ){ DEBUGF(DUTILS4)("BackslashEsc: extra %d, len %d" , extra, strlen(instr) ); if( extra ){ SET_MAXLEN_STR_OBJ( p, extra + strlen(instr), MEMPASSED ); } for( str = VAL_STR_OBJ(p); (c = cval(instr)); ++instr ){ if( safestrchr( escape, c ) ){ *str++ = '\\'; } *str++ = c; } if( str ) *str = 0; } DEBUGFC(DUTILS4){ DUMP_OBJ("BackslashEsc: result", p ); } return( p ); } /**************************************************************************************** * convert a hash to a list. * The general format is: key=value ****************************************************************************************/ OBJ *Hash_to_LIST_OBJ( OBJ *list, OBJ *hash, char *sep, int urlesc, int full, char *backslash_esc, MEMPASS ) { int hashindex, hashcount; char *key, *value; OBJ *esc_str = 0, *backslash_str = 0, *append_str = 0; DEBUGFC(DUTILS3){ SHORT_DUMP_OBJ("Hash_to_LIST - input", hash ); } if( !sep ) sep = ""; for( hashindex = 0, hashcount = LEN_HASH_OBJ(hash); hashindex < hashcount; ++hashindex ){ key = VAL_SHORTSTR_OBJ( KEY_HASH_OBJ(hash,hashindex) ); value = VAL_STR_OBJ( VALUE_HASH_OBJ(hash,hashindex) ); DEBUGF(DUTILS3)("Hash_to_list: [%d] '%s' = '%s'", hashindex,key, value ); if( urlesc ){ esc_str = URLEsc_OBJ( esc_str, value, full, MEMPASSED ); DEBUGF(DUTILS3)("Hash_to_list: URL escape '%s' -> '%s'", value, VAL_STR_OBJ(esc_str) ); value = VAL_STR_OBJ( esc_str ); } if( backslash_esc ){ backslash_str = BackslashEsc_OBJ( backslash_str, value, backslash_esc, MEMPASSED ); DEBUGF(DUTILS3)("Hash_to_list: Backslash escape '%s' -> '%s'", value, VAL_STR_OBJ(backslash_str) ); value = VAL_STR_OBJ( backslash_str ); } append_str = SET_STR_OBJ( append_str, key, MEMPASSED ); APPEND_STR_OBJ( MEMPASSED, append_str, sep, value, 0 ); DEBUGF(DUTILS3)("Hash_to_list: final '%s' = '%s' -> '%s'", key, value, VAL_STR_OBJ(append_str) ); list = APPEND_LIST_OBJ( list, VAL_STR_OBJ(append_str), MEMPASSED ); } FREE_OBJ(esc_str); esc_str = 0; FREE_OBJ(backslash_str); backslash_str = 0; FREE_OBJ(append_str); append_str = 0; DEBUGFC(DUTILS3){ SHORT_DUMP_OBJ("Hash_to_LIST - output", list ); } return( list ); } /************************************************* * hash and list output format *************************************************/ OBJ *Join_list_OBJ( OBJ *str, OBJ *list, char *prefix, char *suffix, MEMPASS ) { int listindex, listcount; char *s; for( listindex = 0, listcount = LEN_LIST_OBJ(list); listindex < listcount; ++listindex ){ if( (s = GET_ENTRY_LIST_OBJ(list,listindex)) ){ str = APPEND_STR_OBJ( MEMPASSED, str, prefix?prefix:"", s, suffix, 0 ); } } return( str ); } /************************************************** * hash of string values to a string * * OBJ *Hash_to_str_OBJ( OBJ *str, OBJ *hash, char *prefix, char *suffix, * int urlesc, int full, char *backslash_esc ) * hash - convert this to 'key=value' list * prefix, suffix - for start and end of entries * urlesc, full - if urlesc is set, do URLescape on values, full sets level * backslash_esc - list of chars to backslash escape **************************************************/ OBJ *Hash_to_STR_OBJ( OBJ *str, OBJ *hash, char *prefix, char *suffix, char *sep, int urlesc, int full, char *backslash_esc, MEMPASS ) { OBJ *list = Hash_to_LIST_OBJ( 0, hash, sep, urlesc, full, backslash_esc, MEMPASSED ); str = Join_list_OBJ( str, list, prefix, suffix, MEMPASSED ); FREE_OBJ( list ); list = 0; return( str ); } /* * int Read_file_list_OBJ( * int required - 0, files are not required * != 0, files must be present * char *filelist - a whitespace, comma, colon, semicolon * (FILESEP) separated list of files or filters. * char *directories - look in these directories if specified * * char *sep, int sort, char *keysep, int uniq, int trim, int marker ) * read the model information from these files * we use Split_STR_OBJ: * OBJ *Split_STR_OBJ( OBJ *p, int nomod, char *str, * int type, const char *linesep, const char *escape, * int commentchar, int trim, * char *keysep, int lc, int flagvalues, int unesc, MEMPASS ) * * Note: this is used to read in the various configuration files. * It really is a general purpose beast that will generate LISTS or * HASH values. * * We assume that we have a list of files that contain * configuration or other information. The files in this * list cannot be filters. * By default, the configuration file information consists of * lines of the following format: * # --- comment to end of line * xxxxx -> 'xxxx', i.e. ignore leading and trailing whitespace * If you have hash values, then these are of the form: * xx, xx@, xx \s*value, xx\s*=\s*value. We are brutal and will * assume that if you pass a string in, then we can destroy it. * This means that you better make sure to use a copy of the string. */ /* * OBJ *Split_file_LIST_OBJ( OBJ *list, char *filelist ) * Split a list of file names - destroys filelist * This is a handy utility function for splitting up file lists. */ OBJ *Split_file_LIST_OBJ( OBJ *list, char *filelist ) { DEBUGF(DUTILS2)("Split_file_LIST_OBJ: input '%s'", filelist); list = Split_STR_OBJ( /*p*/list, /*nomod*/1, /*str*/ filelist, /*type*/OBJ_T_LIST, /*linesep*/FILESEP, /*escape*/FILESEP, /*comment*/ 0, /*trim*/1, /*keysep*/0,/*do_append*/0, /*lc*/0, /*flagvalues*/ 0, /*value_urlunesc*/0, MEMINFO ); DEBUGFC(DUTILS2){ DUMP_OBJ("Split_file_LIST_OBJ:", list); } return( list ); } /* * The top level function to implement Read_file_list_OBJ. * * We assume that we have a list of files that contain * configuration or other information. The files in this * list cannot be filters. * By default, the configuration file information consists of * lines of the following format: * # --- comment to end of line * xxxxx -> 'xxxx', i.e. ignore leading and trailing whitespace * If you have hash values, then these are of the form: * xx, xx@, xx \s*value, xx\s*=\s*value */ int Read_file_list_OBJ( OBJ *output, const char *filenames, char *directories, int required, int doinclude, int depth, int maxdepth, int type, const char *linesep, const char *escape, int commentchar, int trim, char *keysep, int do_append, int lc, int flagvalues, int unesc, char *errmsg, int errlen, MEMPASS ) { OBJ *liststr = 0; /* filelist image */ OBJ *filelist = 0; /* split up list */ OBJ *filelines = 0; /* lines in file */ OBJ *fileimage = 0; /* image of file */ OBJ *includefile = 0; /* included file */ OBJ *dirs = 0; /* included file */ char path[MAXPATHLEN]; struct stat statb; int status = 0, listlen, listindex, linecount, lineno, c, found, includecount, iline; char *filename, *s, *t; DEBUGF(DUTILS3)("Read_file_list_OBJ: '%s', doinclude %d, directories '%s'", filenames, doinclude, directories ); errmsg[0] = 0; if( doinclude && depth > maxdepth ){ SNPRINTF(errmsg, errlen) "recursion depth %d exceeds maximum %d for file '%s'", depth, maxdepth, filenames ); status = -1; goto done; } liststr = SET_STR_OBJ( liststr, filenames, MEMINFO ); filelist = Split_file_LIST_OBJ( 0, VAL_STR_OBJ(liststr)); listlen = LEN_LIST_OBJ( filelist ); /* work our way down the list of files */ dirs = Split_STR_OBJ( /*p*/dirs,/*nomod*/1, /*str*/ directories, /*type*/ OBJ_T_LIST,LISTSEP, LISTSEP, 0, 1, 0, 0, 0, 0, /*value_urlunesc*/0, MEMINFO ); for( listindex = 0; listindex < listlen; ++listindex ){ filename = GET_ENTRY_LIST_OBJ( filelist, listindex); /* check to see if it is there, and then get the image */ if( cval(filename) != '/' && LEN_LIST_OBJ(dirs) ){ int dirindex, dirlen, found; found = 0; for( dirindex = 0, dirlen = LEN_LIST_OBJ(dirs); dirindex < dirlen; ++dirindex ){ int len; safestrncpy(path,GET_ENTRY_LIST_OBJ(dirs,dirindex)); len = safestrlen(path); if( cval(path+len-1) != '/' ){ SNPRINTF(path+len,sizeof(path)-len) "%s", "/" ); len = safestrlen(path); } SNPRINTF(path+len,sizeof(path)-len) "%s", filename ); DEBUGF(DUTILS3)("Read_file_list_OBJ: checking '%s'", path ); if( (found = !stat( path, &statb )) ){ break; } } if( !found ){ if( required ){ SNPRINTF(errmsg, errlen) "cannot stat required file '%s' in '%s'", filename, directories ); status = -1; goto done; } else { continue; } } } else { safestrncpy(path,filename); if( stat( path, &statb ) == -1 ){ if( required ){ SNPRINTF(errmsg, errlen) "cannot stat required file '%s'", filename ); status = -1; goto done; } continue; } } if( (status = Read_file_STR_OBJ( &fileimage, path, errmsg, errlen, MEMINFO)) < 0 ){ goto done; } /* if we do not do includes, then we can be brutal */ if( !doinclude ){ output = Split_STR_OBJ( /*p*/output,/*nomod*/0, /*str*/ VAL_STR_OBJ(fileimage), type, linesep, escape, commentchar, trim, keysep, do_append, lc, flagvalues, /*value_urlunesc*/unesc, MEMINFO ); } else { /* we must process the file line by line */ filelines = Split_STR_OBJ( /*p*/filelines, /*nomod*/0, /*str*/ VAL_STR_OBJ(fileimage), OBJ_T_LIST, linesep, escape, commentchar, trim, keysep, do_append, lc, flagvalues, /*value_urlunesc*/unesc, MEMINFO ); for( lineno = 0, linecount = LEN_LIST_OBJ( filelines ); lineno < linecount; ++lineno ){ /* check each line for an include */ s = GET_ENTRY_LIST_OBJ( filelines, lineno ); if( !s ) continue; found = 0; if( (t = safestrpbrk( s, WHITESPACE )) ){ c = *t; *t = 0; found = !safestrcasecmp( s, "include" ); *t = c; } /* if it is one, then we do a recursive call to * read the list of files. This is very simple */ if( found ){ DEBUGF(DUTILS3)("Read_file_list_OBJ: include '%s'", t ); includefile = NEW_LIST_OBJ( includefile, MEMINFO ); status = Read_file_list_OBJ( /*output*/includefile, /*filenames*/t,/*directories*/directories,/*required*/1, doinclude, depth+1, maxdepth, /*type*/OBJ_T_LIST, linesep, escape, commentchar, trim, keysep, do_append, lc, flagvalues, /*value_urlunesc*/unesc, errmsg, errlen, MEMINFO ); if( status < 0 ){ int len = strlen( errmsg ); SNPRINTF(errmsg+len,errlen-len) " from '%s'", filename ); goto done; } for( iline = 0, includecount = LEN_LIST_OBJ(includefile); iline < includecount; ++iline ){ s = GET_ENTRY_LIST_OBJ( includefile, iline ); if( type == OBJ_T_LIST ){ output = APPEND_LIST_OBJ( output, s, MEMINFO ); } else if( type == OBJ_T_HASH ){ output = Split_STR_OBJ( /*p*/output, /*nomod*/0, /*str*/ s, type, linesep, escape, commentchar, trim, keysep, do_append, lc, flagvalues, /*value_urlunesc*/unesc, MEMINFO ); } } } else { if( type == OBJ_T_LIST ){ output = APPEND_LIST_OBJ( output, s, MEMINFO ); } else if( type == OBJ_T_HASH ){ output = Split_STR_OBJ( /*p*/output, /*nomod*/0, /*str*/ s, type, linesep, escape, commentchar, trim, keysep, do_append, lc, flagvalues, /*value_urlunesc*/unesc, MEMINFO ); } } } } } done: DEBUGFC(DUTILS1){ DUMP_OBJ("Read_file_list_OBJ:", output); } FREE_OBJ(liststr); liststr = 0; FREE_OBJ(filelist); filelist = 0; FREE_OBJ(filelines); filelines = 0; FREE_OBJ(fileimage); fileimage = 0; FREE_OBJ(includefile); includefile = 0; return( status ); } /* * convert object to string representation * hash = \{ * [string => obj][,string => obj]* * \} * array = \[ [obj][ , obj]* \] * string = "...." OR '....' OR [a-zA-Z0-9_\-]+ * backslash escape \\, ' or " in string */ OBJ *Obj_to_STR_OBJ( OBJ *str, OBJ *obj, MEMPASS ) { str = Obj_obj_to_STR_OBJ(str,obj,"",MEMPASSED); return( str ); } /* * Str_obj_to_STR_OBJ - we append a string value * to the string. If none (NULL string) do not append * anything. */ static char safestr[] = "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "0123456789" "-_"; OBJ *Str_to_STR_OBJ( OBJ *str, char *s, MEMPASS ) { OBJ *escstr = 0; char *t; int c = 0; DEBUGF(DUTILS1)("Str_to_STR_OBJ - in '%s'", s); if( s ){ for( t = s; (c = cval(t)) && strchr(safestr,c); ++t ); DEBUGF(DUTILS1)("Str_to_STR_OBJ - escape at '%s'", t); if( c || !cval(s) ){ escstr = BackslashEsc_OBJ(escstr,s,"\"\\", MEMPASSED ); escstr = PREFIX_STR_OBJ(MEMPASSED,escstr,"\"",0); escstr = APPEND_STR_OBJ(MEMPASSED,escstr,"\"",0); s = VAL_STR_OBJ(escstr); } DEBUGF(DUTILS1)("Str_to_STR_OBJ - setting '%s'", s); str = APPEND_STR_OBJ(MEMPASSED,str,s,0); } FREE_OBJ(escstr); escstr = 0; DEBUGFC(DUTILS1){ SHORT_DUMP_OBJ("Str_to_STR_OBJ - out", str); } return( str ); } OBJ *Str_obj_to_STR_OBJ( OBJ *str, OBJ *obj, MEMPASS ) { char *s = VAL_SHORTSTR_OBJ(obj); DEBUGFC(DUTILS1){ SHORT_DUMP_OBJ("Str_obj_to_STR_OBJ - in", obj); } str = Str_to_STR_OBJ( str, s, MEMPASSED ); DEBUGFC(DUTILS1){ SHORT_DUMP_OBJ("Str_obj_to_STR_OBJ - out", str); } return( str ); } /* * Hash_obj_to_STR_OBJ( OBJ*str, OBJ *hash, char *prefix, MEMPASS ) * we generate * ... { * key => * value gets prefix' ' */ OBJ *Hash_obj_to_STR_OBJ( OBJ *str, OBJ *obj, char *prefix, MEMPASS ) { OBJ *p = 0; char *s; int i; p = SET_STR_OBJ(p,"",MEMINFO); APPEND_STR_OBJ(MEMPASSED,p,prefix," "); s = VAL_STR_OBJ(p); DEBUGF(DUTILS1)("Hash_obj_to_STR_OBJ: new prefix '%s'", s ); DEBUGFC(DUTILS1){ SHORT_DUMP_OBJ("Hash_obj_to_STR_OBJ - in", obj); } str = APPEND_STR_OBJ(MEMPASSED,str,"{",0); for( i = 0; i < LEN_HASH_OBJ(obj); ++i ){ char *key = VAL_SHORTSTR_OBJ(KEY_HASH_OBJ(obj,i)); OBJ *value = VALUE_HASH_OBJ(obj,i); if( i ){ APPEND_STR_OBJ(MEMINFO,str,",",0); } APPEND_STR_OBJ(MEMINFO,str,"\n", s,0); Str_to_STR_OBJ( str, key, MEMPASSED ); APPEND_STR_OBJ(MEMINFO,str,"=>",0); Obj_obj_to_STR_OBJ( str, value, s, MEMPASSED ); } APPEND_STR_OBJ(MEMPASSED,str,"\n", s, "}",0); FREE_OBJ(p); p = 0; DEBUGFC(DUTILS1){ SHORT_DUMP_OBJ("Hash_obj_to_STR_OBJ - out", str); } return( str ); } /* * Array_obj_to_STR_OBJ( OBJ*str, OBJ *array, char *prefix, MEMPASS ) * we generate * ... { * key => * value gets prefix' ' */ OBJ *Array_obj_to_STR_OBJ( OBJ *str, OBJ *obj, char *prefix, MEMPASS ) { OBJ *p = 0; char *s; int i; p = SET_STR_OBJ(p,"",MEMINFO); APPEND_STR_OBJ(MEMPASSED,p,prefix," "); s = VAL_STR_OBJ(p); DEBUGFC(DUTILS1){ SHORT_DUMP_OBJ("Array_obj_to_STR_OBJ - in", obj); } str = APPEND_STR_OBJ(MEMPASSED,str,"[",0); for( i = 0; i < LEN_ARRAY_OBJ(obj); ++i ){ OBJ *value = AT_ARRAY_OBJ(obj,i); if( i ){ APPEND_STR_OBJ(MEMINFO,str,",",0); } APPEND_STR_OBJ(MEMINFO,str,"\n", s,0); Obj_obj_to_STR_OBJ( str, value, s, MEMPASSED ); } APPEND_STR_OBJ(MEMPASSED,str,"\n", s, "]",0); FREE_OBJ(p); p = 0; DEBUGFC(DUTILS1){ SHORT_DUMP_OBJ("Array_obj_to_STR_OBJ - out", str); } return( str ); } /* * List_obj_to_STR_OBJ( OBJ*str, OBJ *array, char *prefix, MEMPASS ) * we generate * ... { * key => * value gets prefix' ' */ OBJ *List_obj_to_STR_OBJ( OBJ *str, OBJ *obj, char *prefix, MEMPASS ) { OBJ *p = 0; char *s; int i; p = SET_STR_OBJ(p,"",MEMINFO); APPEND_STR_OBJ(MEMPASSED,p,prefix," "); s = VAL_STR_OBJ(p); DEBUGFC(DUTILS1){ SHORT_DUMP_OBJ("List_obj_to_STR_OBJ - in", obj); } str = APPEND_STR_OBJ(MEMPASSED,str,"[",0); for( i = 0; i < LEN_LIST_OBJ(obj); ++i ){ char *value = GET_ENTRY_LIST_OBJ(obj,i); if( i ){ APPEND_STR_OBJ(MEMINFO,str,",",0); } APPEND_STR_OBJ(MEMINFO,str,"\n", s,0); Str_to_STR_OBJ( str, value, MEMPASSED ); } APPEND_STR_OBJ(MEMPASSED,str,"\n", s, "]",0); FREE_OBJ(p); p = 0; DEBUGFC(DUTILS1){ SHORT_DUMP_OBJ("List_obj_to_STR_OBJ - out", str); } return( str ); } OBJ *Obj_obj_to_STR_OBJ( OBJ *str, OBJ *obj, char *prefix, MEMPASS ) { DEBUGFC(DUTILS1){ SHORT_DUMP_OBJ("Obj_obj_to_STR_OBJ - in", obj); } if( obj ){ switch( TYPE_OBJ(obj) ){ case OBJ_T_HASH: str = Hash_obj_to_STR_OBJ( str, obj, prefix, MEMPASSED ); break; case OBJ_T_ARRAY: str = Array_obj_to_STR_OBJ( str, obj, prefix, MEMPASSED ); break; case OBJ_T_LIST: str = List_obj_to_STR_OBJ( str, obj, prefix, MEMPASSED ); break; case OBJ_T_STR: switch( SUBTYPE_OBJ(obj) ){ case OBJ_ST_STR: case OBJ_ST_SHORTSTR: str = Str_obj_to_STR_OBJ( str, obj, MEMPASSED ); break; default: Errorcode = -1; FATAL(LOG_ERR)"Obj_obj_to_STR_OBJ: type %d (%s) subtype %d (%s) not supported", obj->type, Type_to_str(obj->type), obj->subtype, Subtype_to_str(obj->subtype) ); break; } break; case OBJ_T_SCALAR: To_STR_OBJ(obj, MEMINFO); str = Str_obj_to_STR_OBJ( str, obj, MEMPASSED ); break; default: Errorcode = -1; FATAL(LOG_ERR)"Obj_obj_to_STR_OBJ: type %d (%s) subtype %d (%s) not supported", obj->type, Type_to_str(obj->type), obj->subtype, Subtype_to_str(obj->subtype) ); break; } } DEBUGFC(DUTILS1){ SHORT_DUMP_OBJ("Obj_obj_to_STR_OBJ - out", str); } return( str ); } /* * convert a string to an object * - inverse of hash to str functions * done by recursive descent parser * - get token - we find the next input token * return: EOF, STR, {, }, [, ], SEP (, or =>) */ #define T_EOF 0 #define T_ERR 1 #define T_STR 2 #define T_NAME 3 #define T_SEP ',' static char *input; char *Parse_token_to_str( int c ) { static char msg[32]; switch( c ){ case T_EOF: safestrncpy(msg,"T_EOF"); break; case T_ERR: safestrncpy(msg,"T_ERR"); break; case T_STR: safestrncpy(msg,"T_STR"); break; case T_NAME: safestrncpy(msg,"T_NAME"); break; default: SNPRINTF( msg,sizeof(msg)) "%d (%c)", c, isprint(c)?c:'?'); } return(msg); } void Init_parse( char *str ) { input = str; } char *Get_parse_position( void ) { return( input ); } int Get_parse_token( OBJ *str ) { char *s, *t; int c, len; if( ISNULL(input) ){ return( T_EOF ); } while( (c = cval(input)) && isspace(c) ) ++input; if( !c ) return( T_EOF ); DEBUGFC(DUTILS1){ char bm[32]; safestrncpy(bm,input); DEBUGF(DUTILS1)("Get_parse_token: at '%s'", bm ); } switch(c){ case '{': case '}': case '[': case ']': case ',': ++input; DEBUGF(DUTILS1)("Get_parse_token: token '%c'", c ); return(c); case '=': if( cval(input+1) == '>' ){ input += 2; c= ','; } else { return( T_ERR ); } DEBUGF(DUTILS1)("Get_parse_token: token '%c'", c ); return(c); case '"': case '\'': if( !cval(input+1) ) return( T_ERR ); ++input; s = input; while( (s = strchr(s,c)) && cval(s-1) == '\\' ) ++s; if( !s ) return(T_ERR); len = s - input; SET_MAXLEN_STR_OBJ( str, len+1, MEMINFO ); t = VAL_STR_OBJ(str); memmove(t,input,len); t[len] = 0; input = ++s; DEBUGF(DUTILS1)("Get_parse_token: STR '%s'", VAL_STR_OBJ(str) ); return( T_STR ); default: s = input; if( !strchr(safestr,c) ) return( T_ERR ); while( (c = cval(s)) && strchr(safestr,c) ) ++s; len = s - input; SET_MAXLEN_STR_OBJ( str, len+1, MEMINFO ); t = VAL_STR_OBJ(str); memmove(t,input,len); t[len] = 0; input = s; DEBUGF(DUTILS1)("Get_parse_token: NAME '%s'", VAL_STR_OBJ(str) ); return( T_NAME ); } } /* * Parse an object represenation * - we update the hash object * - we return the token we cannot handle */ int Parse_hash_obj_str( OBJ *hash ) { int c; OBJ *name = SET_STR_OBJ(0,"",MEMINFO); OBJ *value; while( 1 ){ c = Get_parse_token( name ); DEBUGF(DUTILS1)("Parse_hash_obj_str: starting token %s",Parse_token_to_str(c) ); if( c != T_STR && c != T_NAME ){ break; } DEBUGF(DUTILS1)("Parse_hash_obj_str: name '%s'", VAL_STR_OBJ(name) ); value = SET_HASH_OBJ(hash,VAL_STR_OBJ(name),0,MEMINFO); c = Get_parse_token(name); if( c != ',' ) break; c = Parse_obj_obj_str( &value ); DEBUGFC(DUTILS1){SHORT_DUMP_OBJ("Parse_hash_obj_str: found", hash ); } if( c != ',' ) break; } FREE_OBJ(name); name = 0; DEBUGF(DUTILS1)("Parse_hash_obj_str: return token %s",Parse_token_to_str(c) ); return( c ); } int Parse_array_obj_str( OBJ *array ) { int c, n; OBJ *value = 0, *p = 0; while( 1 ){ value = 0; DEBUGF(DUTILS1)("Parse_array_obj_str: starting"); c = Parse_obj_obj_str( &value ); DEBUGFC(DUTILS1){ SHORT_DUMP_OBJ("Parse_array_obj_str: value",value); } if( value || c == ',' ){ n = LEN_ARRAY_OBJ(array); EXTEND_ARRAY_OBJ(array,n+1,0,MEMINFO); /* this is nasty, but it saves COPY_OBJ */ if( value ){ p = AT_ARRAY_OBJ(array,n); memmove(p,value,sizeof(p[0])); memset(value,0,sizeof(value[0])); } FREE_OBJ(value); value = 0; } if( c != ',' ) break; } DEBUGFC(DUTILS1){SHORT_DUMP_OBJ("Parse_array_obj_str: out", array ); } DEBUGF(DUTILS1)("Parse_hash_obj_str: return token %s",Parse_token_to_str(c) ); return( c ); } int Parse_obj_obj_str( OBJ **objp ) { int c; OBJ *name = SET_STR_OBJ(0,"",MEMINFO); c = Get_parse_token(name); DEBUGF(DUTILS1)("Parse_obj_obj_str: starting token %s",Parse_token_to_str(c) ); if( c == T_STR || c == T_NAME ){ if( *objp ){ SET_STR_OBJ( *objp, VAL_STR_OBJ(name), MEMINFO ); } else { *objp = name; name = 0; } c = Get_parse_token(name); } else if( c == '[' ){ name = NEW_ARRAY_OBJ(name,MEMINFO); c = Parse_array_obj_str( name ); if( c != ']' ){ c = T_ERR; } else { *objp = name; name = 0; c = Get_parse_token(name); } } else if( c == '{' ){ name = NEW_HASH_OBJ(name,MEMINFO); c = Parse_hash_obj_str( name ); if( c != '}' ){ c = T_ERR; } else { *objp = name; name = 0; c = Get_parse_token(name); } } if( name ) FREE_OBJ(name); name = 0; DEBUGFC(DUTILS1){SHORT_DUMP_OBJ("Parse_obj_obj_str: out", *objp ); } DEBUGF(DUTILS1)("Parse_obj_obj_str: return token %s",Parse_token_to_str(c) ); return( c ); } char *Parse_err_msg( void ) { char mb[32]; static char msg[64]; SNPRINTF(mb,sizeof(mb)) "%s", ISNULL(input)?"":input); SNPRINTF(msg,sizeof(msg)) "parse error at '%s'", mb ); return( msg ); } ifhp-3.5.20/src/fixupdate0100755000175100017510000000231507435742274015507 0ustar papowellpapowell#!/usr/bin/perl use strict; for (@ARGV){ my($hfile,$cfile,$s,$t,$h); #print "arg '$_'\n"; $hfile = $_; ($cfile = $hfile) =~ s/.*\///; $cfile =~ s/\.h$/.c/; if( not -f $cfile ){ my @files = glob( "*/$cfile" ); if( @files > 1 ){ warn "too many matching sourc3 files - @files\n"; exit 1; } if( @files == 0 ){ warn "no matching source files\n"; next; } $cfile = $files[0]; } #print "cfile '$cfile', hfile '$hfile'\n"; if( !open( CFILE, "<$cfile") ){ warn "cannot open '$cfile'"; next; } while () { chomp; # strip record separator if (/^[A-Za-z]/ .. /^{/) { chomp; if( /{/ ){ $s .= ";\n"; $t .= $s; $s = ""; } elsif( $s ){ $s .= "\n" . $_; } else { $s = $_; } } if (/VARARGS/ .. /^{/) { chomp; if( /{/ ){ $s .= "\n;\n"; $t .= $s; $s = ""; } elsif( $s ){ $s .= "\n" . $_; } else { $s = $_; } } } close CFILE ; $t .= "\n#endif\n"; #print $t; open( HFILE, "<$hfile") or die "cannot open '$hfile'"; while( ){ $h .= $_; if( /PROTOTYPE/ ) { $h .= $t; last; } } # print $h; `cp $hfile $hfile.bak`; open( HFILE,">$hfile") or die "cannot open '$hfile'"; print HFILE $h; close HFILE; } ifhp-3.5.20/src/monitor.c0100644000175100017510000002333610130541266015411 0ustar papowellpapowell/*************************************************************************** * LPRng - An Extended Print Spooler System * * Copyright 1988-2001, Patrick Powell, San Diego, CA * papowell@lprng.com * See LICENSE for conditions of use. * ***************************************************************************/ static char *const _id = "$Id: monitor.c,v 1.8 2004/09/24 20:18:14 papowell Exp papowell $"; #include "ifhp.h" /**** ENDINCLUDE ****/ /* * Monitor for TCP/UDP data * Opens a UDP or TCP socket and waits for data to be sent to it. * * monitor [-t] [-u] [port] * port is an integer number or a service name in the services database * default is to use UDP. */ int udp_open_listen( int port ); int tcp_open_listen( int port ); void Decode( char *in ); char buffer[1024*64]; int use_tcp = 1; int use_udp = 1; int port_num = 2001; int udp_fd = -1; int tcp_fd = -1; fd_set readfds; fd_set testfds; int OF_Mode; char *Name = "???"; int Status_fd = -1; int Max_status_size, Min_status_size; int Trace_on_stderr = 1, Full_time; int Debug; int Errorcode; char *Statusfile; /***************************************************************** * Command line options and Debugging information * Getopt is a modified version of the standard getopt(3) command * line parsing routine. See getopt.c for details *****************************************************************/ /* use this before any error printing, sets up program Name */ struct info { char *buffer; int len; int max_len; }; struct info *inbuffers; int max_in_buffers; void Add_buffer( int n ) { int len = max_in_buffers, count; if(Debug)fprintf(stderr, "Add_buffer: start n %d, inbuffers 0x%lx, max_in_buffers %d\n", n, Cast_ptr_to_long(inbuffers), max_in_buffers ); if( max_in_buffers <= n ){ max_in_buffers = n+1; count = sizeof(inbuffers[0])*max_in_buffers; inbuffers = realloc( inbuffers, count ); if( inbuffers == 0 ){ fprintf(stderr,"Add_buffer: realloc %d failed\n", n ); exit(1); } for( count = len; count < max_in_buffers; ++count ){ memset(inbuffers+count,0,sizeof(inbuffers[0])); } } if(Debug)fprintf(stderr,"Add_buffer: end n %d, inbuffers 0x%lx, max_in_buffers %d\n", n, Cast_ptr_to_long(inbuffers), max_in_buffers ); } void Clear_buffer( int n ) { struct info *in; if(Debug)fprintf(stderr,"Clear_buffer: n %d\n", n ); Add_buffer( n ); in = inbuffers+n; in->len = 0; } struct info *Save_outbuf_len( int n, char *str, int len ) { struct info *in; if(Debug)fprintf(stderr,"Save_outbuf_len: n %d, len %d\n", n, len ); Add_buffer(n); in = inbuffers+n; if(Debug)fprintf(stderr, "Save_outbuf_len: start inbuffers 0x%lx, in 0x%lx, buffer 0x%lx, len %d, max_len %d\n", Cast_ptr_to_long(inbuffers), Cast_ptr_to_long(in), Cast_ptr_to_long(in->buffer), in->len, in->max_len ); if( len + in->len >= in->max_len ){ in->max_len += len; in->buffer = realloc( in->buffer, in->max_len+1 ); if( in->buffer == 0 ){ fprintf(stderr,"Put_oubuf_len: realloc %d failed\n", in->max_len ); exit(1); } } memcpy(in->buffer+in->len, str, len+1 ); in->len += len; if(Debug)fprintf(stderr, "Save_outbuf_len: start inbuffers 0x%lx, in 0x%lx, buffer 0x%lx, len %d, max_len %d\n", Cast_ptr_to_long(inbuffers), Cast_ptr_to_long(in), Cast_ptr_to_long(in->buffer), in->len, in->max_len ); return( in ); } void usage(void) { char *s; if( (s = safestrrchr( Name, '/')) ){ Name = s+1; } fprintf( stderr, "usage: %s [-u] [-t] [port]\n", Name ); fprintf( stderr, " -u = use UDP\n" ); fprintf( stderr, " -t = use TCP (default)\n" ); fprintf( stderr, " -d = Debug\n" ); fprintf( stderr, " port = port to use (%d default)\n", port_num ); exit(1); } int main(int argc, char *argv[], char *envp[] ) { int n, i, c, err, max_port = 0; char *portname, *s; struct servent *servent; struct info *in; #if !defined(HAVE_SETLINEBUF) # define setlinebuf(F) setvbuf(F, (char *)NULL, _IOLBF, 0) #endif setlinebuf(stdout); Name = argv[0]; opterr = 1; while( (n = getopt(argc, argv, "dut")) != EOF ){ switch(n){ default: usage(); break; case 'u': use_udp = !use_udp; break; case 't': use_tcp = !use_tcp; break; case 'd': Debug = 1; break; } } i = argc - optind; if( i > 1 ) usage(); if( i == 1 ){ portname = argv[optind]; n = atoi( portname ); if( n <= 0 ){ servent = getservbyname( portname, "udp" ); if( servent ){ n = ntohs( servent->s_port ); } } if( n <= 0 ){ fprintf( stderr, "udp_open_listen: bad port number '%s'\n",portname ); usage(); } port_num = n; } if( !use_tcp && !use_udp ) use_udp = 1; if( Debug ){ fprintf(stderr,"monitor: udp %d, tcp %d, port %d\n", use_udp, use_tcp, port_num ); } max_port = 0; FD_ZERO( &readfds ); if( use_udp && (udp_fd = udp_open_listen( port_num )) >= 0){ if( Debug ) fprintf(stderr,"monitor: udp port %d\n", udp_fd ); FD_SET(udp_fd, &readfds); if( udp_fd >= max_port ) max_port = udp_fd+1; } if( use_tcp && (tcp_fd = tcp_open_listen( port_num )) >= 0){ if( Debug ) fprintf(stderr,"monitor: tcp port %d\n", tcp_fd ); FD_SET(tcp_fd, &readfds); if( tcp_fd >= max_port ) max_port = tcp_fd+1; } if( Debug ){ fprintf(stderr,"monitor: max_port %d\n", max_port ); for( i = 0; i < max_port; ++i ){ if( FD_ISSET(i, &readfds) ){ fprintf(stderr,"monitor: initial on %d\n", i ); } } } while(1){ FD_ZERO( &testfds ); for( i = 0; i < max_port; ++i ){ if( FD_ISSET(i, &readfds) ){ if( Debug ) fprintf(stderr,"monitor: waiting on %d\n", i ); FD_SET(i, &testfds); } } if( Debug ) fprintf(stderr,"monitor: starting wait, max %d\n", i ); n = select( i, FD_SET_FIX((fd_set *))&testfds, FD_SET_FIX((fd_set *))0, FD_SET_FIX((fd_set *))0, (struct timeval *)0 ); err = errno; if( Debug ) fprintf(stderr,"monitor: select returned %d\n", n ); if( n < 0 ){ fprintf( stderr, "select error - %s\n", strerror(errno) ); if( err != EINTR ) break; } if( n > 0 ) for( i = 0; i < max_port; ++i ){ if( FD_ISSET(i, &testfds) ){ if( Debug ) fprintf(stderr,"monitor: input on %d\n", i ); if( i == tcp_fd ){ struct sockaddr_in sinaddr; socklen_t len = sizeof( sinaddr ); i = accept( tcp_fd, (struct sockaddr *)&sinaddr, &len ); if( i < 0 ){ fprintf( stderr, "accept error - %s\n", strerror(errno) ); continue; } fprintf( stdout, "connection from %s\n", inet_ntoa( sinaddr.sin_addr ) ); if( i >= max_port ) max_port = i+1; FD_SET(i, &readfds); } else { c = read( i, buffer, sizeof(buffer)-1 ); if( c == 0 ){ /* closed connection */ fprintf(stdout, "closed connection %d\n", i ); close( i ); FD_CLR(i, &readfds ); Clear_buffer(i); } else if( c > 0 ){ buffer[c] = 0; if(Debug)fprintf( stdout, "recv port %d: %s\n", i, buffer ); Add_buffer(i); in = Save_outbuf_len( i, buffer, c ); while( (s = safestrchr(in->buffer,'\n')) ){ *s++ = 0; Decode(in->buffer); memmove(in->buffer,s, safestrlen(s)+1 ); in->len = safestrlen(in->buffer); } } else { fprintf( stderr, "read error - %s\n", strerror(errno) ); close( i ); FD_CLR(i, &readfds ); } } } } } return(0); } void UnescStr( char *s ) { char *t; int c; if( !ISNULL(s) ){ for( t = s; (c = cval(s)); ++s ){ if( c == '+' ){ *t++ = ' '; } else if( c != '%' ){ *t++ = c; } else { char val[3]; ++s; val[0] = *s; ++s; val[1] = *s; val[2] = 0; *t++ = strtol(val,0,16); } } *t = 0; } } /* * assume we are called with a single line * This has the form * key=ESCESCvalue%0akey=ESCESCvalue%0a... */ void Decode( char *in ) { OBJ *hash = 0, *valuelist = 0; char *s, *value; int i; fprintf(stdout,"****\n"); if( Debug ) printf( "Decode: input '%s'\n", in ); /* next, we unescape it */ UnescStr(in); fprintf(stdout, "%s\n", in ); fflush(stdout); } int Set_reuse( int sock ) { int status = 0; #ifdef SO_REUSEADDR int option = 1; status = setsockopt( sock, SOL_SOCKET, SO_REUSEADDR, (char *)&option, sizeof(option) ); #endif return( status ); } int udp_open_listen( int port ) { int i, fd, err; struct sockaddr_in sinaddr; sinaddr.sin_family = AF_INET; sinaddr.sin_addr.s_addr = INADDR_ANY; sinaddr.sin_port = htons( port ); fd = socket( AF_INET, SOCK_DGRAM, 0 ); err = errno; if( fd < 0 ){ fprintf(stderr,"udp_open_listen: socket call failed - %s\n", strerror(err) ); return( -1 ); } i = -1; i = bind( fd, (struct sockaddr *) & sinaddr, sizeof (sinaddr) ); err = errno; if( i < 0 ){ fprintf(stderr,"udp_open_listen: bind to '%s port %d' failed - %s\n", inet_ntoa( sinaddr.sin_addr ), ntohs( sinaddr.sin_port ), strerror(errno) ); close(fd); fd = -1; } if( fd == 0 ){ fd = dup(fd); if( fd < 0 ){ fprintf(stderr,"udp_open_listen: dup failed - %s\n", strerror(errno) ); close(fd); fd = -1; } } return( fd ); } int tcp_open_listen( int port ) { int i, fd, err; struct sockaddr_in sinaddr; sinaddr.sin_family = AF_INET; sinaddr.sin_addr.s_addr = INADDR_ANY; sinaddr.sin_port = htons( port ); fd = socket( AF_INET, SOCK_STREAM, 0 ); err = errno; if( fd < 0 ){ fprintf(stderr,"tcp_open: socket call failed - %s\n", strerror(err) ); return( -1 ); } i = Set_reuse( fd ); if( i >= 0 ) i = bind( fd, (struct sockaddr *) & sinaddr, sizeof (sinaddr) ); if( i >= 0 ) i = listen( fd, 10 ); err = errno; if( i < 0 ){ fprintf(stderr,"tcp_open: connect to '%s port %d' failed - %s\n", inet_ntoa( sinaddr.sin_addr ), ntohs( sinaddr.sin_port ), strerror(errno) ); close(fd); fd = -1; } if( fd == 0 ){ fd = dup(fd); if( fd < 0 ){ fprintf(stderr,"tcp_open: dup failed - %s\n", strerror(errno) ); close(fd); fd = -1; } } return( fd ); } void cleanup( int n ) { exit( Errorcode ); } ifhp-3.5.20/src/safemalloc.h0100644000175100017510000000342410130541266016031 0ustar papowellpapowell/*************************************************************************** * LPRng - An Extended Print Spooler System * * Copyright 1988-2001, Patrick Powell, San Diego, CA * papowell@lprng.com * See LICENSE for conditions of use. * $Id: safemalloc.h,v 1.2 2002/03/06 04:43:36 papowell Exp papowell $ ***************************************************************************/ #ifndef _SAFEMALLOC_H_ #define _SAFEMALLOC_H_ 1 #define MEMPASS const char *file, int line #define MEMPASSED file, line #define MEMINFO __FILE__, __LINE__ #define SAFEFREE(x) safefree(x, __FILE__, __LINE__) #ifndef SMALLBUFFER # define SMALLBUFFER 512 #endif #ifndef LARGEBUFFER # define LARGEBUFFER 10240 #endif /* PROTOTYPES */ void *malloc_or_die( size_t size, const char *file, int line ); void *realloc_or_die( void *p, size_t size, const char *file, int line ); void safefree( void *p, const char *file, int line ); char *safestrdup (const char *p, const char *file, int line); char *safestrdup2( const char *s1, const char *s2, const char *file, int line ); char *safeextend2( char *s1, const char *s2, const char *file, int line ); char *safestrdup3( const char *s1, const char *s2, const char *s3, const char *file, int line ); char *safeextend3( char *s1, const char *s2, const char *s3, const char *file, int line ); char *safeextend4( char *s1, const char *s2, const char *s3, const char *s4, const char *file, int line ); char *safestrdup4( const char *s1, const char *s2, const char *s3, const char *s4, const char *file, int line ); char *safeextend5( char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *file, int line ); char *safestrdup5( const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *file, int line ); #endif ifhp-3.5.20/src/install-sh0100755000175100017510000001124307015116225015555 0ustar papowellpapowell#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. # # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" tranformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 ifhp-3.5.20/src/plp_snprintf.h0100644000175100017510000000122510130541266016436 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER ***** $Id: plp_snprintf.h,v 1.1 1999/12/17 02:04:59 papowell Exp papowell $ **** HEADER *****/ #if !defined(_PLP_SNPRINTF_) #define _PLP_SNPRINTF_ 1 /* PROTOTYPES */ int plp_vsnprintf(char *str, size_t count, const char *fmt, va_list args); /* VARARGS3 */ #ifdef HAVE_STDARGS int plp_snprintf (char *str,size_t count,const char *fmt,...) #else int plp_snprintf (va_alist) va_dcl #endif ; #endif ifhp-3.5.20/src/safemalloc.c0100644000175100017510000001354610130541266016032 0ustar papowellpapowell/*************************************************************************** * LPRng - An Extended Print Spooler System * * Copyright 1988-2001, Patrick Powell, San Diego, CA * papowell@lprng.com * See LICENSE for conditions of use. * ***************************************************************************/ static char *const _id = "$Id: safemalloc.c,v 1.1 2002/01/30 14:34:20 papowell Exp papowell $"; #include "portable.h" #if defined(DMALLOC) # include #endif #include "errormsg.h" #include "safemalloc.h" /**** ENDINCLUDE ****/ /* * Memory Allocation Routines * - same as malloc, realloc, but with error messages */ #if defined(DMALLOC) #undef malloc #define malloc(size) \ _malloc_leap(file, line, size) #undef calloc #define calloc(count, size) \ _calloc_leap(file, line, count, size) #undef realloc #define realloc(ptr, size) \ _realloc_leap(file, line, ptr, size) #endif void *malloc_or_die( size_t size, const char *file, int line ) { void *p; p = malloc(size); if( p == 0 ){ LOGERR(LOG_INFO) "malloc of %d failed, file '%s', line %d", size, file, line ); abort(); } #if 0 DEBUG6("malloc_or_die: size %d, addr 0x%lx, file '%s', line %d", size, Cast_ptr_to_long(p), file, line ); #endif return( p ); } void *realloc_or_die( void *p, size_t size, const char *file, int line ) { void *orig = p; if( p == 0 ){ p = malloc(size); } else { p = realloc(p, size); } if( p == 0 ){ LOGERR(LOG_INFO) "realloc of 0x%lx, new size %d failed, file '%s', line %d", Cast_ptr_to_long(orig), size, file, line ); abort(); } #if 0 DEBUG6("realloc_or_die: size %d, orig 0x%lx, addr 0x%lx, file '%s', line %d", size, Cast_ptr_to_long(orig), Cast_ptr_to_long(p), file, line ); #endif return( p ); } void safefree( void *p, const char *file, int line ) { if( p ) free( p ); return; } /* * duplicate a string safely, generate an error message */ char *safestrdup (const char *p, const char *file, int line) { char *new = 0; if( p == 0) p = ""; new = malloc_or_die( strlen (p) + 1, file, line ); strcpy( new, p ); return( new ); } /* * char *safestrdup2( char *s1, char *s2, char *file, int line ) * duplicate two concatenated strings * returns: malloced string area */ char *safestrdup2( const char *s1, const char *s2, const char *file, int line ) { int n = 1 + (s1?strlen(s1):0) + (s2?strlen(s2):0); char *s = malloc_or_die( n, file, line ); s[0] = 0; if( s1 ) strcat(s,s1); if( s2 ) strcat(s,s2); return( s ); } /* * char *safeextend2( char *s1, char *s2, char *file, int line ) * extends a malloc'd string * returns: malloced string area */ char *safeextend2( char *s1, const char *s2, const char *file, int line ) { char *s; int n = 1 + (s1?strlen(s1):0) + (s2?strlen(s2):0); s = realloc_or_die( s1, n, file, line ); if( s1 == 0 ) *s = 0; if( s2 ) strcat(s,s2); return(s); } /* * char *safestrdup3( char *s1, char *s2, char *s3, char *file, int line ) * duplicate three concatenated strings * returns: malloced string area */ char *safestrdup3( const char *s1, const char *s2, const char *s3, const char *file, int line ) { int n = 1 + (s1?strlen(s1):0) + (s2?strlen(s2):0) + (s3?strlen(s3):0); char *s = malloc_or_die( n, file, line ); s[0] = 0; if( s1 ) strcat(s,s1); if( s2 ) strcat(s,s2); if( s3 ) strcat(s,s3); return( s ); } /* * char *safeextend3( char *s1, char *s2, char *s3 char *file, int line ) * extends a malloc'd string * returns: malloced string area */ char *safeextend3( char *s1, const char *s2, const char *s3, const char *file, int line ) { char *s; int n = 1 + (s1?strlen(s1):0) + (s2?strlen(s2):0) + (s3?strlen(s3):0); s = realloc_or_die( s1, n, file, line ); if( s1 == 0 ) *s = 0; if( s2 ) strcat(s,s2); if( s3 ) strcat(s,s3); return(s); } /* * char *safeextend4( char *s1, char *s2, char *s3, char *s4, * char *file, int line ) * extends a malloc'd string * returns: malloced string area */ char *safeextend4( char *s1, const char *s2, const char *s3, const char *s4, const char *file, int line ) { char *s; int n = 1 + (s1?strlen(s1):0) + (s2?strlen(s2):0) + (s3?strlen(s3):0) + (s4?strlen(s4):0); s = realloc_or_die( s1, n, file, line ); if( s1 == 0 ) *s = 0; if( s2 ) strcat(s,s2); if( s3 ) strcat(s,s3); if( s4 ) strcat(s,s4); return(s); } /* * char *safestrdup4 * duplicate four concatenated strings * returns: malloced string area */ char *safestrdup4( const char *s1, const char *s2, const char *s3, const char *s4, const char *file, int line ) { int n = 1 + (s1?strlen(s1):0) + (s2?strlen(s2):0) + (s3?strlen(s3):0) + (s4?strlen(s4):0); char *s = malloc_or_die( n, file, line ); s[0] = 0; if( s1 ) strcat(s,s1); if( s2 ) strcat(s,s2); if( s3 ) strcat(s,s3); if( s4 ) strcat(s,s4); return( s ); } /* * char *safeextend5( char *s1, char *s2, char *s3, char *s4, char *s5 * char *file, int line ) * extends a malloc'd string * returns: malloced string area */ char *safeextend5( char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *file, int line ) { char *s; int n = 1 + (s1?strlen(s1):0) + (s2?strlen(s2):0) + (s3?strlen(s3):0) + (s4?strlen(s4):0) + (s5?strlen(s5):0); s = realloc_or_die( s1, n, file, line ); if( s1 == 0 ) *s = 0; if( s2 ) strcat(s,s2); if( s3 ) strcat(s,s3); if( s4 ) strcat(s,s4); if( s5 ) strcat(s,s5); return(s); } /* * char *safestrdup5 * duplicate five concatenated strings * returns: malloced string area */ char *safestrdup5( const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *file, int line ) { int n = 1 + (s1?strlen(s1):0) + (s2?strlen(s2):0) + (s3?strlen(s3):0) + (s4?strlen(s4):0) + (s5?strlen(s5):0); char *s = malloc_or_die( n, file, line ); s[0] = 0; if( s1 ) strcat(s,s1); if( s2 ) strcat(s,s2); if( s3 ) strcat(s,s3); if( s4 ) strcat(s,s4); if( s5 ) strcat(s,s5); return( s ); } ifhp-3.5.20/src/safestrutil.c0100644000175100017510000001306410130541267016265 0ustar papowellpapowell/*************************************************************************** * LPRng - An Extended Print Spooler System * * Copyright 1988-2001, Patrick Powell, San Diego, CA * papowell@lprng.com * See LICENSE for conditions of use. * ***************************************************************************/ static char *const _id = "$Id: safestrutil.c,v 1.2 2002/04/02 04:38:40 papowell Exp papowell $"; #include "portable.h" #include "safemalloc.h" #include "safestrutil.h" /************************************************************** * Bombproof versions of string functions **************************************************************/ int safestrlen( const char *s1 ) { return( s1? strlen(s1) : 0 ); } /* case insensitive compare for OS without it */ int safestrcasecmp (const char *s1, const char *s2) { int c1, c2, d = 0; if( (s1 == s2) ) return(0); if( (s1 == 0 ) && s2 ) return( -1 ); if( s1 && (s2 == 0 ) ) return( 1 ); for (;;) { c1 = *((unsigned char *)s1); s1++; c2 = *((unsigned char *)s2); s2++; if( isupper(c1) ) c1 = tolower(c1); if( isupper(c2) ) c2 = tolower(c2); if( (d = (c1 - c2 )) || c1 == 0 ) break; } return( d ); } /* case insensitive compare for OS without it */ int safestrncasecmp (const char *s1, const char *s2, int len ) { int c1, c2, d = 0; if( (s1 == s2) && s1 == 0 ) return(0); if( (s1 == 0 ) && s2 ) return( -1 ); if( s1 && (s2 == 0 ) ) return( 1 ); for (;len>0;--len){ c1 = *((unsigned char *)s1); s1++; c2 = *((unsigned char *)s2); s2++; if( isupper(c1) ) c1 = tolower(c1); if( isupper(c2) ) c2 = tolower(c2); if( (d = (c1 - c2 )) || c1 == 0 ) return(d); } return( 0 ); } /* perform safe comparison, even with null pointers */ int safestrcmp( const char *s1, const char *s2 ) { if( (s1 == s2) ) return(0); if( (s1 == 0 ) && s2 ) return( -1 ); if( s1 && (s2 == 0 ) ) return( 1 ); return( strcmp(s1, s2) ); } /* perform safe comparison, even with null pointers */ int safestrncmp( const char *s1, const char *s2, int len ) { if( (s1 == s2) && s1 == 0 ) return(0); if( (s1 == 0 ) && s2 ) return( -1 ); if( s1 && (s2 == 0 ) ) return( 1 ); return( strncmp(s1, s2, len) ); } /* perform safe strchr, even with null pointers */ char *safestrchr( const char *s1, int c ) { if( s1 ) return( strchr( s1, c ) ); return( 0 ); } /* perform safe strrchr, even with null pointers */ char *safestrrchr( const char *s1, int c ) { if( s1 ) return( strrchr( s1, c ) ); return( 0 ); } /* perform safe strchr, even with null pointers */ char *safestrpbrk( const char *s1, const char *s2 ) { if( s1 && s2 ) return( strpbrk( s1, s2 ) ); return( 0 ); } /* perform safe strstr, even with null pointers */ char *safestrstr( const char *s1, const char *s2 ) { if( s1 && s2 ) return( strstr( s1, s2 ) ); return( 0 ); } /* lowercase and uppercase (destructive) a string */ void lowercase( char *s ) { int c; if( s ){ for( ; (c = cval(s)); ++s ){ if( isupper(c) ) *s = tolower(c); } } } void uppercase( char *s ) { int c; if( s ){ for( ; (c = cval(s)); ++s ){ if( islower(c) ) *s = toupper(c); } } } /* * Trunc str - remove trailing white space (destructive) */ char *trunc_str( char *s) { int len = safestrlen(s); if( len ){ while( len > 0 && isspace(cval(s+len-1)) ) --len; s[len] = 0; } return( s ); } int Lastchar( char *s ) { int c = 0, n = safestrlen(s); if( n ){ c = cval(s+n-1); } return(c); } #define UPPER "ABCDEFGHIJKLMNOPQRSTUVWXYZ" #define LOWER "abcdefghijklmnopqrstuvwxyz" #define DIGIT "01234567890" #define SAFE "-_." #define LESS_SAFE SAFE "@/:()=,+-%" const char *Is_clean_name( const char *s ) { int c; if( s ){ for( ; (c = cval(s)); ++s ){ if( !(isalnum(c) || safestrchr( SAFE, c )) ) return( s ); } } return( 0 ); } void Clean_name( char *s ) { int c; if( s ){ for( ; (c = cval(s)); ++s ){ if( !(isalnum(c) || safestrchr( SAFE, c )) ) *s = '_'; } } } /* * Find a possible bad character in a line */ int Is_meta( int c, const char * safe_chars ) { return( !( isspace(c) || isalnum( c ) || (safe_chars && safestrchr(safe_chars,c)) || safestrchr( LESS_SAFE, c ) ) ); } const char *Find_meta( const char *s, const char *safe_chars ) { int c = 0; if( s ){ for( ; (c = cval(s)); ++s ){ if( Is_meta( c, safe_chars ) ) return( s ); } s = 0; } return( s ); } void Clean_meta( char *t, const char *safe_chars ) { char *s = t; if( t ){ while( (s = safestrchr(s,'\\')) ) *s = '/'; s = t; for( s = t; (s =(char *)Find_meta( s, safe_chars )); ++s ){ *s = '_'; } } } /* * char *Make_pathname( char *dir, char *filename ) * - makes a full pathname from the dir and file part */ char *Make_pathname( const char *dir, const char *filename, MEMPASS ) { char *s, *path = 0; if( filename == 0 ){ path = 0; } else if( filename[0] == '/' ){ path = safestrdup(filename,MEMPASSED); } else if( dir ){ path = safestrdup3(dir,"/",filename,MEMPASSED); } else { path = safestrdup2("./",filename,MEMPASSED); } if( (s = path) ) while((s = strstr(s,"//"))) memmove(s,s+1,safestrlen(s)+1 ); return(path); } /* * safeunlink - this is a silly place to put it... */ int safeunlink( const char *s ) { if( s ) return( unlink(s) ); return(0); } /* safer versions of strncat and strncp */ char *mystrncat( char *s1, const char *s2, int len ) { int size; if( len > 0 ){ s1[len-1] = 0; size = safestrlen( s1 ); len -= size; if( s2 && len > 0 ){ strncpy( s1+size, s2, len-1 ); } } return( s1 ); } char *mystrncpy( char *s1, const char *s2, int len ) { --len; s1[0] = 0; if( s2 && len > 0 ){ strncpy( s1, s2, len ); s1[len] = 0; } return( s1 ); } ifhp-3.5.20/src/linelist.c0100644000175100017510000007363310130541266015552 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER *****/ static char *const _id = "$Id: linelist.c,v 1.26 2002/01/23 00:32:33 papowell Exp papowell $"; #include "ifhp.h" /**** ENDINCLUDE ****/ /* lowercase and uppercase (destructive) a string */ void lowercase( char *s ) { int c; if( s ){ for( ; (c = *s); ++s ){ if( isupper(c) ) *s = tolower(c); } } } void uppercase( char *s ) { int c; if( s ){ for( ; (c = *s); ++s ){ if( islower(c) ) *s = toupper(c); } } } /* * Trunc str - remove trailing white space (destructive) */ char *trunc_str( char *s) { char *t; if(s && *s){ for( t=s+strlen(s); t > s && isspace(cval(t-1)); --t ); *t = 0; } return( s ); } /* * Memory Allocation Routines * - same as malloc, realloc, but with error messages */ void *malloc_or_die( size_t size, const char *file, int line ) { void *p; p = malloc(size); if( p == 0 ){ LOGERR_DIE( "malloc of %d failed, file '%s', line %d", size, file, line ); } return( p ); } void *realloc_or_die( void *p, size_t size, const char *file, int line ) { if( p == 0 ){ p = malloc(size); } else { p = realloc(p, size); } if( p == 0 ){ LOGERR_DIE( "realloc of %d failed, file '%s', line %d", size, file, line ); } return( p ); } /************************************************************** * Bombproof versions of strcasecmp() and strncasecmp(); **************************************************************/ /* case insensitive compare for OS without it */ int safestrcasecmp (const char *s1, const char *s2) { int c1, c2, d; if( (s1 == s2) ) return(0); if( (s1 == 0 ) && s2 ) return( -1 ); if( s1 && (s2 == 0 ) ) return( 1 ); for (;;) { c1 = *((unsigned char *)s1); s1++; c2 = *((unsigned char *)s2); s2++; if( isupper(c1) ) c1 = tolower(c1); if( isupper(c2) ) c2 = tolower(c2); if( (d = (c1 - c2 )) || c1 == 0 ) return(d); } return( 0 ); } /* case insensitive compare for OS without it */ int safestrncasecmp (const char *s1, const char *s2, int len ) { int c1, c2, d; if( (s1 == s2) && s1 == 0 ) return(0); if( (s1 == 0 ) && s2 ) return( -1 ); if( s1 && (s2 == 0 ) ) return( 1 ); for (;len>0;--len){ c1 = *((unsigned char *)s1); s1++; c2 = *((unsigned char *)s2); s2++; if( isupper(c1) ) c1 = tolower(c1); if( isupper(c2) ) c2 = tolower(c2); if( (d = (c1 - c2 )) || c1 == 0 ) return(d); } return( 0 ); } /* perform safe comparison, even with null pointers */ int safestrcmp( const char *s1, const char *s2 ) { if( (s1 == s2) ) return(0); if( (s1 == 0 ) && s2 ) return( -1 ); if( s1 && (s2 == 0 ) ) return( 1 ); return( strcmp(s1, s2) ); } /* perform safe comparison, even with null pointers */ int safestrncmp( const char *s1, const char *s2, int len ) { if( (s1 == s2) && s1 == 0 ) return(0); if( (s1 == 0 ) && s2 ) return( -1 ); if( s1 && (s2 == 0 ) ) return( 1 ); return( strncmp(s1, s2, len) ); } /* perform safe strchr, even with null pointers */ char *safestrchr( const char *s1, int c ) { if( s1 ) return( strchr( s1, c ) ); return( 0 ); } /* perform safe strchr, even with null pointers */ char *safestrstr( const char *s1, const char *s2 ) { if( s1 && s2 ) return( strstr( s1, s2 ) ); return( 0 ); } /* perform safe strrchr, even with null pointers */ char *safestrrchr( const char *s1, int c ) { if( s1 ) return( strrchr( s1, c ) ); return( 0 ); } /* perform safe strchr, even with null pointers */ char *safestrpbrk( const char *s1, const char *s2 ) { if( s1 && s2 ) return( strpbrk( s1, s2 ) ); return( 0 ); } /* * duplicate a string safely, generate an error message */ char *safestrdup (const char *p, const char *file, int line) { char *new = 0; if( p == 0) p = ""; new = malloc_or_die( strlen (p) + 1, file, line ); strcpy( new, p ); return( new ); } /* * char *safestrdup2( char *s1, char *s2, char *file, int line ) * duplicate two concatenated strings * returns: malloced string area */ char *safestrdup2( const char *s1, const char *s2, const char *file, int line ) { int n = 1 + (s1?strlen(s1):0) + (s2?strlen(s2):0); char *s = malloc_or_die( n, file, line ); s[0] = 0; if( s1 ) strcat(s,s1); if( s2 ) strcat(s,s2); return( s ); } /* * char *safestrdup3( char *s1, char *s2, char *s3, char *file, int line ) * duplicate three concatenated strings * returns: malloced string area */ char *safestrdup3( const char *s1, const char *s2, const char *s3, const char *file, int line ) { int n = 1 + (s1?strlen(s1):0) + (s2?strlen(s2):0) + (s3?strlen(s3):0); char *s = malloc_or_die( n, file, line ); s[0] = 0; if( s1 ) strcat(s,s1); if( s2 ) strcat(s,s2); if( s3 ) strcat(s,s3); return( s ); } /* * char *safestrdup3( char *s1, char *s2, char *s3, char *file, int line ) * duplicate three concatenated strings * returns: malloced string area */ char *safestrdup4( const char *s1, const char *s2, const char *s3, const char *s4, const char *file, int line ) { int n = 1 + (s1?strlen(s1):0) + (s2?strlen(s2):0) + (s3?strlen(s3):0) + (s4?strlen(s4):0); char *s = malloc_or_die( n, file, line ); s[0] = 0; if( s1 ) strcat(s,s1); if( s2 ) strcat(s,s2); if( s3 ) strcat(s,s3); if( s4 ) strcat(s,s4); return( s ); } /* Line Splitting and List Management Model: we have a list of malloced and duplicated lines we never remove the lines unless we free them. we never put them in unless we malloc them */ /* * void Init_line_list( struct line_list *l ) * - inititialize a list by zeroing it */ void Init_line_list( struct line_list *l ) { memset(l, 0, sizeof(l[0])); } /* * void Free_line_list( struct line_list *l ) * - clear a list by freeing the allocated array */ void Free_line_list( struct line_list *l ) { int i; if( l->list ){ for( i = 0; i < l->count; ++i ){ if( l->list[i] ) free( l->list[i]); } free(l->list); } l->count = 0; l->list = 0; l->max = 0; } /* * void Check_max( struct line_list *l, int incr ) * */ void Check_max( struct line_list *l, int incr ) { if( l->count+incr >= l->max ){ DEBUG5("Check_max: inc %d, count %d, max %d, list 0x%lx", incr, l->count, l->max, (long)l->list ); l->max += 100+incr; if( !(l->list = realloc_or_die( l->list, l->max*sizeof(char *), __FILE__,__LINE__)) ){ Errorcode = JABORT; LOGERR_DIE( "Check_max: realloc %d failed", l->max*sizeof(char*) ); } DEBUG5("Check_max: new max %d, list 0x%lx", l->max, (long)l->list ); } } /* *void Add_line_list( struct line_list *l, char *str, * char *sep, int sort, int uniq ) * - add a copy of str to the line list * sep - key separator, used for sorting * sort = 1 - sort the values * uniq = 1 - only one value */ void Add_line_list( struct line_list *l, char *str, char *sep, int sort, int uniq ) { char *s = 0; int c = 0, cmp, mid; DEBUG5("Add_line_list: adding '%s', sep '%s', sort %d, uniq %d", str, sep, sort, uniq ); DEBUG5("Add_line_list: max %d, count %d, list 0x%lx", l->count, l->max, (long)l->list ); Check_max(l, 2); str = safestrdup( str,__FILE__,__LINE__); if( sort == 0 ){ l->list[l->count++] = str; } else { s = 0; if( sep && (s = safestrpbrk( str, sep )) ){ c = *s; *s = 0; } /* find everything <= the mid point */ /* cmp = key <> list[mid] */ cmp = Find_last_key( l, str, sep, &mid ); if( s ) *s = c; /* str < list[mid+1] */ if( cmp == 0 && uniq ){ DEBUG5("Add_line_list: replacing at %d", mid ); /* we replace */ free( l->list[mid] ); l->list[mid] = str; } else if( cmp >= 0 ){ /* we need to insert after mid */ ++l->count; DEBUG5("Add_line_list: inserting after %d, count %d, moving %d", mid, l->count, l->count - mid - 1 ); memmove( l->list+mid+2, l->list+mid+1, sizeof( char * ) * (l->count - mid - 1)); l->list[mid+1] = str; } else if( cmp < 0 ) { /* we need to insert before mid */ ++l->count; DEBUG5("Add_line_list: inserting before %d, count %d, moving %d", mid, l->count, l->count - mid ); memmove( l->list+mid+1, l->list+mid, sizeof( char * ) * (l->count - mid)); l->list[mid] = str; } } #ifdef DMALLOC dmalloc_verify(0); #endif #if VERBOSE if(DEBUGL5)Dump_line_list("Add_line_list: result", l); #endif } void Merge_list( struct line_list *dest, struct line_list *src, char *sep, int sort, int uniq ) { int i; for( i = 0; i < src->count; ++i ){ Add_line_list( dest, src->list[i], sep, sort, uniq ); } } /* * Split( struct line_list *l, char *str, int sort, char *keysep, * int uniq, int trim ) * Split the str up into strings, as delimted by sep. * put duplicates of the original into the line_list l. * If sort != 0, then sort them using keysep to separate sort key from value * if uniq != then replace rather than add entries * if trim != 0 then remove leading and trailing whitespace * */ void Split( struct line_list *l, char *str, char *sep, int sort, char *keysep, int uniq, int trim, int nocomments ) { char *sdup, *end = 0, *t; if(DEBUGL4){ char b[40]; int n; SNPRINTF( b,sizeof(b)-8) "%s",str ); if( (n = strlen(b)) > sizeof(b)-10 ) strcpy( b+n," ..." ); LOGDEBUG("Split: str '%s', sort %d, keysep '%s', uniq %d, trim %d", b, sort, keysep, uniq, trim ); } if( str == 0 || *str == 0 ) return; sdup = str = safestrdup(str,__FILE__,__LINE__); for( ; str && *str; str = end ){ end = 0; if( sep && (end = safestrpbrk( str, sep )) ){ *end++ = 0; } DEBUG5("Split: working on '%s'", str ); if( trim ){ while( isspace(cval(str)) ) ++str; for( t = str+strlen(str)-1; t >= str && isspace(cval(t)); --t ) t[0] = 0; } DEBUG5("Split: after trim '%s'", str ); if( *str == 0 ) continue; if( (nocomments && *str == '#') ) continue; Add_line_list( l, str, keysep, sort, uniq ); } free( sdup ); } /* * Split_count( struct line_list *l, char *str, int sort, char *keysep, * int uniq, int trim ) * Split the str up into strings, as delimted by sep. * put duplicates of the original into the line_list l. * If sort != 0, then sort them using keysep to separate sort key from value * if uniq != then replace rather than add entries * if trim != 0 then remove leading and trailing whitespace * */ void Split_count( int count, struct line_list *l, char *str, char *sep, int sort, char *keysep, int uniq, int trim, int nocomments ) { char *sdup, *end = 0, *t; int i; if(DEBUGL4){ char b[40]; int n; SNPRINTF( b,sizeof(b)-8) "%s",str ); if( (n = strlen(b)) > sizeof(b)-10 ) strcpy( b+n," ..." ); LOGDEBUG("Split_count: str '%s', sort %d, keysep '%s', uniq %d, trim %d", b, sort, keysep, uniq, trim ); } if( str == 0 || *str == 0 ) return; sdup = str = safestrdup(str,__FILE__,__LINE__); for( i = 0; i < count && str && *str; (str = end) ){ end = 0; if( sep && (end = safestrpbrk( str, sep )) ){ *end++ = 0; } DEBUG5("Split_count: count %d, working on '%s'", i, str ); if( trim ){ while( isspace(cval(str)) ) ++str; for( t = str+strlen(str)-1; t >= str && isspace(cval(t)); --t ) t[0] = 0; } DEBUG5("Split_count: after trim '%s'", str ); if( *str == 0 ){ continue; } else if( (nocomments && *str == '#') ){ continue; } else { Add_line_list( l, str, keysep, sort, uniq ); ++i; } } if( str ){ DEBUG5("Split_count: working on '%s'", str ); if( trim ){ while( isspace(cval(str)) ) ++str; for( t = str+strlen(str)-1; t >= str && isspace(cval(t)); --t ) t[0] = 0; } if( *str == 0 ){ ; } else if( (nocomments && *str == '#') ){ ; } else { DEBUG5("Split_count: after trim '%s'", str ); Add_line_list( l, str, keysep, sort, uniq ); } } free( sdup ); } /*************************************************************************** * Split_cmd_line * if we have xx "yy zz" we split this as * xx * yy zz ***************************************************************************/ void Split_cmd_line( struct line_list *l, char *s ) { char *t; int c; DEBUG1("Split_cmd_line: line '%s'", s ); while( s && cval(s) ){ if(DEBUGL5){ Dump_line_list("Split_cmd_line: using", l ); } while( cval(s) && safestrchr(Whitespace,cval(s)) ) ++s; /* ok, we have skipped the whitespace */ if( (c = cval(s)) ){ t = 0; if( c == '"' || c == '\'' ){ /* we now have hit a quoted string */ ++s; t = safestrchr(s,c); } else if( !(t = safestrpbrk(s, Whitespace)) ){ t = s+strlen(s); } if( t ){ c = cval(t); *t = 0; Add_line_list(l, s, 0, 0, 0); *t = c; if( c ) ++t; } s = t; } } if(DEBUGL1){ Dump_line_list("Split_cmd_line", l ); } } void Dump_line_list( char *title, struct line_list *l ) { int i; LOGDEBUG("Dump_line_list: %s - count %d, max %d, list 0x%lx", title, l->count, l->max, (long)l->list ); for( i = 0; i < l->count; ++i ){ LOGDEBUG( " [%2d]='%s'", i, l->list[i] ); } } /* * int Find_last_key( struct line_list *l, char *key, char *sep, int *mid ) * Search the list for the last corresponding key value * The list has lines of the form: * key [separator] value * returns: * *at = index of last tested value * return value: 0 if found; * <0 if list[*at] < key * >0 if list[*at] > key */ int Find_last_key( struct line_list *l, char *key, char *sep, int *m ) { int c=0, cmp=-1, cmpl = 0, bot, top, mid; char *s, *t; mid = bot = 0; top = l->count-1; DEBUG5("Find_last_key: count %d, key '%s'", l->count, key ); while( cmp && bot <= top ){ mid = (top+bot)/2; s = l->list[mid]; t = 0; if( sep && (t = safestrpbrk(s, sep )) ) { c = *t; *t = 0; } cmp = strcmp(key,s); if( t ) *t = c; if( cmp > 0 ){ bot = mid+1; } else if( cmp < 0 ){ top = mid -1; } else while( mid+1 < l->count ){ s = l->list[mid+1]; DEBUG5("Find_last_key: existing entry, mid %d, '%s'", mid, l->list[mid] ); t = 0; if( sep && (t = safestrpbrk(s, sep )) ) { c = *t; *t = 0; } cmpl = strcmp(s,key); if( t ) *t = c; if( cmpl ) break; ++mid; } DEBUG5("Find_last_key: cmp %d, top %d, mid %d, bot %d", cmp, top, mid, bot); } if( m ) *m = mid; DEBUG5("Find_last_key: key '%s', cmp %d, mid %d", key, cmp, mid ); return( cmp ); } int Find_first_key( struct line_list *l, char *key, char *sep, int *m ) { int c=0, cmp=-1, cmpl = 0, bot, top, mid; char *s, *t; mid = bot = 0; top = l->count-1; DEBUG5("Find_first_key: count %d, key '%s', sep '%s'", l->count, key, sep ); while( cmp && bot <= top ){ mid = (top+bot)/2; s = l->list[mid]; t = 0; if( sep && (t = safestrpbrk(s, sep )) ) { c = *t; *t = 0; } cmp = strcmp(key,s); if( t ) *t = c; if( cmp > 0 ){ bot = mid+1; } else if( cmp < 0 ){ top = mid -1; } else while( mid > 0 ){ s = l->list[mid-1]; t = 0; if( sep && (t = safestrpbrk(s, sep )) ) { c = *t; *t = 0; } cmpl = strcmp(s,key); if( t ) *t = c; if( cmpl ) break; --mid; } DEBUG5("Find_first_key: cmp %d, top %d, mid %d, bot %d", cmp, top, mid, bot); } if( m ) *m = mid; DEBUG5("Find_first_key: cmp %d, mid %d, key '%s', count %d", cmp, mid, key, l->count ); return( cmp ); } /* * char *Find_value( struct line_list *l, char *key, char *sep ) * Search the list for a corresponding key value * value * key "1" * key@ "0" * key#v v * key=v v * If key does not exist, we return "0" */ char *Find_value( struct line_list *l, char *key, char *sep ) { char *s = "0"; int mid, cmp; DEBUG5("Find_value: key '%s', sep '%s'", key, sep ); if( sep ){ cmp = Find_first_key( l, key, sep, &mid ); DEBUG5("Find_value: key '%s', cmp %d, mid %d", key, cmp, mid ); if( cmp==0 ){ s = Fix_val( safestrpbrk(l->list[mid], sep ) ); } DEBUG5( "Find_value: key '%s', value '%s'", key, s ); } return(s); } /* * char *Find_exists_value( struct line_list *l, char *key, char *sep ) * Search the list for a corresponding key value * value * key "1" * key@ "0" * key#v v * key=v v * If value does not exists we return 0 (null) */ char *Find_exists_value( struct line_list *l, char *key, char *sep ) { char *s = 0; int mid, cmp = -2; if( sep ){ cmp = Find_first_key( l, key, sep, &mid ); if( cmp==0 ){ s = Fix_val( safestrpbrk(l->list[mid], sep ) ); } } DEBUG5( "Find_exists_value: key '%s', cmp %d, value '%s'", key, cmp, s ); return(s); } /* * char *Find_str_value( struct line_list *l, char *key, char *sep ) * Search the list for a corresponding key value * value * key 0 * key@ 0 * key#v 0 * key=v v */ char *Find_str_value( struct line_list *l, char *key, char *sep ) { char *s = 0; int mid, cmp; if( sep ){ cmp = Find_first_key( l, key, sep, &mid ); if( cmp==0 ){ /* * value: NULL, "", "@", "=xx", "#xx". * returns: "0", "1","0", "xx", "xx" */ s = safestrpbrk(l->list[mid], sep ); if( s && *s == '=' ){ ++s; } else { s = 0; } } } DEBUG5( "Find_str_value: key '%s', value '%s'", key, s ); return(s); } /* * char *Find_flag_value( struct line_list *l, char *key, char *sep ) * Search the list for a corresponding key value * value * key 1 * key@ 0 * key#v 0 * key=v 0 */ int Find_flag_value( struct line_list *l, char *key, char *sep ) { char *s = 0, *e; int n = 0; e = s = Find_value( l, key, sep ); if( s ){ n = strtol(s,&e,0); if( !e || *e ) n = 0; } DEBUG5( "Find_flag_value: key '%s', value '%d'", key, n ); return(n); } /* * char *Fix_val( char *s ) * passed: NULL, "", "@", "=xx", "#xx". * returns: "1", "1","0", "xx", "xx" */ char *Fix_val( char *t ) { int c = 0; char *s = t; if( s ){ while((c = cval(s)) && isspace(c) ) ++s; if( c == 0 ){ s = "1"; } else if( c == '@' ){ s = "0"; } else if( c == '=' || c == '#' ){ ++s; while((c = cval(s)) && isspace(c) ) ++s; } } else { s = "1"; } DEBUG5( "Fix_val: input '%s' output '%s'", t, s ); return( s ); } /* * Read_file_list( struct line_list *model, char *str * char *sep, int sort, char *keysep, int uniq, int trim, int marker ) * read the model information from these files * if marker != then add a NULL line after each file */ int Read_file_list( struct line_list *model, char *str, char *sep, int sort, char *keysep, int uniq, int trim, int marker, int doinclude, int nocomment ) { struct line_list l; int i, start, end, c=0, n, found; int readfile = 0; char *s, *t; Init_line_list(&l); DEBUG5("Read_file_list: '%s'", str ); Split( &l, str, Filesep, 0, 0, 0, 1, 0 ); start = model->count; for( i = 0; i < l.count; ++i ){ readfile |= Read_file_and_split( model, l.list[i], sep, sort, keysep, uniq, trim, nocomment ); if( doinclude ){ /* scan through the list, looking for include lines */ for( end = model->count; start < end; ){ t = 0; s = model->list[start]; if( s && (t = safestrpbrk( s, Whitespace )) ){ c = *t; *t = 0; } found = (t && !strcasecmp( s, "include" )); if( t ) *t = c; if( found ){ DEBUG3("Read_file_list: include '%s'", t+1 ); Read_file_list( model, t+1, sep, sort, keysep, uniq, trim, marker, doinclude, nocomment ); /* at this point the include lines are at * end to model->count-1 * we need to move the lines from start to end-1 * to model->count, and then move end to start */ n = end - start; Check_max( model, n ); /* copy to end */ if(DEBUGL5)Dump_line_list("Read_file_list: include before", model ); memmove( &model->list[model->count], &model->list[start], n*sizeof(char *) ); memmove( &model->list[start], &model->list[end],(model->count-start)*sizeof(char *)); if(DEBUGL5)Dump_line_list("Read_file_list: include after", model ); end = model->count; start = end - n; DEBUG5("Read_file_list: start now '%s'",model->list[start]); /* we get rid of include line */ memmove( &model->list[start], &model->list[start+1], n*sizeof(char *) ); --model->count; end = model->count; } else { ++start; } } } if( marker ){ Check_max( model, 1 ); model->list[model->count++] = 0; } } Free_line_list(&l); if(DEBUGL5)Dump_line_list("Read_file_list: result", model); return( readfile ); } void Read_fd_and_split( struct line_list *list, int fd, char *sep, int sort, char *keysep, int uniq, int trim, int nocomment ) { int size = 0, count, len; char *sv; char buffer[LARGEBUFFER]; sv = 0; while( (count = read(fd, buffer, sizeof(buffer)-1)) > 0 ){ buffer[count] = 0; len = size+count+1; if( (sv = realloc_or_die( sv, len,__FILE__,__LINE__)) == 0 ){ Errorcode = JABORT; LOGERR_DIE( "Read_file_and_split: realloc %d failed", len ); } memmove( sv+size, buffer, count ); size += count; sv[size] = 0; } close( fd ); Split( list, sv, sep, sort, keysep, uniq, trim, nocomment ); free( sv ); } int Read_file_and_split( struct line_list *list, char *file, char *sep, int sort, char *keysep, int uniq, int trim, int nocomment ) { int fd; DEBUG5("Read_file_and_split: '%s', trim %d, nocomment %d", file, trim, nocomment ); if( (fd = open( file, O_RDONLY )) < 0 ){ FATAL("Read_file_and_split: cannot open file '%s' - %s", file, Errormsg(errno)); return 0; } Set_max_fd(fd); Read_fd_and_split( list, fd, sep, sort, keysep, uniq, trim, nocomment ); return(1); } /* * char *Select_model_info( struct line_list *list, struct line_list *model, * char *id ) * Select the ifhp model information, using the id value for selection. * model = where the returned values are kept * key=value format * list = where the values are found, i.e. - the raw config file * id = id which we use for information * init = flag to indicate if we assume the information at the start * of the config list is default information * 0 - lines at start not in a configuration entry are * default information * 1 - ignore lines at start not in a configuration entry * returns: 0 if not found, 1 if found */ int Select_model_info( struct line_list *model, struct line_list *list, char *id, int init, int depth, int maxdepth ) { int i, j, c, state = 0, append = 0, prefix = 0; char *s, *t, *u, *v; struct line_list keys; char keybuf[64]; int found_model = 0; state = init; DEBUG1("Select_model_info: id '%s', list->count %d, model->count %d, init %d", id, list->count, model->count, init ); Init_line_list( &keys ); keybuf[0] = 0; for( i = 0; i < list->count; ++i ){ Free_line_list(&keys); s = list->list[i]; if( s == 0 ){ /* end of a file found with include operations */ state = init; continue; } /* remove TRAILING blanks */ t = s + strlen(s); while( t > s && isspace(cval(t-1)) ) --t; *t = 0; DEBUG5("Select_model_info: doing '%s', id '%s'", s, id); /* check for comment */ for( t = s; isspace(cval(t)); ++t ); if( *t == 0 || *t == '#' ){ continue; } /* check for group or information */ DEBUG5("Select_model_info: state %d doing '%s', id '%s'", state, s, id); /* we have a group line */ if( *s == '[' ){ Split( &keys, s, List_sep, 0, 0, 0, 1, 0 ); state = 1; keybuf[0] = 0; DEBUG5("Select_model_info: group '%s' to id '%s'", s, id ); for( j = 0; j < keys.count && (state = Globmatch( keys.list[j],id )); ++j ); DEBUG5("Select_model_info: state %d after model '%s' Globmatch to '%s'", state, id, s ); if( !found_model ) found_model = (state == 0); continue; } /* are we ignoring lines until the next group line? */ if( state ){ continue; } /* is this to be appended to the current entry? */ if( isspace(cval(s)) || cval(s) == ']' ){ if(keybuf[0] == 0 ){ Errorcode = JABORT; FATAL("Select_model_info: no key value for continuation line '%s'", s ); } if( !Find_last_key( model, keybuf, Value_sep, &j ) ){ t = model->list[j]; } else { Errorcode = JABORT; FATAL("Select_model_info: LOGIC ERROR! key '%s' and not in list", keybuf ); } u = safestrpbrk( t, Value_sep ); if( u == 0 || *u != '=' ){ Errorcode = JABORT; FATAL("Select_model_info: LOGIC ERROR! entry '%s' not string setting", t ); } model->list[j] = safeextend3(t,"\n",s+1,__FILE__,__LINE__); continue; } /* we have a new key */ keybuf[0] = 0; /* we find the key from the line */ /* trim line, removing extra blanks before and after 'Value_sep' separator */ /* we change xxx XX xxx to xxxXX xxx */ while( (t = safestrpbrk( s, Value_sep )) && isspace( cval(t) ) ){ memmove(t, t+1, strlen(t)+1 ); } if( s == t ){ Errorcode = JABORT; FATAL("Select_model_info: missing key - '%s'", s ); } /* we change xxxXX xxx to xxxXXxxx */ if( (u = t) && *u ) while( isspace(cval(u+1)) ) ++u; if( u != t ) memmove(t+1, u+1, strlen(u+1)+1 ); prefix = append = c = 0; /* we check for the key=value, key+=value, or key-=value */ c = 0; if( t ){ c = *t; *t = 0; } if( *s == 0 ){ *t = c; Errorcode = JABORT; FATAL("Select_model_info: no tag - '%s'", s ); } if( c == '@' && t[1] ){ Errorcode = JABORT; FATAL("Select_model_info: bad format for '@' value - '%s'", s ); } if( t && c == '=' && ((append = (t[-1] == '+')) || (prefix = (t[-1] == '-'))) ){ memmove(t,t+1,strlen(t+1)+1); --t; *t = 0; } lowercase(s); strncpy( keybuf, s, sizeof(keybuf)); if( strlen(s) != strlen(keybuf) ){ Errorcode = JABORT; FATAL("Select_model_info: id too long '%s'", s ); } if( t ){ *t = c; }; /* process the information in the entry */ if( !strcasecmp( "tc", keybuf ) ){ DEBUG5("Select_model_info: tc '%s'", t ); if( t && cval(t) && cval(t+1) ){ struct line_list entries; Init_line_list(&entries); Split( &entries, t+1, Filesep, 0, 0, 0, 1, 0 ); for( j = 0; j < entries.count; ++j ){ s = entries.list[j]; if( depth < maxdepth ){ DEBUG5("Select_model_info: tc processing '%s'", s ); if( !Select_model_info( model, list, s, 1, depth+1, maxdepth) ){ Errorcode = JABORT; FATAL("Select_model_info: could not find tc entry '%s'", s ); } } else { Errorcode = JABORT; FATAL("Select_model_info: recursion depth %d larger than %d", depth+1, maxdepth ); } } Free_line_list(&entries); } } else if( (append || prefix) && !Find_last_key( model, keybuf, Value_sep, &j ) ){ u = model->list[j]; if( !(v = safestrpbrk( u, Value_sep )) || *v != '=' ){ Errorcode = JABORT; FATAL("Select_model_info: cannot append '%s' to '%s'", s, u ); } if( t[1] ){ if( append ){ model->list[j] = safestrdup2(u,t+1,__FILE__,__LINE__); } else { model->list[j] = safestrdup2(t+1,u,__FILE__,__LINE__); } free(u); } } else { Add_line_list( model, s, Value_sep, 1, 1 ); } } Free_line_list(&keys); if(DEBUGL5) Dump_line_list( "Select_model_info- end", model ); return(found_model); } void Remove_line_list( struct line_list *l, int n ) { if( l && n < l->count){ if( l->list[n] ) free(l->list[n]); l->list[n] = 0; --l->count; while( n < l->count ){ l->list[n] = l->list[n+1]; ++n; } } if(DEBUGL4) Dump_line_list( "Remove_line_list: after", l ); } /* * Set_str_value( struct line_list *l, char *key, char *value ) * set a string value in an ordered, sorted list */ void Set_str_value( struct line_list *l, char *key, const char *value ) { char *s = 0; int mid; if( key == 0 ) return; if( value && *value ){ s = safestrdup3(key,"=",value,__FILE__,__LINE__); Add_line_list(l,s,Value_sep,1,1); if(s) free(s); s = 0; } else if( !Find_first_key(l, key, Value_sep, &mid ) ){ Remove_line_list(l,mid); } } char *Join_vector( char **list, int count, char *sep ) { char *s, *t, *str = 0; int len = 0, i, n = 0; if( sep ) n = strlen(sep); for( i = 0; i < count; ++i ){ s = list[i]; if( s && *s ) len += strlen(s) + n; } if( len ){ str = malloc_or_die(len+1,__FILE__,__LINE__); t = str; for( i = 0; i < count; ++i ){ s = list[i]; if( s && *s ){ strcpy( t, s ); t += strlen(t); if( n ){ strcpy(t,sep); t += n; } } } *t = 0; } return( str ); } char *Join_line_list( struct line_list *l, char *sep ) { char *s = 0; if( l ) s = Join_vector( l->list, l->count, sep ); return(s); } char *Join_line_list_with_sep( struct line_list *l, char *sep ) { char *s = Join_line_list( l, sep ); int len = 0; if( sep ) len = strlen(sep); if( s ){ *(s+strlen(s)-len) = 0;; } return( s ); } /* * char *Get_file_image( char *dir, char *file ) * Get an image of a file */ char *Get_file_image( char *file ) { char *s = 0; char buffer[LARGEBUFFER]; int fd, n, len; DEBUG5("Get_file_image: '%s'", file ); if( file == 0 ) return(0); if( (fd = open( file, O_RDONLY )) >= 0 ){ Set_max_fd(fd); n = len = 0; while( (n = read(fd,buffer,sizeof(buffer))) > 0 ){ s = realloc_or_die(s,len+n+1,__FILE__,__LINE__); memmove(s+len,buffer,n); len += n; s[len] = 0; } close(fd); } return(s); } /* * char *safeextend2( char *s1, char *s2, char *file, int line ) * extends a malloc'd string * returns: malloced string area */ char *safeextend2( char *s1, const char *s2, const char *file, int line ) { char *s; int n = 1 + (s1?strlen(s1):0) + (s2?strlen(s2):0); s = realloc_or_die( s1, n, file, line ); if( s1 == 0 ) *s = 0; if( s2 ) strcat(s,s2); return(s); } /* * char *safeextend3( char *s1, char *s2, char *s3 char *file, int line ) * extends a malloc'd string * returns: malloced string area */ char *safeextend3( char *s1, const char *s2, const char *s3, const char *file, int line ) { char *s; int n = 1 + (s1?strlen(s1):0) + (s2?strlen(s2):0) + (s3?strlen(s3):0); s = realloc_or_die( s1, n, file, line ); if( s1 == 0 ) *s = 0; if( s2 ) strcat(s,s2); if( s3 ) strcat(s,s3); return(s); } void Set_max_fd(int n) { if( n > Max_fd ) Max_fd = n; } /* VARARGS2 */ #ifdef HAVE_STDARGS void safefprintf (int fd, char *format,...) #else void safefprintf (va_alist) va_dcl #endif { #ifndef HAVE_STDARGS int fd; char *format; #endif char buf[1024]; VA_LOCAL_DECL VA_START (format); VA_SHIFT (fd, int); VA_SHIFT (format, char *); buf[0] = 0; (void) VSNPRINTF (buf, sizeof(buf)) format, ap); Write_fd_str(fd,buf); } ifhp-3.5.20/src/ifhp.c0100644000175100017510000052631210130541266014652 0ustar papowellpapowell/************************************************************************** * Copyright 1994-2003 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER *****/ #include "patchlevel.h" static char *const _id = "Version " PATCHLEVEL "\n" "$Id: ifhp.c,v 1.105 2004/09/24 20:18:13 papowell Exp papowell $" "\n" "Copyright 1992-2002 Patrick Powell " "\n" ; #include "ifhp.h" #include "debug.h" /* * Main program: * 1. does setup - checks mode * 2. initializes connection * 3. initializes printer * 4. checks printer for idle status * 5. gets pagecount * 6. * if IF mode { * determines job format * - binary, PCL, PostScript, Text * if PCL then sets up PCL * if PostScript then sets up PostScript * if Text then * sets up Text * if text converter, runs converter * puts job out to printer * } * if OF mode { * reads input line; * if suspend string, then suspend * else pass through * } * 7. terminates job * 8. checks printer for end of job status * 9. gets page count */ char *Outbuf; /* buffer */ int Outmax; /* max buffer size */ int Outlen; /* length to output */ char *Inbuf; /* buffer */ int Inmax; /* max buffer size */ int Inlen; /* total input */ char *PJL_UEL_str = "\033%-12345X"; char *PJL_str = "@PJL\n"; char *PJL_INFO_PAGECOUNT_str = "@PJL INFO PAGECOUNT \n"; char Jobname[SMALLBUFFER]; char Job_ready_msg[SMALLBUFFER]; char End_ready_msg[SMALLBUFFER]; static void Pjl_displayname(void); int main(int argc,char *argv[], char *envp[]) { char errmsg[SMALLBUFFER]; struct stat statb; char *s, *dump, *pc_entry; int i, fd, c, do_pagecount, pagecount_ps, pagecount_pjl, pagecount_snmp; char *pagecount_prog; /* make sure that the NSLPATH cannot be use to compromisze root * run executables */ do_pagecount = pagecount_ps = pagecount_pjl = 0; pagecount_prog = 0; Trace_on_stderr = 0; Debug = 0; dump = 0; pc_entry = 0; /* Parse_debug("4,database+3",1); */ /* FATAL(LOGINFO)"%s",1); */ Argc = argc; Argv = argv; Envp = envp; if( argc ){ Name = argv[0]; if( (s = safestrrchr( Name, '/' )) ){ Name = s+1; } } else { Name = "????"; } /* initialize all of the OBJ global variables */ { OBJ ***list, **var; for( list = Var_list; (var = *list); ++list ){ *var = NEW_OBJ(0,MEMINFO); } } /* paranoia, or even tripletanoia */ if( (getuid() == 0 || geteuid() == 0) && getenv("NLSPATH") ){ #if defined(HAVE_UNSETENV) unsetenv("NLSPATH"); #elif defined(HAVE_SETENV) setenv("NLSPATH","",1); #elif defined(HAVE_PUTENV) putenv("NLSPATH="); #else #error need to have one of unsetenv(), setenv(), or putenv() #endif } #if HAVE_LOCALE_H setlocale(LC_ALL, ""); #endif bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); time( &Start_time ); /* do setup */ /* set up the accounting FD for output */ if( fstat(0,&statb) == -1 ){ Errorcode = JABORT; FATAL(LOGINFO) _("ifhp: stdin is not open")); } if( fstat(1,&statb) == -1 ){ Errorcode = JABORT; FATAL(LOGINFO) _("ifhp: stdout is not open")); } if( fstat(2,&statb) == -1 ){ if( (fd = open( "/dev/null", O_WRONLY )) != 2 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO) _("ifhp: open /dev/null failed") ); } } /* initialize input and output buffers */ Init_outbuf(); Init_inbuf(); /* * The order of processing of options is: * a) printcap - config extracted * b) printcap - ifhp=... from printcap processed * b) command line -T options extracted * c) value of 'config' and 'model' found from current set of options * d) ifhp.conf read for model information * e) printcap (options > 2 chars long), ifhp=... and -T options reprocessed */ pc_entry = getenv("PRINTCAP_ENTRY"); /* check the environment variables */ if( !ISNULL(pc_entry) ){ DEBUG3("main: PRINTCAP_ENTRY '%s'", pc_entry ); Split_STR_OBJ( /*p*/Printcap, /*nomod*/1, /*str*/pc_entry, /*type*/OBJ_T_HASH, /*linesep*/":", /*escape*/":", /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL3)SHORT_DUMP_OBJ("main: printcap PRINTCAP_ENTRY", Printcap ); /* now we add in the Printcap options */ for( i = 0; i < LEN_HASH_OBJ(Printcap); ++i ){ char *key = VAL_SHORTSTR_OBJ(KEY_HASH_OBJ(Printcap,i)); char *value = VAL_STR_OBJ(VALUE_HASH_OBJ(Printcap,i)); SET_HASH_STR_OBJ( Model, key, value, MEMINFO ); } if(DEBUGL3)SHORT_DUMP_OBJ("main: PRINTCAP_ENTRY", Model ); if( (s = GET_HASH_STR_OBJ(Model,"ifhp",MEMINFO)) ){ Fix_special_user_opts("PRINTCAP ifhp Topts", Topts, Unsorted_Topts, s ); } } if(DEBUGL3)SHORT_DUMP_OBJ("main: PRINTCAP_ENTRY", Model ); /* get the argument lists */ getargs( argc, argv ); for( i = 0; i < LEN_HASH_OBJ(Topts); ++i ){ char *key = VAL_SHORTSTR_OBJ(KEY_HASH_OBJ(Topts,i)); char *value = VAL_STR_OBJ(VALUE_HASH_OBJ(Topts,i)); SET_HASH_STR_OBJ( Model, key, value, MEMINFO ); } if(DEBUGL3)SHORT_DUMP_OBJ("main: After Topts Model", Model ); /* now figure out if there is an input file specified */ /* we extract the debug information */ if( (s = GET_HASH_STR_OBJ( Model, "trace", MEMINFO )) ){ Trace_on_stderr = 1; } DEBUG1("main: Trace_on_stderr '%d'", Trace_on_stderr ); if( (s = GET_HASH_STR_OBJ( Model, "debug", MEMINFO )) ){ Parse_debug(s,1); } DEBUG1("main: Debug '%d', DbgFlag 0x%x, inputfile '%s'", Debug, DbgFlag, InputFile ); /* check for config file */ dump = GET_HASH_STR_OBJ(Model,"dump",MEMINFO); Config_file = 0; if( ISNULL(Config_file) ) Config_file = GET_HASH_STR_OBJ(Model,"config",MEMINFO); if( ISNULL(Config_file) ) Config_file = IFHP_CONF; /* find the model id. First we check the Toptions, then * we check to see if we use a command line flag */ /* check for config file */ Model_id = 0; if( ISNULL(Model_id) ) Model_id = GET_HASH_STR_OBJ(Model,"model",MEMINFO); DEBUG1("main: dump %s",dump ); if( !Model_id && (s = GET_HASH_STR_OBJ(Topts,"model_from_option",MEMINFO)) ){ DEBUG1("main: checking model_from_option '%s'", s ); for( ; !Model_id && *s; ++s ){ c = cval(s); if( isupper(c) ) Model_id = Upperopts[c-'A']; if( islower(c) ) Model_id = Loweropts[c-'a']; } } DEBUG1("main: Model_id '%s'", Model_id ); DEBUG1("main: LANG '%s', 'TRANSLATE TEST' is '%s'", getenv("LANG"), _("TRANSLATE TEST")); /* read the configuration file(s) */ if( Read_file_list_OBJ( /*output*/Raw, /*filenames*/Config_file, /*directories*/0, /*required*/1, /*doinclude*/1, /*depth*/0, /*maxdepth*/4, /*type*/OBJ_T_LIST, /*linesep*/"\n", /*escape*/"\n", /*comment*/ '#', /*trim*/0, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, errmsg, sizeof(errmsg), MEMINFO ) < 0 ){ Errorcode = JABORT; FATAL(LOGINFO)_("main: '%s'"), errmsg ); } /* no configuration? big problems */ if( LEN_LIST_OBJ(Raw) == 0 ){ Errorcode = JABORT; FATAL(LOGINFO)_("main: no config file information in '%s'"), Config_file ); } DEBUGFC(DDB2)SHORT_DUMP_OBJ("main: Raw", Raw ); /* now we get the default values */ DEBUG1("main: scanning Raw for default, then model '%s'", Model_id ); Make_model_index( Raw, Index, Entries ); Select_model_info( Model, Index, Entries, "default", 0, 3 ); DEBUGFC(DDB1)SHORT_DUMP_OBJ("main: Model after defaults", Model ); if( Model_id && cval(Model_id) && safestrcasecmp(Model_id, "default") ){ DEBUG1("main: scanning for model '%s'", Model_id ); Select_model_info( Model, Index, Entries, Model_id, 0, 3 ); DEBUGFC(DDB2)SHORT_DUMP_OBJ("main: Model", Model ); } /* now we add in the Printcap options, overriding defaults AND printer entry */ /* we include only names > 2 chars long to avoid conflicts */ for( i = 0; i < Printcap->info.array.len; ++i ){ char *key = VAL_SHORTSTR_OBJ(KEY_HASH_OBJ(Printcap,i)); char *value = VAL_STR_OBJ(VALUE_HASH_OBJ(Printcap,i)); if( safestrlen(key) > 2 ){ SET_HASH_STR_OBJ( Model, key, value, MEMINFO ); } } /* now we add in the Topts, overriding defaults, printer entry, printcap */ for( i = 0; i < LEN_HASH_OBJ(Topts); ++i ){ char *key = VAL_SHORTSTR_OBJ(KEY_HASH_OBJ(Topts,i)); char *value = VAL_STR_OBJ(VALUE_HASH_OBJ(Topts,i)); SET_HASH_STR_OBJ( Model, key, value, MEMINFO ); } DEBUGFC(DDB2)SHORT_DUMP_OBJ("main: Model after Topts", Model ); /* handy way to get a dump of the configuration for the printer */ if( dump ){ FPRINTF(STDOUT, "Configuration for model='%s'", Model_id?Model_id:"default"); for( i = 0; i < LEN_LIST_OBJ(Model); ++i ){ s = GET_ENTRY_LIST_OBJ(Model,i); FPRINTF(STDOUT, "[%3d] %s\n", i, s ); } exit(0); } /* if we are in OF mode, get the of_options value */ if( OF_Mode && (s = GET_HASH_STR_OBJ( Model,"of_options", MEMINFO )) ){ Split_STR_OBJ( /*p*/Model, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/LISTSEP, /*escape*/LISTSEP, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); } /* set the named parameter variables with values */ Initialize_parms(Model, Valuelist ); if(DEBUGL2) Dump_parms( "main: variable values", Valuelist ); /* check for -Zlogall allowed, and set it */ if( (s = GET_HASH_STR_OBJ( Model, "user_opts", MEMINFO)) ){ Split_STR_OBJ( /*p*/User_opts, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/LISTSEP, /*escape*/LISTSEP, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: user_opts", User_opts); if( GET_HASH_IVAL_OBJ( Zopts, "logall" ) && GET_HASH_STR_OBJ( User_opts, "logall", MEMINFO ) ){ Logall = 1; } } /* clean up statusfile information */ if( Status_fd > 0 ){ Errorcode = JABORT; FATAL(LOGINFO)_("main: you opened the statusfile too early!!!")); } if( (s = Loweropts['s'-'a']) ) Statusfile = s; LOGMSG(LOG_INFO)_("main: using model '%s'"), Model_id?Model_id:_("DEFAULT")); /* if we have version request, print out the version */ if( Debug || GET_HASH_IVAL_OBJ(Topts,"version") || GET_HASH_IVAL_OBJ(Zopts,"version") ){ Write_fd_str(2,_id); } /* handle specifying foomatic in the printcap */ if(DEBUGL2)SHORT_DUMP_OBJ( "main: Model information", Model ); if(DEBUGL3)SHORT_DUMP_OBJ("Zopts",Zopts); if(DEBUGL3)SHORT_DUMP_OBJ("Topts",Topts); (void)signal(SIGPIPE, SIG_IGN); (void)signal(SIGCHLD, SIG_DFL); /* initializes connection */ if( Appsocket ){ if( ISNULL(Device) ){ Device = GET_HASH_STR_OBJ(Model, "lp", MEMINFO ); if( !(s = safestrchr(Device,'%')) ){ Errorcode = JABORT; FATAL(LOG_INFO)_("main: Appsocket and bad printcap :lp='%s'"), Device ); } } DEBUG1("main: appsocket device now '%s'", Device ); } if( !ISNULL(Device) ){ /* this is brutal, and will force a socket close */ #ifndef SHUT_RDRW #define SHUT_RDRW 2 #endif shutdown(1,SHUT_RDRW); /* now we do the close */ close(1); Open_device( Device ); } if( Status ){ /* if we have an SNMP monitor program then we * start it up. We make its FD 0 and FD 1 the * end of a bidirectional pipe */ if( Snmp_monitor ){ OBJ *l = 0; char **argv; int in[2], pid; l = NEW_OBJ(l,MEMINFO); #if !defined(HAVE_SOCKETPAIR) Errorcode = ABORT; FATAL(LOGINFO)_("ifhp: requires socketpair() system call for snmp monitoring")); #else if( socketpair( AF_UNIX, SOCK_STREAM, 0, in ) == -1 ){ Errorcode = JFAIL; LOGERR_DIE(LOG_INFO)_("ifhp: socketpair() failed")); } #endif if( ISNULL(Snmp_sync_status) ){ Errorcode = JABORT; FATAL(LOGINFO) _("ifhp: missing snmp_sync_status value") ); } if( ISNULL(Snmp_end_status) ){ Errorcode = JABORT; FATAL(LOGINFO) _("ifhp: missing snmp_end_status value") ); } if( ISNULL(Snmp_program) ){ Errorcode = JABORT; FATAL(LOGINFO) _("ifhp: missing snmp_monitor value") ); } DEBUG1("main: start snmp_dev %s, Device %s, :lp=%s", Snmp_dev, Device, GET_HASH_STR_OBJ(Model, "lp", MEMINFO ) ); if( ISNULL(Snmp_dev) ) Snmp_dev = Device; if( ISNULL(Snmp_dev) ) Snmp_dev = GET_HASH_STR_OBJ(Model, "lp", MEMINFO ); if( (s = safestrchr(Snmp_dev,'%')) ) *s = 0; LOGMSG(LOG_INFO)"snmp device '%s'", Snmp_dev ); if( ISNULL(Snmp_dev) ){ Errorcode = JABORT; FATAL(LOGINFO) _("ifhp: missing snmp_dev device")); } DEBUG1("main: snmp_monitor device now '%s'", Snmp_dev ); SET_HASH_STR_OBJ( Model,"snmp_dev",Snmp_dev,MEMINFO); s = Fix_option_str( Snmp_program, 0, 1, 0 ); DEBUG1("using snmp_program '%s'", s ); Split_cmd_line_OBJ( l, s ); argv = GET_LIST_OBJ(l); if( stat(argv[0],&statb) ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("ifhp: missing snmp_program '%s'"), Snmp_program ); } /* now we exec the filter process */ if( (pid = fork()) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("ifhp: fork failed")); } else if( pid == 0 ){ char **argv = GET_LIST_OBJ(l); char buffer[64]; dup2(in[1], 0); dup2(in[1], 1); close_on_exec(3); execve( argv[0], argv, Envp ); /* ooops... error */ SNPRINTF(buffer,sizeof(buffer)) _("execv '%s' failed - %s"), argv[0], Errormsg(errno) ); Write_fd_str(2,buffer); exit(JABORT); } SAFEFREE(s); FREE_OBJ(l); l = 0; close(in[1]); Snmp_fd = in[0]; Set_max_fd(Snmp_fd); DEBUG4("ifhp: Snmp_fd '%d'", Snmp_fd ); } else { Status = Fd_readable(1, &Poll_for_status); } } if( Poll_for_status ){ /* handles the status case with the timeout */ if( Dev_sleep <= 0 ) Dev_sleep = 100; } DEBUG1("main: poll for status %d, Dev_sleep %d msec", Poll_for_status, Dev_sleep); Set_block_io( 0 ); Set_block_io( 1 ); /* set the keepalive options */ Set_keepalive(1); /* get the various options */ if( (s = GET_HASH_STR_OBJ( Model, "pjl_only", MEMINFO)) ){ lowercase(s); Split_STR_OBJ( /*p*/Pjl_only, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Pjl_only", Pjl_only); } if( (s = GET_HASH_STR_OBJ( Model, "pjl_except", MEMINFO)) ){ lowercase(s); Split_STR_OBJ( /*p*/Pjl_except, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Pjl_except", Pjl_except); } if( (s = GET_HASH_STR_OBJ( Model, "pjl_options_set", MEMINFO)) ){ lowercase(s); Split_STR_OBJ( /*p*/Pjl_options_set, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Pjl_options_set", Pjl_options_set); } if( (s = GET_HASH_STR_OBJ( Model, "pjl_vars_set", MEMINFO)) ){ lowercase(s); DEBUG4("main: pjl_vars_set '%s'", s ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Pjl_vars_set BEFORE", Pjl_vars_set); Split_STR_OBJ( /*p*/Pjl_vars_set, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Pjl_vars_set", Pjl_vars_set); } if( (s = GET_HASH_STR_OBJ( Model, "pjl_vars_except", MEMINFO)) ){ lowercase(s); Split_STR_OBJ( /*p*/Pjl_vars_except, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Pjl_vars_except", Pjl_vars_except); } if( (s = GET_HASH_STR_OBJ( Model, "pjl_user_opts", MEMINFO)) ){ lowercase(s); Split_STR_OBJ( /*p*/Pjl_user_opts, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Pjl_user_opts", Pjl_user_opts); } if( (s = GET_HASH_STR_OBJ( Model, "pcl_user_opts", MEMINFO)) ){ lowercase(s); Split_STR_OBJ( /*p*/Pcl_user_opts, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Pcl_user_opts", Pcl_user_opts); } if( (s = GET_HASH_STR_OBJ( Model, "ps_user_opts", MEMINFO)) ){ lowercase(s); Split_STR_OBJ( /*p*/Ps_user_opts, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Ps_user_opts", Ps_user_opts); } if( (s = GET_HASH_STR_OBJ( Model, "pjl_error_codes", MEMINFO)) ){ Split_STR_OBJ( /*p*/Pjl_error_codes, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/"\n", /*escape*/"\n", /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Pjl_error_codes", Pjl_error_codes); } if( (s = GET_HASH_STR_OBJ( Model, "pjl_alert_codes", MEMINFO)) ){ Split_STR_OBJ( /*p*/Pjl_alert_codes, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Pjl_alert_codes", Pjl_alert_codes); } if( (s = GET_HASH_STR_OBJ( Model, "pjl_quiet_codes", MEMINFO)) ){ Split_STR_OBJ( /*p*/Pjl_quiet_codes, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Pjl_quiet_codes", Pjl_quiet_codes); } if( (s = GET_HASH_STR_OBJ( Model, "status_ignore", MEMINFO)) ){ Split_STR_OBJ( /*p*/Ignore, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Status_ignore", Ignore); } if( (s = GET_HASH_STR_OBJ( Model, "status_translate", MEMINFO)) ){ Split_STR_OBJ( /*p*/Translate, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Status_translate", Translate); } if( (s = GET_HASH_STR_OBJ( Model, "snmp_status_fields", MEMINFO)) ){ Split_STR_OBJ( /*p*/Status_fields, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL4)SHORT_DUMP_OBJ("main: Snmp_status_fields", Status_fields); } do_pagecount = Check_pagecount(&pagecount_ps, &pagecount_pjl, &pagecount_prog, &pagecount_snmp ); /* now the real work */ Process_job(do_pagecount, pagecount_ps, pagecount_pjl, pagecount_prog, pagecount_snmp ); /* cleanup and exit */ Errorcode = 0; Set_block_io(1); cleanup(0); return(0); } void cleanup(int sig) { if( Errorcode < 0 ) Errorcode = -Errorcode; DEBUG3("cleanup: Signal '%s', Errorcode %d", Sigstr(sig), Errorcode ); Set_block_io( 1 ); close(0); close(1); close(2); exit(Errorcode); } char *msg[] = { "usage: %s [-c] [-X arg]* [-Xarg] [acctfile]", " -c - the 'no formatting' legacy option for lpd filters", " -X arg", " -Xarg - options + arguments, all letters but Z and T, see LPRng documentation", " -Targ - special flags, set by administrator", " -Zarg - special flags, passed by user through to filter", " -= - special case, causes usage message", 0 }; void usage() { int i; for( i = 0; msg[i]; ++i ){ if( i ){ FPRINTF(STDERR, "%s\n", msg[i] ); } else { FPRINTF(STDERR, msg[i], Name ); FPRINTF(STDERR, "\n"); } } Parse_debug("=",-1); FPRINTF(STDERR,"%s\n", _id ); exit(1); } /* * getargs( int argc, char **argv ) * - get the options from the argument list */ void getargs( int argc, char **argv ) { int i, flag; char *arg, *s, m[2]; /* LOGMSG(LOG_INFO)"testing"); */ DEBUG3("getargs: starting, debug %d", Debug); for( i = 1; i < argc; ++i ){ arg = argv[i]; if( *arg++ != '-' ) break; flag = *arg++; if( flag == '-' ){ if( !cval(arg) ){ ++i; break; } DEBUG3("getargs: option --'%s'", arg); /* we have --key=value */ Fix_special_user_opts("Topts", Topts, Unsorted_Topts, arg ); continue; } if( flag == '=' ){ usage(); exit(1); } if( flag == 'c' ){ arg = "1"; } if( *arg == 0 ){ if( i < argc ){ arg = argv[++i]; } else { FATAL(LOGINFO) "missing argument for flag '%c'", flag ); } } /* we duplicate the strings */ DEBUG3("getargs: flag '%c'='%s'", flag, arg); if( islower(flag) ){ Loweropts[flag-'a'] = arg; } else if( isupper(flag) ){ switch( flag ){ case 'T': case 'Z': if( (s = Upperopts[flag-'A']) ){ Upperopts[flag-'A'] = safestrdup3(s,",",arg,MEMINFO); if( s ) SAFEFREE(s); } else { Upperopts[flag-'A'] = safestrdup(arg,MEMINFO); } break; default: Upperopts[flag-'A'] = arg; break; } } } if( i < argc ){ Accountfile = argv[i]; } else if( (s = Loweropts['a'-'a']) ){ Accountfile = s; } DEBUG1("getargs: finished options"); /* set the Topts and Zopts values */ memset(m,sizeof(m),0); m[0] = m[1] = 0; for( i = 'a'; i <= 'z'; ++i ){ m[0] = i; if( (s = Loweropts[i-'a']) ) SET_HASH_STR_OBJ(Topts,m,s,MEMINFO); } for( i = 'A'; i <= 'Z'; ++i ){ m[0] = i; if( (s = Upperopts[i-'A']) ) SET_HASH_STR_OBJ(Topts,m,s,MEMINFO); } if( (s = Upperopts['F'-'A']) && cval(s) == 'o' ){ OF_Mode = 1; } Fix_special_user_opts("Topts", Topts, Unsorted_Topts, Upperopts['T'-'A'] ); Fix_special_user_opts("Zopts", Zopts, Unsorted_Zopts, Upperopts['Z'-'A'] ); } void Fix_special_user_opts( char *name, OBJ *opts, OBJ *unsorted_opts, char *line ) { OBJ *l = 0, *v = 0; int i; char *s, *key, *value; DEBUG1("Fix_special_user_opts: %s - '%s'", name, line ); l = NEW_OBJ(l,MEMINFO); v = NEW_OBJ(v,MEMINFO); Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/line, /*type*/OBJ_T_LIST, /*linesep*/",", /*escape*/",", /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); for( i = 0; i < LEN_LIST_OBJ(l); ++i ){ s = GET_ENTRY_LIST_OBJ(l,i); Clear_OBJ(v); Split_STR_OBJ( /*p*/v, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/0, /*escape*/0, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); key = VAL_SHORTSTR_OBJ(KEY_HASH_OBJ(v,0)); value = VAL_STR_OBJ(VALUE_HASH_OBJ(v,0)); DEBUG1("Fix_special_user_opts: option '%s' = '%s'", key, value ); if( strcasecmp( key, "font") ){ OBJ *p = GET_HASH_OBJ(opts,key); if( !p ){ SET_HASH_STR_OBJ(opts,key,value,MEMINFO); } else { APPEND_STR_OBJ(MEMINFO,p,",",value,0); } } else { SET_HASH_STR_OBJ(opts,key,value,MEMINFO); } APPEND_LIST_OBJ(unsorted_opts,key,MEMINFO); } FREE_OBJ(v); v = 0; FREE_OBJ(l); l = 0; if(DEBUGL1){ char msg[128]; SNPRINTF(msg, sizeof(msg)) "Fix_special_user_opts - '%s' sorted", name ); SHORT_DUMP_OBJ(msg, opts ); SNPRINTF(msg, sizeof(msg)) "Fix_special_user_opts - '%s' unsorted", name ); SHORT_DUMP_OBJ(msg, unsorted_opts ); } } /* * Output buffer management * Set up and put values into an output buffer for * transmission at a later time */ void Init_outbuf() { DEBUG4("Init_outbuf: Outbuf 0x%lx, Outmax %d, Outlen %d", (long)Outbuf, Outmax, Outlen ); if( Outmax <= 0 ) Outmax = OUTBUFFER; if( Outbuf == 0 ) Outbuf = realloc_or_die( Outbuf, Outmax+1,MEMINFO); Outlen = 0; Outbuf[0] = 0; } void Put_outbuf_str( char *s ) { if( s && *s ) Put_outbuf_len( s, safestrlen(s) ); } void Put_outbuf_len( char *s, int len ) { DEBUG4("Put_outbuf_len: starting- Outbuf 0x%lx, Outmax %d, Outlen %d, len %d", (long)Outbuf, Outmax, Outlen, len ); if( s == 0 || len <= 0 ) return; if( Outmax - Outlen <= len ){ Outmax += ((OUTBUFFER + 1023 + len)/1024)*1024; Outbuf = realloc_or_die( Outbuf, Outmax+1,MEMINFO); DEBUG4("Put_outbuf_len: update- Outbuf 0x%lx, Outmax %d, Outlen %d, len %d", (long)Outbuf, Outmax, Outlen, len ); } memmove( Outbuf+Outlen, s, len ); Outlen += len; Outbuf[Outlen] = 0; } /* * Input buffer management * Set up and put values into an input buffer for * scanning purposes */ void Init_inbuf() { Inmax = LARGEBUFFER; Inbuf = realloc_or_die( Inbuf, Inmax+1,MEMINFO); Inbuf[Inmax] = 0; Inlen = 0; Inbuf[0] = 0; } void Put_inbuf_len( char *str, int len ) { DEBUG4("Put_inbuf_len: before buffer '%s', adding '%s', len %d", Inbuf, str, len ); if( Inbuf == 0 || Inmax - Inlen <= (len+1) ){ Inmax += ((LARGEBUFFER + len+1)/1024)*1024; Inbuf = realloc_or_die( Inbuf, Inmax+1,MEMINFO); if( !Inbuf ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO) _("Put_outbuf_len: realloc %d failed"), len ); } } memmove( Inbuf+Inlen, str, len+1 ); Inlen += len; Inbuf[Inlen] = 0; DEBUG4("Put_inbuf_len: buffer '%s'", Inbuf ); } /* * void Get_inbuf_str() * get a line from the input buffer and parse it for printer * status */ static char *PS_ctrl = "\004\014\024\034"; void Get_inbuf_str(void) { int c; char *s, *t, *u, *v; /* DEBUG4("Get_inbuf_str: buffer '%s'", Inbuf); */ Inbuf[Inlen] = 0; /* remove \r */ for( s = Inbuf; (s = safestrchr( s, '\r' )); ){ memmove( s, s+1, safestrlen(s)+1 ); } for( s = Inbuf; (t = safestrpbrk( s, LINEENDS )); s = t ){ *t++ = 0; DEBUG4("Get_inbuf_str: found '%s'", s); /* check to see if you have a %%[ ... ]%% */ while( (v = strstr(s,"%%[")) && (u = strstr(v,"]%%")) ){ u += 3; c = cval(u); *u = 0; Pr_status( v ); *u = c; s = u; } /* now we treat ^D and ^T like NL */ while( (u = safestrpbrk(s,PS_ctrl)) ){ *u++ = 0; Pr_status( s ); s = u; } if( !ISNULL(s) ){ Pr_status( s ); } } /* check to see if you have a %%[ ... ]%% */ while( (v = strstr(s,"%%[")) && (u = strstr(v,"]%%")) ){ u += 3; c = cval(u); *u = 0; Pr_status( v ); *u = c; s = u; } /* now we treat ^D and ^T like NL */ while( (u = safestrpbrk(s,PS_ctrl)) ){ *u++ = 0; Pr_status( s ); s = u; } memmove( Inbuf, s, safestrlen(s)+1 ); DEBUG4("Get_inbuf_str: final '%s'", Inbuf); Inlen = safestrlen(Inbuf); } /* * Printer Status Reporting * PJL: * We extract info of the form: * @PJL XXXX P1 P2 ... * V1 * V2 * we have * PJL USTATUS JOB * END/START (next line) * KEY=VALUE (next lines) * PJL USTATUS TIMED * KEY=VALUE (next lines) * PJL USTATUS PAGE * pagecount - some printers * PAGES=VALUE - some printers * PJL INFO ID * printer information (next line) * ID=xxxx - some printers * xxxxxx - other printers * PJL INFO PAGECOUNT * pagecount information (next line) * PAGECOUNT=xxxx - some printers * xxxxxx - other printers * PJL ECHO xxxxxx - echo information * * - we put this into the 'current status' array * PostScript: * We extract info of the form: * %%[ key: value value key: value value ]%% * we then create strings * key=value value * - we put this into the 'current status' array * */ void Pr_status( char *str ) { char *s, *t; int c, i, pjlline, found; char *ps_str, *eq_line; OBJ *l = 0; static char *pjlvar; static int infovar; l = NEW_OBJ(l,MEMINFO); c = pjlline = found = 0; ps_str = eq_line = 0; DEBUG2("Pr_status: start str '%s', pjlvar '%s', infovar %d", str, pjlvar, infovar ); /* if(DEBUGL4)SHORT_DUMP_OBJ("Pr_status - before Devstatus", Devstatus); */ if( Logall && str ){ LOGMSG(LOG_INFO) _("Pr_status: printer status '%s'"), str ); } /* if the previous line was a PJL line, then the * last entry may be a variable name and the next * line a value for it. We need to append to the variable value */ trunc_str(str); while( isspace(cval(str)) ) ++str; pjlline = !safestrncasecmp( str, "@PJL",4); if( (ps_str = safestrstr( str,"%%[" )) ){ ps_str += 3; } else { /* look for key=value */ eq_line = safestrchr( str, '=' ); } if( ISNULL(str) ) return; if( pjlline ){ /* we have *PJL USTATUS JOB * END/START (next line) * KEY=VALUE (next lines) *PJL USTATUS TIMED * KEY=VALUE (next lines) *PJL USTATUS PAGE * pagecount - some printers * PAGE=VALUE - some printers *PJL INFO ID * printer information (next line) * ID=xxxx - some printers * xxxxxx - other printers *PJL INFO PAGECOUNT * pagecount information (next line) * PAGECOUNT=xxxx - some printers * xxxxxx - other printers *PJL ECHO xxxxxx - echo information */ DEBUG4("Pr_status: doing PJL status on '%s'", str); if( pjlvar ) SAFEFREE(pjlvar); pjlvar = 0; infovar = 0; if( (s = safestrstr( str, " ECHO ") ) ){ /* we have the echo value */ SET_HASH_STR_OBJ(Devstatus,"echo",s+6,MEMINFO); DEBUG4("Pr_status: found echo '%s'", s+6 ); } else { int n; char *s; /* get the last entry on the line - name of PJL variable */ Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/str, /*type*/OBJ_T_LIST, /*linesep*/WHITESPACE, /*escape*/WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); n = LEN_LIST_OBJ(l); if( n > 2 ){ /* get the last keyword */ s = GET_ENTRY_LIST_OBJ(l,n-1); pjlvar = safestrdup2(s,"=",MEMINFO); s = GET_ENTRY_LIST_OBJ(l,n-2); infovar = !safestrcasecmp(s,"INFO"); } DEBUG4("Pr_status: PJL var '%s', infovar %d", pjlvar, infovar ); Clear_OBJ(l); } } else if( eq_line ){ /* now we check for xx=value entries */ Check_device_status(str, infovar ); if( pjlvar ) SAFEFREE(pjlvar); pjlvar = 0; infovar = 0; } else if( ps_str ){ int found_error = 0; char value[SMALLBUFFER]; if( pjlvar ) SAFEFREE(pjlvar); pjlvar = 0; /* we do Postscript status */ if( !ps_str ) ps_str = str; if( (s = safestrstr(ps_str, "]%%")) ) *s = 0; Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/ps_str, /*type*/OBJ_T_LIST, /*linesep*/WHITESPACE, /*escape*/WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); DEBUG4("Pr_status: PostScript info '%s'", ps_str ); if(DEBUGL4)SHORT_DUMP_OBJ("Pr_status: PostScript", l); value[0] = 0; for( i = 0; i < LEN_LIST_OBJ(l); ++i ){ s = GET_ENTRY_LIST_OBJ(l,i); DEBUG4("Pr_status: list [%d]='%s', value '%s'", i, s, value ); if( (t = safestrchr(s,':')) && t != s ){ DEBUG4("Pr_status: found ps status '%s'",value ); if( value[0] ){ int n = strlen(value); if( cval(value+n-1) == ';' ){ value[n-1] = 0; } Check_device_status(value, 0); } *t++ = 0; if( !found_error ) found_error = !safestrcasecmp(s,"error"); safestrncpy(value,s); safestrncat(value,"="); safestrncat(value,t); } else if( value[0] ){ int n = safestrlen(value); if( cval(value+n-1) != '=' ){ safestrncat( value, " "); } safestrncat( value, s); } } if( value[0] ){ int n = strlen(value); if( cval(value+n-1) == ';' ){ value[n-1] = 0; } DEBUG4("Pr_status: found ps status '%s'",value ); Check_device_status(value, 0); } if( found_error ){ Errorcode = JFAIL; FATAL(LOG_INFO)"Pr_status: %s", ps_str ); } Clear_OBJ(l); } else if( pjlvar ){ /* from the previous line */ int n = safestrlen(pjlvar); if( cval(pjlvar+n-1) != '=' ){ pjlvar = safeextend3(pjlvar,"\n",str, MEMINFO); } else { pjlvar = safeextend2(pjlvar,str, MEMINFO); } DEBUG4("Pr_status: pjlvar '%s'", pjlvar ); Check_device_status(pjlvar, infovar ); } /* if(DEBUGL4)SHORT_DUMP_OBJ("Pr_status - Devstatus", Devstatus); */ FREE_OBJ(l); l = 0; } /* * Check_device_status( char *line, int infovar ) * - the line has to have the form DEVICE="nnn" * - if infovar != 0, then previous lines was PJL INFO */ void Check_device_status( char *line, int infovar ) { char *old, *value, *handler = 0, *s; int i, c, alert, fd, found, n, ignore = 0; char fixed_value[SMALLBUFFER]; DEBUG2("Check_device_status: '%s'", line ); lowercase(line); if( !(value = safestrchr( line, '=')) ){ return; } /* remove trailing spaces and leading and trailing quotes */ { s = value; while( s > line && isspace(cval(s-1)) ) --s; *s = 0; if( ISNULL(line) ) return; } *value++ = 0; /* turn blanks to _ */ { s = line; for( s = line; (c = cval(s)); ++s ){ if( isspace(c) ) *s = '_'; } } /* check for translation */ found = 0; for( i = 0; !found && i < LEN_LIST_OBJ(Translate); ++i ){ char *t; s = GET_ENTRY_LIST_OBJ(Translate,i); t = safestrchr(s,'='); DEBUG2("Check_device_status: test translate '%s' to '%s'", line, s ); if( t ){ *t = 0; if( (found = !Globmatch(s,line )) ){ line = t+1; } *t = '='; } } DEBUG2("Check_device_status: we have key '%s'", line ); /* now we see if it is to be ignored */ for( i = 0; i < LEN_LIST_OBJ(Ignore); ++i ){ s = GET_ENTRY_LIST_OBJ(Ignore,i); if( !Globmatch( GET_ENTRY_LIST_OBJ(Ignore,i), line ) ){ DEBUG2("Check_device_status: ignoring '%s'", line ); ignore = 1; break; } } /* remove leading spaces from status */ while( isspace(cval(value)) ) ++value; if( cval(value) == '"' ){ ++value; if( (s = strchr(value,'"')) ) *s = 0; } safestrncpy(fixed_value,value); for( s = fixed_value; (c = cval(s)); ++s ){ if( isspace(c) ) *s = '_'; } DEBUG2("Check_device_status: key '%s', value '%s'", line, value ); if( !(old = GET_HASH_STR_OBJ( Devstatus, line, MEMINFO )) || strcmp(old,fixed_value) ){ if( !strcasecmp(line,"code") ){ DEBUG4("Check_device_status: CODE '%s'", value ); /* we now have to check to see if we log this */ found = 0; for( i = 0; !found && i < LEN_LIST_OBJ(Pjl_quiet_codes); ++i ){ found = !Globmatch( GET_ENTRY_LIST_OBJ(Pjl_quiet_codes,i), value ); } DEBUG4("Check_device_status: CODE '%s' quiet code %d", value, found ); if( !found ){ /* ok, we log it */ char msg[SMALLBUFFER]; Check_code( value, msg, sizeof(msg) ); alert = 0; for( i = 0; !alert && i < LEN_LIST_OBJ(Pjl_alert_codes); ++i ){ alert = !Globmatch(GET_ENTRY_LIST_OBJ(Pjl_alert_codes,i),value); } if( alert ){ handler = GET_HASH_STR_OBJ( Model,"pjl_alert_handler", MEMINFO ); handler = Fix_option_str( handler, 0, 1, 1 ); } DEBUG4("Check_device_code: alert %d, handler '%s'",alert,handler); LOGMSG(LOG_INFO)_("Check_device_status: code = %s, '%s'%s"), value, msg, alert?", ALERT OPERATOR":"" ); if( handler ){ fd = Make_tempfile(); if( Write_fd_str( fd, msg ) < 0 || Write_fd_str(fd, "\n" ) < 0 ){ LOGERR_DIE(LOGINFO) _("Check_device_status: write(fd %d) failed"), fd ); } if( lseek(fd,0,SEEK_SET) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Check_device_status: lseek failed")); } Filter_file( handler, _("ALERT"), fd, -1, 0, 0 ); close(fd); } if( handler ) SAFEFREE( handler ); handler = 0; } } else if( !ignore ){ DEBUG4("Check_device_status: '%s' old status '%s', new '%s'", line, old, value ); LOGMSG(LOG_INFO)"Check_device_status: %s = '%s'", line, value ); } DEBUG4("Check_device_status: '%s' setting = '%s'", line, value ); SET_HASH_STR_OBJ( Devstatus, line, fixed_value, MEMINFO ); } } /* * void Initialize_parms( OBJ *list, struct keyvalue *valuelist ) * Initialize variables from values in a parameter list * This list has entries of the form key=value * If the variable is a flag, then entry of the form 'key' will set * it, and key@ will clear it. * * list = key list, i.e. - strings of form key=value * count = number of entries in key list * valuelist = variables and keys to use to set them */ void Initialize_parms( OBJ *list, struct keyvalue *valuelist ) { struct keyvalue *v; char *arg, *convert; int n; for( v = valuelist; v && v->key; ++v ){ if( (arg = GET_HASH_STR_OBJ( list, v->key, MEMINFO)) ){ switch( v->kind ){ case STRV: *(char **)v->var = safestrdup(arg, MEMINFO); break; case INTV: case FLGV: convert = arg; n = strtol( arg, &convert, 10 ); if( convert != arg ){ *(int *)v->var = n; } else { *(int *)v->var = ( !strcasecmp( arg, "yes" ) || !strcasecmp( arg, "on" ) || !strcasecmp( arg, _("yes") ) || !strcasecmp( arg, _("on") ) ); } break; } } } } /* * Dump_parms( char *title, struct keyvalue *v ) * Dump the names, config file tags, and current values of variables * in a value list. */ void Dump_parms( char *title, struct keyvalue *v ) { LOGDEBUG( "Dump_parms: %s", title ); for( v = Valuelist; v->key; ++v ){ switch( v->kind ){ case STRV: LOGDEBUG( " '%s' (%s) STRV = '%s'", v->varname, v->key, *(char **)v->var ); break; case INTV: LOGDEBUG( " '%s' (%s) INTV = '%d'", v->varname, v->key, *(int *)v->var ); break; case FLGV: LOGDEBUG( " '%s' (%s) FLGV = '%d'", v->varname, v->key, *(int *)v->var ); break; } } } /* * Process the job - we do this for both IF and OF modes */ void Process_job( int do_pagecount, int pagecount_ps, int pagecount_pjl, char *pagecount_prog, int pagecount_snmp ) { struct stat statb; int in_fd, out_fd, tempfd, startpagecounter, suspend; Init_outbuf(); startpagecounter = 0; Pjl_displayname(); LOGMSG(LOG_INFO) _("Process_job: setting up printer")); in_fd = out_fd = tempfd = -1; if( OF_Mode ){ if( (in_fd=dup(0)) == -1){ Errorcode = JFAIL; LOGERR_DIE(LOGINFO) _("Process_job: dup(0) failed") ); } if( !Appsocket && (out_fd=dup(1)) == -1){ Errorcode = JFAIL; LOGERR_DIE(LOGINFO) _("Process_job: dup(1) failed") ); } tempfd = Make_tempfile(); LOGMSG(LOG_INFO) _("Process_job: starting OF mode passthrough") ); Start_of_job(&startpagecounter, do_pagecount, pagecount_ps, pagecount_pjl, 0, pagecount_prog, pagecount_snmp ); do{ if( lseek(tempfd,0,SEEK_SET) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Process_job: lseek of tempfd failed")); } if( ftruncate(tempfd,0) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Process_job: ftruncate of tempfd failed")); } /* see if we need to suspend */ if( dup2(tempfd,1) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Process_job: tempfd dup2(%d,1) failed"), tempfd); } suspend = Process_OF_mode(); if( fstat(tempfd,&statb) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Process_job: stat failed")); } /* anything to write */ if( statb.st_size ){ double f = statb.st_size; if( lseek(tempfd,0,SEEK_SET) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Process_job: lseek failed")); } if( dup2(tempfd,0) == -1 ){ Errorcode = JFAIL; LOGERR_DIE(LOGINFO) _("Process_job: tempfd dup2() failed") ); } if( Appsocket ){ Open_device( Device ); DEBUG1("Process_job: Appsocket device open done"); } else if( dup2(out_fd,1) == -1 ){ Errorcode = JFAIL; LOGERR_DIE(LOGINFO) _("Process_job: outfd dup2(%d,1) failed"), out_fd ); } Start_of_job(0,0,0,0,1,0,0); LOGMSG(LOG_INFO) _("Process_job: sending %0.0f bytes of OF input"), f ); Send_job(); /* void End_of_job( int *startpagecounter, int do_pagecount, int pagecount_ps, int pagecount_pjl, int wait_for_end, int nested_job, int banner_page, char *pagecount_prog, int pagecount_snmp ) */ End_of_job(0,0,0,0,Wait_for_banner,1,1,0,0); } if( suspend ){ if( Appsocket ){ if( !Close_appsocket ){ int len; LOGMSG(LOG_INFO)_("Process_job: using shutdown on appsocket connection")); shutdown(1,1); do{ len = Read_status_timeout(0); } while( len == 0 ); /* we shut down the socket connection */ } DEBUG1("Process_job: Appsocket device close"); close(1); } else { Set_block_io(out_fd); } LOGMSG(LOG_INFO) _("Process_job: OF process suspending") ); if( Status_fd > 0 ){ close( Status_fd ); Status_fd = -2; } kill(getpid(), SIGSTOP); LOGMSG(LOG_INFO) _("Process_job: OF process running") ); } if( dup2(in_fd,0) == -1 ){ Errorcode = JFAIL; LOGERR_DIE(LOGINFO) _("Process_job: infd dup2(%d,1) failed"), in_fd ); } } while( suspend ); if( !Appsocket && dup2(out_fd,1) == -1 ){ Errorcode = JFAIL; LOGERR_DIE(LOGINFO) _("Process_job: outfd dup2(%d,1) failed"), out_fd ); } if( tempfd > 0 ) close(tempfd); tempfd = -1; close(in_fd); close(out_fd); End_of_job(&startpagecounter, do_pagecount, pagecount_ps, pagecount_pjl, 1, 0,0, pagecount_prog, pagecount_snmp ); LOGMSG(LOG_INFO) _("Process_job: ending OF mode passthrough") ); } else { Start_of_job(&startpagecounter, do_pagecount, pagecount_ps, pagecount_pjl, 0, pagecount_prog, pagecount_snmp ); LOGMSG(LOG_INFO) _("Process_job: sending job file") ); Send_job(); LOGMSG(LOG_INFO) _("Process_job: sent job file") ); End_of_job(&startpagecounter, do_pagecount, pagecount_ps, pagecount_pjl, 1, 0, 0, pagecount_prog, pagecount_snmp ); } LOGMSG(LOG_INFO) _("Process_job: done") ); } void Start_of_job( int *startpagecounter, int do_pagecount, int pagecount_ps, int pagecount_pjl, int nested_job, char *pagecount_prog, int pagecount_snmp ) { char *s; OBJ *l = 0; struct stat statb; l = NEW_OBJ(l,MEMINFO); DEBUG1("Start_of_job: do_pagecount %d, ps %d, pjl %d, prog '%s'", do_pagecount, pagecount_ps, pagecount_pjl, pagecount_prog ); if( Appsocket && fstat(1,&statb) == -1 ){ Open_device( Device ); DEBUG1("Start_of_job: Appsocket device open done"); } if( fstat(1,&statb) == -1 ){ Errorcode = JABORT; FATAL(LOGINFO) _("Start_of_job: fd 1 not open") ); } Set_block_io(1); if( Status ){ SET_HASH_STR_OBJ(Devstatus,"pagecount",0,MEMINFO); Do_sync(Sync_timeout, Sync_interval, pagecount_pjl && do_pagecount ); if( do_pagecount && Pagecount_start && startpagecounter ){ *startpagecounter = Do_pagecount(Pagecount_timeout, Pagecount_interval, Pagecount_poll_start?Pagecount_poll_start:Pagecount_poll, pagecount_ps, pagecount_pjl, pagecount_prog, pagecount_snmp ); /* if we have Appsocket then we need to reopen the connection */ } if( Appsocket ){ DEBUG1("Start_of_job: Appsocket device close"); close(1); Open_device( Device ); DEBUG1("Start_of_job: Appsocket device open done"); } } if( startpagecounter ){ Do_accounting(1, 0, *startpagecounter, 0 ); } Init_outbuf(); DEBUG1("Start_of_job: doing 'init'"); if( (s = GET_HASH_STR_OBJ( Model, "init", MEMINFO)) ){ DEBUG1("Start_of_job: 'init'='%s'", s); Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); Resolve_list( "", l, 0, Put_pcl, 0, MAX_DEPTH ); Clear_OBJ(l); } if( Pjl ){ DEBUG1("Start_of_job: doing pjl"); Put_outbuf_str( PJL_UEL_str ); Put_outbuf_str( PJL_str ); if( !nested_job) Pjl_job(); Pjl_console_msg(1); if( (s = GET_HASH_STR_OBJ( Model, "pjl_init", MEMINFO)) ){ DEBUG1("Start_of_job: 'pjl_init'='%s'", s); Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); Resolve_list( "pjl_", l, 0, Put_pjl, 0, MAX_DEPTH ); Clear_OBJ(l); } if( !OF_Mode ){ DEBUG1("Start_of_job: 'pjl' and Zopts"); Resolve_user_opts( "pjl_", Pjl_user_opts, Unsorted_Zopts, Zopts, Put_pjl ); } DEBUG1("Start_of_job: 'pjl' and Topts"); Resolve_user_opts( "pjl_", Pjl_user_opts, Unsorted_Topts, Model, Put_pjl ); } if( Write_read_timeout( Outlen, Outbuf, Send_job_rw_timeout ) ){ Errorcode = JFAIL; FATAL(LOGINFO)_("Start_of_job: timeout")); } Init_outbuf(); FREE_OBJ(l); l = 0; } void End_of_job( int *startpagecounter, int do_pagecount, int pagecount_ps, int pagecount_pjl, int wait_for_end, int nested_job, int banner_page, char *pagecount_prog, int pagecount_snmp ) { char *s; OBJ *l = 0; int endpagecounter = 0; struct stat statb; /* make sure we clear the status */ l = NEW_OBJ(l,MEMINFO); Init_outbuf(); if( Appsocket && OF_Mode ){ Open_device( Device ); DEBUG1("End_of_job: Appsocket device open done"); } if( fstat(1,&statb) == -1 ){ if( Appsocket ){ Open_device( Device ); DEBUG1("End_of_job: Appsocket device open done"); } else { Errorcode = JFAIL; LOGERR_DIE(LOGINFO)_("End_of_job: FD 1 IS CLOSED AND ifhp DID NOT CLOSE IT")); } } Set_block_io(1); if( Pjl ){ DEBUG1("End_of_job: doing pjl at end"); Put_outbuf_str( PJL_UEL_str ); Put_outbuf_str( PJL_str ); Pjl_console_msg(1); if( !nested_job ) Pjl_eoj(Jobname); if( (s = GET_HASH_STR_OBJ( Model, "pjl_term", MEMINFO)) ){ DEBUG1("End_of_job: 'pjl_term'='%s'", s); Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); Resolve_list( "pjl_", l, 0, Put_pjl, 0, MAX_DEPTH ); Clear_OBJ(l); } } if( (s = GET_HASH_STR_OBJ( Model, "term", MEMINFO)) ){ DEBUG1("End_of_job: 'term'='%s'", s); Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); Resolve_list( "", l, 0, Put_pcl, 0, MAX_DEPTH ); Clear_OBJ(l); } if( Write_read_timeout( Outlen, Outbuf, Send_job_rw_timeout ) ){ Errorcode = JFAIL; FATAL(LOGINFO)_("End_of_job: timeout")); } Init_outbuf(); DEBUG1("End_of_job: end sync and pagecount, do_pagecount %d, ps %d, pjl %d, prog '%s', snmp %d", do_pagecount, pagecount_ps, pagecount_pjl, pagecount_prog, pagecount_snmp ); /* * Some badly bent or totally broken appsocket printers MUST * have a shutdown rather than a close done on the connection, * and the connection MUST stay open and MUST be read UNTIL * the printer is finished. This is really really maddening, * but that is the way it is done. * * if we are doing Appsocket * and we have shutdown_appsocket * THE we shutdown the Appsocket and read from it until EOF * We discard the data if Status@ */ if( Appsocket ){ if( !Close_appsocket ){ int len; DEBUG1("End_of_job: Appsocket device shutdown"); shutdown(1,1); do{ len = Read_status_timeout( 0 ); } while( len == 0 ); } DEBUG1("End_of_job: Appsocket device close"); close(1); /* the printer may not respond until it detects the end condition */ if( Status && Close_appsocket && Snmp_fd && Snmp_wait_after_close > 0 ){ sleep(Snmp_wait_after_close); } /* and yet another special case */ if( Status && wait_for_end && (Snmp_fd || cval(Waitend) == '|') ){ Do_waitend(Waitend_timeout, Waitend_interval, Ps_ctrl_t?Waitend_ctrl_t_interval:0, banner_page ); } } else if( Status && wait_for_end ){ /* we wait for the end normally */ Do_waitend(Waitend_timeout, Waitend_interval, Ps_ctrl_t?Waitend_ctrl_t_interval:0, banner_page ); } /* now get the pagecounter value */ if( Status && do_pagecount && Pagecount_end && startpagecounter ){ SET_HASH_STR_OBJ(Devstatus,"pagecount",0,MEMINFO); endpagecounter = Do_pagecount(Send_job_rw_timeout, Pagecount_interval, Pagecount_poll_end?Pagecount_poll_end:Pagecount_poll, pagecount_ps, pagecount_pjl, pagecount_prog, pagecount_snmp ); } if( Pjl && Pjl_console ){ if( Appsocket ){ /* we shut down the socket connection */ DEBUG1("End_of_job: Appsocket device close"); close(1); DEBUG1("End_of_job: Appsocket device open done"); Open_device( Device ); } Init_outbuf(); Pjl_console_msg(0); DEBUG1("End_of_job: clearing console at end"); Put_outbuf_str( PJL_UEL_str ); Write_read_timeout( Outlen, Outbuf, Send_job_rw_timeout ); Init_outbuf(); } if( startpagecounter ){ time_t current_t; int elapsed, n; elapsed = n = 0; time( ¤t_t ); elapsed = current_t - Start_time; if( Pagecount_start && Pagecount_end ){ n = endpagecounter - *startpagecounter; } Do_accounting(0, elapsed, endpagecounter, n ); } if( Appsocket ){ /* we shut down the socket connection */ DEBUG1("End_of_job: Appsocket device close"); close(1); } FREE_OBJ(l); l = 0; } /* * Find_in_list( OBJ *list, char *str ) * - find the string in the list */ int Find_in_list( OBJ *list, const char *str ) { int listindex, listcount;; for( listindex = 0, listcount = LEN_LIST_OBJ(list); listindex < listcount; ++listindex ){ if( !safestrcmp(GET_ENTRY_LIST_OBJ(list,listindex), str ) ){ return( 1 ); } } return( 0 ); } /* * Put_pjl( char *s ) * write pjl out to the output buffer * check to make sure that the line is PJL code only * and that the PJL option is in a list */ void Put_pjl( char *s ) { OBJ *l = 0, *wl = 0; char *str = 0; int i; DEBUG4("Put_pjl: orig '%s'", s ); if( s == 0 || *s == 0 ) return; l = NEW_OBJ(l,MEMINFO); wl = NEW_OBJ(wl,MEMINFO); str = Fix_option_str( s, 0, 1, 0 ); if( str ){ Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/str, /*type*/OBJ_T_LIST, /*linesep*/"\n", /*escape*/"\n", /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); } for( i = 0; i < LEN_LIST_OBJ(l); ++i ){ /* check for valid PJL */ char *out = GET_ENTRY_LIST_OBJ(l,i); wl = NEW_OBJ(wl, MEMINFO); Split_STR_OBJ( /*p*/wl, /*nomod*/1, /*str*/out, /*type*/OBJ_T_LIST, /*linesep*/WHITESPACE, /*escape*/WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if( LEN_LIST_OBJ(wl) == 0 ) continue; s = GET_ENTRY_LIST_OBJ(wl,0); if( strcmp("@PJL", s ) ) continue; /* key must be in PJL_ONLY list if supplied, and NOT in * PJL_ACCEPT */ if( LEN_LIST_OBJ(wl) > 1 ){ s = GET_ENTRY_LIST_OBJ(wl,1); lowercase(s); DEBUG4("Put_pjl: checking '%s' for support", s ); if( (LEN_HASH_OBJ(Pjl_only) && !GET_HASH_IVAL_OBJ( Pjl_only, s)) || (LEN_HASH_OBJ(Pjl_except) && GET_HASH_IVAL_OBJ( Pjl_except, s )) ){ continue; } } DEBUG4("Put_pjl: ok '%s', output '%s'", s, out ); Put_outbuf_str( out ); Put_outbuf_str( "\n" ); } if( str ) SAFEFREE(str); str = 0; FREE_OBJ(wl); wl = 0; FREE_OBJ(l); l = 0; } void Put_pcl( char *s ) { DEBUG4("Put_pcl: orig '%s'", s ); /* char *Fix_option_str( char *str, int remove_ws, int trim, int one_line ) */ s = Fix_option_str( s, 1, 1, 0 ); DEBUG4("Put_pcl: final '%s'", s ); if( !ISNULL(s) ){ Put_outbuf_str( s ); } if(s)SAFEFREE(s);s=0; } void Put_ps( char *s ) { DEBUG4("Put_ps: orig '%s'", s ); s = Fix_option_str( s, 0, 0, 0 ); DEBUG4("Put_ps: final '%s'", s ); if( !ISNULL(s) ){ Put_outbuf_str( s ); Put_outbuf_str( "\n" ); } if(s)SAFEFREE(s);s=0; } void Put_fixed( char *s ) { DEBUG4("Put_fixed: orig '%s'", s ); s = Fix_option_str( s, 0, 0, 0 ); DEBUG4("Put_fixed: final '%s'", s ); if( !ISNULL(s) ){ Put_outbuf_str( s ); } if(s)SAFEFREE(s);s=0; } /* * Set_non_block_io(fd) * Set_block_io(fd) * Set blocking or non-blocking IO * Dies if unsuccessful * Get_nonblock_io(fd) * Returns O_NONBLOCK flag value */ int Get_nonblock_io( int fd ) { int mask; /* we set IO to non-blocking on fd */ mask = fcntl( fd, F_GETFL, 0 ); if( mask != -1 ) mask &= O_NONBLOCK; DEBUG4("Get_nonblock_io: fd %d, current flags 0x%x, O_NONBLOCK=0x%x",fd, mask, O_NONBLOCK); return( mask ); } void Set_nonblock_io( int fd ) { int omask; /* we set IO to non-blocking on fd */ if( (omask = fcntl( fd, F_GETFL, 0 ) ) == -1 ) return; omask |= O_NONBLOCK; fcntl( fd, F_SETFL, omask ); } void Set_block_io( int fd ) { int omask; /* we set IO to blocking on fd */ if( (omask = fcntl( fd, F_GETFL, 0 ) ) == -1 ) return; omask &= ~O_NONBLOCK; fcntl( fd, F_SETFL, omask ); } /************************************************************** * * signal handling: * SIGALRM should be the only signal that terminates system calls; * all other signals should NOT terminate them. * This signal() emulation function attepts to do just that. * (Derived from Advanced Programming in the UNIX Environment, Stevens, 1992) * **************************************************************/ /* solaris 2.3 note: don't compile this with "gcc -ansi -pedantic"; * due to a bug in the header file, struct sigaction doesn't * get declared. :( */ /* plp_signal will set flags so that signal handlers will continue * note that in Solaris, you MUST reinstall the * signal hanlders in the signal handler! The default action is * to try to restart the system call - note that the code should * be written so that you check for error returns, and continue * so this is merely a convenience. */ plp_sigfunc_t plp_signal (int signo, plp_sigfunc_t func) { #ifdef HAVE_SIGACTION struct sigaction act, oact; act.sa_handler = func; (void) sigemptyset (&act.sa_mask); act.sa_flags = 0; # ifdef SA_RESTART act.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */ # endif if (sigaction (signo, &act, &oact) < 0) { return (SIG_ERR); } return (plp_sigfunc_t) oact.sa_handler; #else /* sigaction is not supported. Just set the signals. */ return (plp_sigfunc_t)signal (signo, func); #endif } /* plp_signal_break is similar to plp_signal, but will cause * TERMINATION of a system call if possible. This allows * you to force a signal to cause termination of a system * wait or other action. */ plp_sigfunc_t plp_signal_break (int signo, plp_sigfunc_t func) { #ifdef HAVE_SIGACTION struct sigaction act, oact; act.sa_handler = func; (void) sigemptyset (&act.sa_mask); act.sa_flags = 0; # ifdef SA_INTERRUPT act.sa_flags |= SA_INTERRUPT; /* SunOS */ # endif if (sigaction (signo, &act, &oact) < 0) { return (SIG_ERR); } return (plp_sigfunc_t) oact.sa_handler; #else /* sigaction is not supported. Just set the signals. */ return (plp_sigfunc_t)signal (signo, func); #endif } /**************************************************************/ void plp_block_all_signals ( plp_block_mask *oblock ) { #ifdef HAVE_SIGPROCMASK sigset_t block; (void) sigfillset (&block); /* block all signals */ if (sigprocmask (SIG_SETMASK, &block, oblock) < 0) LOGERR_DIE(LOGINFO) _("plp_block_all_signals: sigprocmask failed")); #else *oblock = sigblock( ~0 ); /* block all signals */ #endif } void plp_unblock_all_signals ( plp_block_mask *oblock ) { #ifdef HAVE_SIGPROCMASK sigset_t block; (void) sigemptyset (&block); /* block all signals */ if (sigprocmask (SIG_SETMASK, &block, oblock) < 0) LOGERR_DIE(LOGINFO)_("plp_unblock_all_signals: sigprocmask failed")); #else *oblock = sigblock( 0 ); /* unblock all signals */ #endif } void plp_set_signal_mask ( plp_block_mask *in, plp_block_mask *out ) { #ifdef HAVE_SIGPROCMASK if (sigprocmask (SIG_SETMASK, in, out ) < 0) LOGERR_DIE(LOGINFO)_("plp_set_signal_mask: sigprocmask failed")); #else if( out ){ *out = sigblock( *in ); /* block all signals */ } else { (void)sigblock( *in ); /* block all signals */ } #endif } void plp_unblock_one_signal ( int sig, plp_block_mask *oblock ) { #ifdef HAVE_SIGPROCMASK sigset_t block; (void) sigemptyset (&block); /* clear out signals */ (void) sigaddset (&block, sig ); /* clear out signals */ if (sigprocmask (SIG_UNBLOCK, &block, oblock ) < 0) LOGERR_DIE(LOGINFO)_("plp_unblock_one_signal: sigprocmask failed")); #else *oblock = sigblock( 0 ); (void) sigsetmask (*oblock & ~ sigmask(sig) ); #endif } void plp_block_one_signal( int sig, plp_block_mask *oblock ) { #ifdef HAVE_SIGPROCMASK sigset_t block; (void) sigemptyset (&block); /* clear out signals */ (void) sigaddset (&block, sig ); /* clear out signals */ if (sigprocmask (SIG_BLOCK, &block, oblock ) < 0) LOGERR_DIE(LOGINFO)_("plp_block_one_signal: sigprocmask failed")); #else *oblock = sigblock( sigmask( sig ) ); #endif } void plp_sigpause( void ) { #ifdef HAVE_SIGPROCMASK sigset_t block; (void) sigemptyset (&block); /* clear out signals */ (void) sigsuspend( &block ); #else (void)sigpause( 0 ); #endif } /*************************************************************************** * Set up alarms so LPRng doesn't hang forever during transfers. ***************************************************************************/ /* * timeout_alarm * When we get the alarm, we close the file descriptor (if any) * we are working with. When we next do an option, it will fail * Note that this will cause any ongoing read/write operation to fail * We then to a longjmp to the routine, returning a non-zero value * We set an alarm using: * * if( (setjmp(Timeout_env)==0 && Set_timeout_alarm(t,s)) ){ * timeout dependent stuff * } * Clear_alarm * We define the Set_timeout macro as: * #define Set_timeout(t,s) (setjmp(Timeout_env)==0 && Set_timeout_alarm(t,s)) */ static plp_signal_t timeout_alarm (int sig) { Alarm_timed_out = 1; signal( SIGALRM, SIG_IGN ); errno = EINTR; #if defined(HAVE_SIGLONGJMP) siglongjmp(Timeout_env,1); #else longjmp(Timeout_env,1); #endif } static plp_signal_t timeout_break (int sig) { Alarm_timed_out = 1; signal( SIGALRM, SIG_IGN ); } /*************************************************************************** * Set_timeout( int timeout, int *socket ) * Set up a timeout to occur; note that you can call this * routine several times without problems, but you must call the * Clear_timeout routine sooner or later to reset the timeout function. * A timeout value of 0 never times out * Clear_alarm() * Turns off the timeout alarm ***************************************************************************/ void Set_timeout_signal_handler( int timeout, plp_sigfunc_t handler ) { int err = errno; sigset_t oblock; alarm(0); signal(SIGALRM, SIG_IGN); plp_unblock_one_signal( SIGALRM, &oblock ); Alarm_timed_out = 0; Timeout_pending = 0; if( timeout > 0 ){ Timeout_pending = timeout; plp_signal_break(SIGALRM, handler); alarm (timeout); } errno = err; } void Set_timeout_alarm( int timeout ) { Set_timeout_signal_handler( timeout, timeout_alarm ); } void Set_timeout_break( int timeout ) { Set_timeout_signal_handler( timeout, timeout_break ); } void Clear_timeout( void ) { int err = errno; signal( SIGALRM, SIG_IGN ); alarm(0); Timeout_pending = 0; errno = err; } /* * Write_fd_len_timeout * write the buffer of length len to file descriptor fd * within timeout seconds (timeout < 0 means no timeout) * returns: * = -1 error * = -JTIMEOUT timeout * = 0 no error, but why did it return 0? * > 0 bytes written */ int Write_fd_len_timeout( int timeout, int fd, const char *msg, int len ) { int i = 0, err; if( len ){ Set_timeout_break( timeout ); i = write( fd, msg, len ); err = errno; Clear_timeout(); if( Alarm_timed_out ){ i = -JTIMEOUT; } else if( i < 0 && ( 0 #if defined(EWOULDBLOCK) || err == EWOULDBLOCK #endif #if defined(EAGAIN) || err == EAGAIN #endif ) ){ i = 0; } } return( i ); } /* * Write_read_timeout( int readfd, int *flag, * int writefd, char *buffer, int len, int timeout ) * Write the contents of a buffer to the file descriptor * and then optionally read the status * char *buffer, int len: buffer and number of bytes * int timeout: timeout in seconds * * Returns: * 0 = success * = -1 error * = -JTIMEOUT timeout */ int Write_read_timeout( int len, char *buffer, int timeout ) { time_t start_t, current_t; int elapsed, m, left, err; struct timeval timeval, *tp; fd_set readfds, writefds; /* for select */ int fd = 1; DEBUG4( "Write_read_timeout: fd %d, Status %d, Poll_for_status %d, write(len %d) timeout %d", fd, Status, Poll_for_status, len, timeout ); time( &start_t ); /* do we do only a write ? */ if( len <= 0 ) return 0; if( Status == 0 ){ DEBUG4( "Write_read_timeout: blocking write len %d", len ); Set_block_io( 1 ); while( len > 0 ){ m = Write_fd_len_timeout( timeout, 1, buffer, len ); DEBUG4( "Write_read_timeout: block write status %d", m ); if( m < 0 ){ LOGERR(LOG_INFO) _("Write_read_timeout: write error" )); len = m; } else { len -= m; } } } else if( Poll_for_status ){ /* we need to write a bit, then check for status */ DEBUG4( "Write_read_timeout: poll write len %d", len ); m = Read_status_timeout(-1); DEBUG1("Write_read_timeout: poll Read_status_timeout returned %d", m ); while( m >= 0 && len > 0 ){ left = 0; if( timeout > 0 ){ time( ¤t_t ); elapsed = current_t - start_t; left = timeout - elapsed; DEBUG4("Write_read_timeout: poll timeout left %d", left ); if( left <= 0 ){ m = -JTIMEOUT; break; } } DEBUG1("Write_read_timeout: poll writing %d", len ); /* try to write 'len' and then check for status */ /* note: if you are doing this on a bidirectional * parallel port * then you should get an early termination on the * write when status is pending for read. If not, * then you may need to resort to using non-blocking IO or * set up a really short interval. We set the interval * between status checks at 10 seconds. */ Set_block_io( 1 ); m = Write_fd_len_timeout( 10, 1, buffer, len ); DEBUG4( "Write_read_timeout: poll write status %d", m ); if( m < 0 ){ LOGERR(LOG_INFO) _("Write_read_timeout: EOF or TIMEOUT on output")); if( m == -JTIMEOUT ) m = 0; } else { len -= m; buffer += m; time( &start_t ); } m = Read_status_timeout(-1); if( m < 0 ){ LOGERR(LOG_INFO) _("Write_read_timeout: EOF on input")); } } if( m < 0 ){ len = m; } } else while( len > 0 ){ if( timeout > 0 ){ time( ¤t_t ); elapsed = current_t - start_t; left = timeout - elapsed; DEBUG4("Write_read_timeout: timeout left %d", left ); if( left <= 0 ){ len = -JTIMEOUT; break; } memset( &timeval, 0, sizeof(timeval) ); timeval.tv_sec = left; tp = &timeval; } else { tp = 0; } FD_ZERO( &writefds ); FD_ZERO( &readfds ); m = 0; if( len > 0 ){ FD_SET( 1, &writefds ); DEBUG4("Write_read_timeout: setting write fd %d", 1); if( m <= 1 ) m = 2; } if( Status >= 0 ){ FD_SET( fd, &readfds ); if( m <= fd ) m = fd+1; FD_SET( 1, &readfds ); if( m <= 1 ) m = 1+1; DEBUG4("Write_read_timeout: setting read fd %d", fd ); } DEBUG4("Write_read_timeout: starting rw select - max %d", m ); errno = 0; m = select( m, FD_SET_FIX((fd_set *))&readfds, FD_SET_FIX((fd_set *))&writefds, FD_SET_FIX((fd_set *))0, tp ); err = errno; DEBUG4("Write_read_timeout: reading and writing, select returned %d, errno %d", m, err ); if( m < 0 ){ /* error */ if( err != EINTR ){ Errorcode = JFAIL; errno = err; LOGERR_DIE(LOGINFO) _("Write_read_timeout: select error") ); } continue; } else if( m == 0 ){ /* timeout */ continue; } if( Status && (FD_ISSET( fd, &readfds ) || FD_ISSET( 1, &readfds )) ){ m = Read_status_timeout(-1); err = errno; DEBUG1("Write_read_timeout: Read_status_timeout returned %d", m ); if( m < 0 ){ errno = err; LOGERR(LOG_INFO)_("Write_read_timeout: read from printer failed")); len = -1; break; } } if( FD_ISSET( 1, &writefds ) ){ DEBUG4("Write_read_timeout: write possible on fd %d", 1 ); Set_nonblock_io( 1 ); errno = 0; m = write( 1, buffer, len ); err = errno; Set_block_io( 1 ); DEBUG4("Write_read_timeout: write() returned %d", m ); errno = err; if( m < 0 ){ if( 0 #if defined(EWOULDBLOCK) || err == EWOULDBLOCK #endif #if defined(EAGAIN) || err == EAGAIN #endif #if !defined(EWOULDBLOCK) && !defined(AGAIN) #error No definition for EWOULDBLOCK or EAGAIN #endif ){ DEBUG4( "Write_read_timeout: write would block but select says not!" ); errno = err; } else if( err == EINTR ){ /* interrupted, nothing written */ DEBUG4( "Write_read_timeout: write interrupted" ); errno = err; } else { LOGERR(LOG_INFO) _("Write_read_timeout: write error") ); len = -1; errno = err; } } else { time( &start_t ); len -= m; buffer += m; } } } DEBUG4("Write_read_timeout: returning %d", len ); return( len ); } /* * int Read_status_timeout( int timeout ) * Read status information from printer * * if timeout == -1 then we do a quick poll * we are called with this only if there is quaranteed * data to read OR we will do a nonblocking read OR we will * timeout REALLY quickly... 1 second. This is ugly ugly ugly * but the only way that you can make polling a parallel port * under Linux work. * * if timeout < 0 then we do not block * if timeout == 0 then we block forever * if timeout > 0 then block for timeout * * Return: * 0 - status read * -1 - error or EOF * -JTIMEOUT - timeout */ int Read_status_timeout( int timeout ) { int count = 0, err; char monitorbuff[SMALLBUFFER]; int fd = 1; struct stat statb; /* get the character we might have read */ if( Peek_char >= 0 ){ monitorbuff[0] = Peek_char; Put_inbuf_len( monitorbuff, 1 ); Get_inbuf_str(); Peek_char = -1; } /* we read from stdout */ err = 0; monitorbuff[0] = 0; /* if we have timeout < 0, and are not polling then we * do nonblocking read. */ if( timeout < 0 ){ errno = 0; Set_nonblock_io( fd ); count = read( fd, monitorbuff, sizeof(monitorbuff) - 1 ); err = errno; Set_block_io( fd ); /* if we read 0, then we have EOF */ DEBUG2("Read_status_timeout: timeout %d, nonblocking read result %d", timeout, count ); if( count == 0 ){ if( Poll_for_status ){ /* handles the status case with no timeout, when we want REALLY * short timeouts but do not want to spin wait and eat CPU time * doing non-blocking reads. */ DEBUG2("Read_status_timeout: waiting %d msec", Dev_sleep); plp_usleep( Dev_sleep * 1000 ); count = 0; } else if( !Ignore_eof ){ count = -1; DEBUG2("Read_status_timeout: EOF, timeout %d", timeout ); } } else if( count == -1 && ( 0 /* if we block, then we need to try again */ #if defined(EWOULDBLOCK) || err == EWOULDBLOCK #endif #if defined(EAGAIN) || err == EAGAIN #endif )){ count = 0; } } else { if( Snmp_fd ){ struct timeval tm, *tmptr = 0; fd_set readfds; int n, m; memset( &tm, 0, sizeof(tm) ); tm.tv_sec = timeout; if( timeout ) tmptr = &tm; m = 0; FD_ZERO( &readfds ); if( !fstat(1,&statb) ){ FD_SET( 1, &readfds ); m = 1+1; } FD_SET( Snmp_fd, &readfds ); if( m <= Snmp_fd ) m = Snmp_fd+1; n = select( m, FD_SET_FIX((fd_set *))&readfds, FD_SET_FIX((fd_set *))(0), FD_SET_FIX((fd_set *))(0), tmptr ); if( n < 0 ){ Errorcode = JFAIL; LOGERR_DIE(LOG_INFO)"Read_status_timeout: select error"); } else if( n == 0 ){ DEBUG2("Read_status_timeout: select timeout" ); count = -JTIMEOUT; } else { if( FD_ISSET( Snmp_fd, &readfds ) ){ count = read( Snmp_fd, monitorbuff, sizeof(monitorbuff) - 1 ); DEBUG2("Read_status_timeout: SNMP read with timeout %d, read result %d", timeout, count ); if( count < 0 ){ Errorcode = JFAIL; LOGERR_DIE(LOG_INFO)"Read_status_timeout: error reading SNMP status"); } if( count == 0 ){ Errorcode = JFAIL; LOGERR_DIE(LOG_INFO)"Read_status_timeout: EOF reading SNMP status"); } } if( count == 0 && FD_ISSET( fd, &readfds ) ){ count = read( fd, monitorbuff, sizeof(monitorbuff) - 1 ); DEBUG2("Read_status_timeout: device read with timeout %d, read result %d", timeout, count ); } } } else { Set_block_io( fd ); Set_timeout_break( timeout ); count = read( fd, monitorbuff, sizeof(monitorbuff) - 1 ); err = errno; Clear_timeout(); DEBUG2("Read_status_timeout: timeout %d, blocking read result %d, alarm timeout %d", timeout, count, Alarm_timed_out ); } if( count == 0 ){ if( Poll_for_status ){ /* handles the status case with no timeout, when we want REALLY * short timeouts but do not want to spin wait and eat CPU time * doing non-blocking reads. */ DEBUG2("Read_status_timeout: waiting %d msec", Dev_sleep); plp_usleep( Dev_sleep * 1000 ); count = 0; } else if( !Ignore_eof ){ count = -1; DEBUG2("Read_status_timeout: EOF, timeout %d", timeout ); } } else if( count < 0 && Alarm_timed_out ){ count = -JTIMEOUT; } } DEBUG2("Read_status_timeout: timeout %d, result count %d", timeout, count ); if( count > 0 ){ monitorbuff[count] = 0; DEBUG2("Read_status_timeout: read count %d, '%s'", count, monitorbuff ); Put_inbuf_len( monitorbuff, count ); Get_inbuf_str(); count = 0; } return( count ); } /* * void Resolve_key_val( int prefix_done, char *prefix, char *id, OBJ *values, * Wr_out routine, int depth, int maxdepth ) * - determine what to do for the specified key and value * we first check to see if it is a builtin * if it is, then we do not need to process further * prefix_done = 0 - look up * - do not look up * prefix - use for id lookup * id - use for id lookup * value - array of hash values - look here first for value * for id, this may be set by recursion * routine - called with real variable value * depth/maxdepth - recursion control */ int Resolve_key_val( char *prefix, char *id, OBJ *values, Wr_out routine, int depth, int maxdepth ) { char *value = 0; char *newid; int done = 0; int current_depth = LEN_ARRAY_OBJ(Setvals); /* we expand the key here */ DEBUG4("Resolve_key_val: prefix '%s', id '%s', depth %d, maxdepth %d", prefix, id, depth, maxdepth); if( depth > maxdepth ){ Errorcode = JABORT; FATAL(LOG_INFO)"Resolve_key_val: id '%s', recursion level %d greater than %d", id, depth, maxdepth ); } /* we expand the ID if necesssary */ newid = Fix_option_str( id, 0, 0, 0); DEBUG4("Resolve_key_val: prefix '%s', id '%s', newid '%s'", prefix,id,newid); id = newid; /* we push the value onto the stack if necessary */ if( (value = GET_HASH_STR_OBJ(values,id,MEMINFO)) ){ OBJ *p; char *s = Fix_option_str( value, 0, 0, 0); EXTEND_ARRAY_OBJ( Setvals, depth+1, 0, MEMINFO ); p = AT_ARRAY_OBJ( Setvals, depth ); Clear_OBJ(p); SET_HASH_STR_OBJ(p,id,s,MEMINFO); id = VAL_SHORTSTR_OBJ(KEY_HASH_OBJ(p,0)); value = VAL_STR_OBJ(VALUE_HASH_OBJ(p,0)); if( s ) SAFEFREE(s); s = 0; } /* decide if it is a built-in function or simply forcing a string out */ DEBUG4("Resolve_key_val: prefix '%s', id '%s'='%s'", prefix,id,value); if( !done ){ done = Builtin( prefix, id, value, routine); DEBUG4("Resolve_key_val: '%s' is builtin '%d'", id, done ); } if( !done && !safestrncasecmp(prefix,"pjl", 3) ){ done = Pjl_setvar( prefix, id, value, routine); DEBUG4("Resolve_key_val: '%s' is PJL '%d'", id, done ); } if( !done && prefix ){ char *prefix_id = safestrdup2( prefix, id,MEMINFO); value = GET_HASH_STR_OBJ(values,prefix_id,MEMINFO); if( !value ) value = GET_HASH_STR_OBJ(Model,prefix_id,MEMINFO); if( prefix_id ) SAFEFREE( prefix_id ); prefix_id = 0; } if( !done && value && cval(value) == '[' ){ OBJ *l = 0; l = Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/value+1, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); Resolve_list( prefix, l, values, routine, depth+1, maxdepth ); FREE_OBJ(l); l = 0; done = 1; } DEBUG4("Resolve_key_val: done '%d', value '%s'", done, value); if( !done && value ){ routine( value ); done = 1; } TRUNC_ARRAY_OBJ(Setvals, current_depth,MEMINFO); if( newid ) SAFEFREE(newid); newid = 0; return( done ); } int Is_flag( char *s, int *v ) { int n = 0; if( s && *s && safestrlen(s) == 1 && isdigit(cval(s)) && (n = (*s == '0' || *s == '1' || *s == '@')) && v ){ if( *s == '@' ){ *v = 0; } else { *v = *s - '0'; } } return( n ); } /* * void Resolve_list( char *prefix, OBJ *list, OBJ *values, * W_out routine, int depth, int maxdepth ) * Resolve the actions specified by a list * List has the form [ xx xx xx or [xx xx xx * - resolve the values by calling Resolve_key_val */ void Resolve_list( char *prefix, OBJ *list, OBJ *values, Wr_out routine, int depth, int maxdepth ) { int i, c; char *s, *t; OBJ *l = 0; DEBUG4("Resolve_list: prefix '%s', count %d, depth %d, maxdepth %d", prefix, LEN_LIST_OBJ(list), depth, maxdepth ); if(DEBUGL4)SHORT_DUMP_OBJ("Resolve_list",list); for( i = 0; i < LEN_LIST_OBJ(list); ++i ){ s = GET_ENTRY_LIST_OBJ(list,i); DEBUG4("Resolve_list: prefix '%s', [%d]='%s'", prefix, i, s ); while( s && (c = cval(s)) && (isspace(c) || c == '[' || c == ']')) ++s; if( !ISNULL(s) ){ if( (t = safestrchr(s,'=')) ){ if( !values ){ values = l = NEW_HASH_OBJ(l,MEMINFO); } Split_STR_OBJ( /*p*/values, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); *t = 0; } Resolve_key_val( prefix, s, values, routine, depth, maxdepth ); } } FREE_OBJ(l); l = 0; } /* * void Resolve_user_opts( char *prefix, OBJ *only, *opts, * W_out routine ) * Resolve the actions specified by a the user and allowed as options */ void Resolve_user_opts( char *prefix, OBJ *only, OBJ *list, OBJ *values, Wr_out routine ) { int i, in_list; char *id = 0, *value; DEBUG4("Resolve_user_opts: prefix '%s'", prefix ); if(DEBUGL4)SHORT_DUMP_OBJ("Resolve_user_opts - only",only); if(DEBUGL4)SHORT_DUMP_OBJ("Resolve_user_opts - list",list); for( i = 0; i < LEN_LIST_OBJ(list); ++i ){ id = GET_ENTRY_LIST_OBJ(list,i); value = GET_HASH_STR_OBJ( values, id, MEMINFO); in_list = GET_HASH_IVAL_OBJ( only, id ); DEBUG4("Resolve_user_opts: id '%s', in_list=%d, value '%s'", id, in_list, value ); if( in_list ){ Resolve_key_val( prefix, id, values, routine, 0, MAX_DEPTH ); } } } /* * char *Fix_option_str( char *str, int remove_ws, int trim, int one_line ) * if( remove_ws ) then remove all whitespace except for FF * if( trim) find and remove all white space before and after \n * if( one_line) change \n to space * do escape substitutions */ char *Fix_option_str( char *str, int remove_ws, int trim, int one_line ) { char *s, *t, *value, *tempvalue, *format_char, *lookup_table; char num[LARGEBUFFER]; char fmt[127]; int c, insert, len, lookup; char *sq, *eq; if( ISNULL(str) ){ return 0; } str = safestrdup( str,MEMINFO); DEBUG5("Fix_option_str: orig '%s', remove_ws %d, trim %d, one_line %d", str, remove_ws, trim, one_line ); tempvalue = 0; /* now we do escape sequences */ for( s = str; (s = safestrchr( s, '\\' )); ){ /* \xYY -> xYY 0123 0123 */ c = s[1]; len = 1; insert = 0; DEBUG4("Fix_option_str: escape at '%s', '%c'", s, c ); s[0] = c; if( isalpha(c) ){ switch( c ){ case 'r': s[0] = '\r'; break; case 'n': s[0] = '\n'; break; case 't': s[0] = '\t'; break; case 'f': s[0] = '\f'; break; /* \xNN - convert next two hex digits to character */ case 'x': /* move the \xNN \NN */ memmove(s,s+1,strlen(s)); for( len = 0; len < 2 && (c = (s[len] = s[1+len])) && strchr("0123456789abcdefABCDEF", c ); ++len ); s[len] = 0; DEBUG5("Fix_option_str: hex str '%s', end '%s'", s, s+len+1 ); s[0] = strtol( s, 0, 16 ); goto done; } goto done; } else if( isdigit( c ) ){ for( len = 0; len < 3 && (s[len] = s[1+len]) && isdigit(cval(s+len)); ++len ); s[len] = 0; DEBUG5("Fix_option_str: octal str '%s', end '%s'", s, s+len+1 ); s[0] = strtol( s, 0, 8 ); goto done; } else if( c != '%' ){ done: memmove( s+1, s+len+1, safestrlen(s+len+1)+1); ++s; DEBUG5("Fix_option_str: after move '%s'", s ); } else { /* \%FMT{...} or \%FMT[] s[0] == \ s[1] == % s[2] == FMT s[2+safestrlen(FMT)] is bracket */ DEBUG5("Fix_option_str: var sub into '%s'", s+1 ); if( (sq = safestrpbrk( s, "[{" )) ){ if(tempvalue) SAFEFREE(tempvalue); tempvalue = 0; lookup = c = sq[0]; *sq++ = 0; eq = safestrpbrk( sq, "]}" ); if( eq ){ *eq++ = 0; } else { eq = sq + safestrlen(sq); } if( safestrchr(s+2, '%') ){ Errorcode = JABORT; FATAL(LOGINFO)_("Fix_option_str: bad form '%s'"), s ); } SNPRINTF(fmt, sizeof(fmt)) "%%%s", s+2 ); DEBUG5("Fix_option_str: getting '%s' fmt '%s'", sq, fmt ); format_char = t = fmt+safestrlen(fmt)-1; /* this is safe */ c = cval(t); if( !safestrcmp( sq, "ARGV") ){ char **argv, *s; value = 0; for( argv = Argv+1; (s = *argv ); ++argv ){ value = safeextend3(value, " ", s, MEMINFO ); } tempvalue = value; } else { if( (lookup_table = safestrchr(sq, ',')) ){ int len; *lookup_table++ = 0; while( isspace(cval(lookup_table)) ) ++lookup_table; len = safestrlen(sq); if( len ) while( isspace(cval(sq+len-1)) ) --len; sq[len] = 0; } /* find the value of the variable */ value = Find_sub_value( lookup, sq, c == 's' ); if( value == 0 || *value == 0 ){ value = ""; } else { tempvalue = value = safestrdup(value,MEMINFO); DEBUG3( "Fix_option_str: using fmt '%s', type '%c', value '%s'", fmt, c, value ); /* trim the string */ while(isspace(cval(value))) ++value; for( t = value+safestrlen(value); t > value && isspace(cval(t-1)); --t ); *t = 0; if( value[0] == '[' ){ ++value; while(isspace(cval(value))) ++value; if( t > value && cval(t-1) == ']' ) *t = 0; for( t = value+safestrlen(value); t > value && isspace(cval(t-1)); --t ); } } /* use the value as an index into the lookup table */ if( !ISNULL(lookup_table) ){ OBJ *l = 0; char *s = GET_HASH_STR_OBJ( Model, lookup_table,MEMINFO); DEBUG3("Fix_option_str: value '%s', lookup '%s' = '%s'", value, lookup_table, s ); l = Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/s, /*type*/OBJ_T_HASH, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); value = GET_HASH_STR_OBJ(l,value,MEMINFO); DEBUG3("Fix_option_str: fixing value '%s'", value ); t = Fix_option_str( value, remove_ws, trim, one_line ); if( tempvalue ) SAFEFREE(tempvalue); value = tempvalue = t; FREE_OBJ(l); l = 0; } else if( !ISNULL(value) ){ DEBUG3("Fix_option_str: fixing value '%s'", value ); t = Fix_option_str( value, remove_ws, trim, one_line ); if( tempvalue ) SAFEFREE(tempvalue); value = tempvalue = t; } } DEBUG3("Fix_option_str: fixed value '%s'", value ); num[0] = 0; switch( c ){ case 'o': case 'd': case 'x': SNPRINTF(num, sizeof(num)) fmt, strtol(value, 0, 0)); break; case 'f': case 'g': case 'e': SNPRINTF(num, sizeof(num)) fmt, strtod(value, 0)); break; case 's': SNPRINTF(num, sizeof(num)) fmt, value); break; /* * handle the string things in a special manner * U = uppercase string * M = uppercase first letter, lowercase reset * L = lowercase string */ case 'U': *format_char = 's'; SNPRINTF(num, sizeof(num)) fmt, value); uppercase(num); break; case 'M': *format_char = 's'; SNPRINTF(num, sizeof(num)) fmt, value); lowercase(num); if( num[0] && islower(cval(num)) ) num[0] = toupper(cval(num)); break; case 'L': *format_char = 's'; SNPRINTF(num, sizeof(num)) fmt, value); lowercase(num); break; case 'T': *format_char = 's'; /* we need to translate the value */ SNPRINTF(num, sizeof(num)) fmt, value); lowercase(num); break; } if( tempvalue ) SAFEFREE(tempvalue); tempvalue = 0; *s = 0; len = safestrlen(str)+safestrlen(num); DEBUG5("Fix_option_str: first '%s', num '%s', rest '%s'", str, num, eq ); s = str; str = safestrdup3(str,num,eq,MEMINFO); SAFEFREE(s); s = str+len; DEBUG5("Fix_option_str: result '%s', next '%s'", str, s ); } } } if( remove_ws ){ for( s = t = str; (*t = *s); ++s ){ if( !isspace(cval(t)) || cval(t) == '\014' ) ++t; } *t = 0; } if( trim ){ while( isspace(cval(str)) ) memmove( str, str+1, safestrlen(str+1)+1 ); for( s = str; (s = safestrpbrk( s, "\n" )); s = t ){ for( t = s; t > str && isspace(cval(t-1)); --t ); if( t != s ){ memmove( t, s, safestrlen(s)+1 ); s = t; } for( t = s+1; isspace(cval(t)); ++t ); if( t != s+1 ){ memmove( s+1, t, safestrlen(t)+1 ); t = s+1; } } } if( one_line ){ for( s = str; (s = safestrpbrk( s, "\t\n" )); ++s ){ *s = ' '; } } if( ISNULL(str) ){ if( str ) SAFEFREE(str); str = 0; } DEBUG4("Fix_option_str: returning '%s'", str ); return( str ); } /* * char *Find_sub_value( int c, char *id, char *sep ) * if we have ?xxx?v1:v2 then if xxx has a value or * the value is not '0' then we look up v1 else * we look up v2 * if c == {, try the user -Z opts * try user -T opts * if id is single character try options * try Model config * default value is 0 * Note: this is NOT a recursive call, and the value may get overwritten * by the next call. */ char *Find_sub_value( int c, char *id, int strval) { char *s = 0; char *v1, *v2; static char retval[128]; int i; DEBUG4("Find_sub_value: type '%c', id '%s'", c, id ); if( *id == '?' ){ char copy[128]; strncpy(copy,id+1,sizeof(copy)); v1 = v2 = 0; v1 = safestrchr(copy, '?'); if( v1 ){ v2 = safestrchr(v1+1, ':'); } if( v2 == 0 ){ FATAL(LOGINFO)_("Find_sub_value: bad conditional format '%s'"), id ); } *v1++ = 0; *v2++ = 0; s = Find_sub_value( c, copy, 1 ); DEBUG4("Find_sub_value: CONDITIONAL id '%s'='%s'", copy, s ); if( !ISNULL(s) ){ s = Find_sub_value( c, v1, 1 ); } else { s = Find_sub_value( c, v2, 1 ); } DEBUG4("Find_sub_value: CONDITIONAL type '%c', id '%s'='%s'", c, id, s ); return( s ); } if( !strcasecmp(id,"pid") ){ SNPRINTF(retval, sizeof(retval)) "%d",getpid()); s = retval; DEBUG4("Find_sub_value: pid type '%c', id '%s'='%s'", c, id, s ); return( s ); } if( !strcasecmp(id,"inputfile") ){ SNPRINTF(retval, sizeof(retval)) "%s",InputFile); s = retval; DEBUG4("Find_sub_value: InputFile '%s'", s ); return( s ); } if( !strcasecmp(id, "papersize" ) ){ char *t = GET_HASH_STR_OBJ( Model, "papersize", MEMINFO ); OBJ *l = 0; l = NEW_OBJ(l,MEMINFO); DEBUG4("Find_sub_value: papersize '%s'", t ); l = Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/t, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); for( i = 0; !s && i < LEN_LIST_OBJ(l); ++ i ){ if( GET_HASH_IVAL_OBJ( Zopts, GET_ENTRY_LIST_OBJ(l,i)) ){ s = GET_ENTRY_LIST_OBJ(l,i); break; } } for( i = 0; !s && i < LEN_LIST_OBJ(l); ++ i ){ if( GET_HASH_IVAL_OBJ( Topts, GET_ENTRY_LIST_OBJ(l,i)) ){ s = GET_ENTRY_LIST_OBJ(l,i); break; } } if( !s ) s = GET_HASH_STR_OBJ(Zopts,"paper", MEMINFO ); if( !s ) s = GET_HASH_STR_OBJ(Zopts,"papersize", MEMINFO ); if( !s ) s = GET_HASH_STR_OBJ(Topts,"paper", MEMINFO ); if( !s ) s = GET_HASH_STR_OBJ(Topts,"papersize", MEMINFO ); if( !s ) s = GET_HASH_STR_OBJ( Model, "papersize_default", MEMINFO ); safestrncpy(retval,s); s = retval; FREE_OBJ(l); l = 0; DEBUG4("Find_sub_value: papersize type '%c', id '%s'='%s'", c, id, s ); return( s ); } if( LEN_ARRAY_OBJ(Setvals) ){ for( i = LEN_ARRAY_OBJ(Setvals) -1; i >= 0; --i ){ OBJ *p = AT_ARRAY_OBJ( Setvals, i ); if( (s = GET_HASH_STR_OBJ(p,id,MEMINFO)) ) break; } } if( s == 0 && c == '{' ){ s = GET_HASH_STR_OBJ( Zopts, id, MEMINFO ); DEBUG4("Find_sub_value: from Zopts '%s'", s ); } if( s == 0 ){ s = GET_HASH_STR_OBJ( Model, id, MEMINFO ); DEBUG4("Find_sub_value: from Model '%s'", s ); } if( ISNULL(s) ){ if( strval ){ s = ""; } else { s = "0"; } } DEBUG4("Find_sub_value: type '%c', id '%s'='%s'", c, id, s ); return( s ); } /* * int Builtin( char* prefix, char *pr_id, char *value, Wr_out routine) * - check to see if the pr_id is for a builtin operation * - call the built-in with the parameters * - if found, the invoked return should return return 1 * so no further processing is done * if not found or the return value is 0, then further processing is * done. */ int Builtin( char* prefix, char *id, char *value, Wr_out routine) { int cmp=1; char *s, *prefix_id = 0; Builtin_func r; struct keyvalue *v; DEBUG4("Builtin: looking for '%s'", id ); for( v = Builtin_values; (s = v->key) && (cmp = strcasecmp(s, id)); ++v ); if( cmp && !ISNULL(prefix) ){ prefix_id = safestrdup2( prefix, id,MEMINFO); DEBUG4("Builtin: looking for '%s'", prefix_id ); for( v = Builtin_values; (s = v->key) && (cmp = strcasecmp(s, prefix_id)); ++v ); } if( cmp == 0 ){ DEBUG4("Builtin: found '%s'", s ); r = (Builtin_func)(v->var); cmp = (r)( prefix, id, value, routine); } else { cmp = 0; } DEBUG4("Builtin: returning '%d'", cmp ); if( prefix_id){ SAFEFREE(prefix_id); prefix_id = 0; } return( cmp ); } /*************************************************************************** * Decode_status (plp_status_t *status) * returns a printable string encoding return status ***************************************************************************/ const char *Decode_status (plp_status_t *status) { static char msg[128]; int n; *msg = 0; /* just in case! */ if (WIFEXITED (*status)) { n = WEXITSTATUS(*status); if( n > 0 && n < 32 ) n += JFAIL-1; (void) SNPRINTF (msg, sizeof(msg)) "exit status %d", WEXITSTATUS(*status) ); } else if (WIFSTOPPED (*status)) { (void) strcpy(msg, "stopped"); } else { (void) SNPRINTF (msg, sizeof(msg)) "died%s", WCOREDUMP (*status) ? " and dumped core" : ""); if (WTERMSIG (*status)) { (void) SNPRINTF(msg+safestrlen(msg), sizeof(msg)-safestrlen(msg)) ", %s", Sigstr ((int) WTERMSIG (*status))); } } return (msg); } /*************************************************************************** * plp_usleep() with select - simple minded way to avoid problems ***************************************************************************/ int plp_usleep( int i ) { struct timeval t; DEBUG3("plp_usleep: starting usleep %d", i ); if( i > 0 ){ memset( &t, 0, sizeof(t) ); t.tv_usec = i%1000000; t.tv_sec = i/1000000; DEBUG3("plp_usleep: %d sec, %d microsec", t.tv_sec, t.tv_usec ); i = select( 0, FD_SET_FIX((fd_set *))(0), FD_SET_FIX((fd_set *))(0), FD_SET_FIX((fd_set *))(0), &t ); DEBUG3("plp_usleep: select done, status %d, errno %d, '%s'", i, errno, Errormsg(errno) ); } return( i ); } void Strip_leading_spaces ( char **vp ) { char *s = *vp; if( s ){ do{ while( isspace( cval(s) ) ) memmove(s,s+1,safestrlen(s+1)+1); if( (s = safestrchr( s, '\n' )) ) ++s; } while(s); if( **vp == 0 ) *vp = 0; } } int Font_download( char* prefix, char *id, char *value, Wr_out routine) { char *dirname = 0, *filename, *s; char buffer[LARGEBUFFER]; int n, fd, i; OBJ *fontnames = 0; DEBUG2("Font_download: prefix '%s', id '%s', value '%s'",prefix, id, value ); s = safestrdup2(prefix,"fontdir",MEMINFO); DEBUG4("Font_download: directory name '%s'", s ); dirname = GET_HASH_STR_OBJ( Model, s, MEMINFO ); if(s) SAFEFREE(s); s = 0; if( !dirname ){ LOGERR(LOG_INFO)_("Font_download: no value for %sfontdir"), prefix); return(1); } /* if there is a value, then use it */ if( !ISNULL(value) && (filename = Fix_option_str(value,1,1,1)) ){ DEBUG2("Font_download: fixed value '%s'", filename ); fontnames = Split_STR_OBJ( /*p*/fontnames, /*nomod*/1, /*str*/filename, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if( filename ) SAFEFREE(filename); filename = 0; } else { /* if there is a 'font' value, then use it */ filename = Find_sub_value( '\173', "font", 1 ); /* the left curly */ fontnames = Split_STR_OBJ( /*p*/fontnames, /*nomod*/1, /*str*/filename, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); } if( LEN_LIST_OBJ(fontnames) == 0 ){ LOGMSG(LOG_INFO)_("Font_download: no 'font' value")); FREE_OBJ( fontnames); fontnames = 0; return(1); } filename = 0; for( i = 0; i < LEN_LIST_OBJ(fontnames); ++i ){ char *t; if( filename ) SAFEFREE(filename); filename = 0; s = GET_ENTRY_LIST_OBJ(fontnames,i); /* allow only files in font directory */ if( (t = safestrrchr(s,'/')) ) s = t+1; filename = safestrdup3(dirname,"/",s,MEMINFO); DEBUG4("Font_download: filename '%s'", filename ); if( (fd = open( filename, O_RDONLY )) >= 0 ){ Set_max_fd(fd); while( (n = read(fd, buffer,sizeof(buffer))) >0 ){ Put_outbuf_len( buffer, n ); } close(fd); } else { LOGERR(LOG_INFO)"Font_download: cannot open '%s'", filename); } } if( filename ) SAFEFREE(filename); filename = 0; FREE_OBJ( fontnames); fontnames = 0; return(1); } /* * Use a common subroutine to build DISPLAY part - the job start * could use this too. * if pjl_console@, returns an empty string */ char *Jobstart_str="@PJL JOB NAME = \"%s\""; char *Job_display=" DISPLAY = \"%s\" "; char *Jobend_str="@PJL EOJ NAME = \"%s\""; char *Jobreset_str="@PJL RESET\n"; static void Pjl_displayname(void) { char msg[64]; char *s = 0; msg[0] = 0; if( Pjl_ready_msg ){ DEBUG2("Pjl_displayname: pjl_ready_msg '%s'", Pjl_ready_msg); if( (s = Fix_option_str( Pjl_ready_msg, 0, 1, 1)) ){ SNPRINTF(msg,sizeof(msg)) "%s", s); SAFEFREE(s); s = 0; if( msg[0] ) s = msg; } } if( !s ) s = Loweropts['n'-'a']; /* try to get user or jobname */ if( !s ) s = Upperopts['J'-'A']; if( !s ){ SNPRINTF(msg,sizeof(msg)) "PID %d", getpid()); s = msg; } SNPRINTF(Job_ready_msg,sizeof(Job_ready_msg)) "%s", s); if( Pjl_display_size > 0 && safestrlen(Job_ready_msg) > Pjl_display_size ){ Job_ready_msg[Pjl_display_size] = 0; } SNPRINTF(Jobname,sizeof(Jobname)) "%s", s); DEBUG2("Pjl_displayname: raw Jobname '%s'", Jobname); { int len = strlen(Jobname), i; for( i = 0; i < len; ++i ){ int c = cval(Jobname+i); if( !isspace(c) && !isalnum(c) ){ Jobname[i] = '_'; } } } DEBUG2("Pjl_displayname: fixed Jobname '%s'", Jobname); msg[0] = 0; if( Pjl_done_msg ){ DEBUG2("Pjl_displayname: pjl_done_msg '%s'", Pjl_done_msg); if( (s = Fix_option_str( Pjl_done_msg, 0, 1, 1)) ){ SNPRINTF(msg,sizeof(msg)) "%s", s); } } SNPRINTF(End_ready_msg,sizeof(End_ready_msg)) "%s", msg); if( Pjl_display_size > 0 && safestrlen(End_ready_msg) > Pjl_display_size ){ End_ready_msg[Pjl_display_size] = 0; } DEBUG2("Pjl_displayname: End_ready_msg '%s'", End_ready_msg); } /* * int Pjl_job() * - put out the JOB START string */ void Pjl_job() { char *s, buffer[SMALLBUFFER]; int n = 0, len; buffer[0] = 0; n = GET_HASH_IVAL_OBJ(Model,"pjl_job"); if( n && ( (LEN_HASH_OBJ(Pjl_only) && !GET_HASH_IVAL_OBJ(Pjl_only, "job")) || (LEN_HASH_OBJ(Pjl_except) && GET_HASH_IVAL_OBJ( Pjl_except, "job"))) ){ n = 0; } DEBUG2("Pjl_job: Pjl %d, flag %d", Pjl, n ); if( Pjl == 0 || n == 0 ){ return; } buffer[0] = 0; len = safestrlen(buffer); SNPRINTF(buffer+len, sizeof(buffer)-len) Jobreset_str); len = safestrlen(buffer); SNPRINTF(buffer+len, sizeof(buffer)-len) Jobstart_str, Jobname ); len = safestrlen(buffer); if( Pjl_console ){ SNPRINTF(buffer+len, sizeof(buffer)-len) Job_display, Job_ready_msg ); } if( (s = GET_HASH_STR_OBJ( Zopts, "startpage", MEMINFO)) || (s = GET_HASH_STR_OBJ( Topts, "startpage", MEMINFO)) ){ n = atoi( s ); if( n > 0 ){ len = safestrlen(buffer); SNPRINTF(buffer+len, sizeof(buffer)-len) " START = \"%d\"", n ); } } if( (s = GET_HASH_STR_OBJ( Zopts, "endpage", MEMINFO)) || (s = GET_HASH_STR_OBJ( Topts, "endpage", MEMINFO)) ){ n = atoi( s ); if( n > 0 ){ len = safestrlen(buffer); SNPRINTF(buffer+len, sizeof(buffer)-len) " END = \"%d\"", n ); } } DEBUG2("Pjl_job: final = '%s'", buffer ); Put_pjl( buffer ); } /* * int Pjl_eoj(char *name) * - put out the JOB EOJ string */ void Pjl_eoj(char *name) { char buffer[SMALLBUFFER]; int n = 0; int len; n = GET_HASH_IVAL_OBJ(Model,"pjl_job"); if( n && ( (LEN_HASH_OBJ(Pjl_only) && !GET_HASH_IVAL_OBJ(Pjl_only, "job")) || (LEN_HASH_OBJ(Pjl_except) && GET_HASH_IVAL_OBJ( Pjl_except, "job"))) ){ n = 0; } DEBUG2("Pjl_eoj: Pjl %d, flag %d", Pjl, n ); if( Pjl == 0 || n == 0 ){ return; } buffer[0] = 0; len = safestrlen(buffer); SNPRINTF(buffer+len, sizeof(buffer)-len) Jobend_str, name ); Put_pjl( buffer ); } /* * PJL RDYMSG option * pjl_console enables messages on console * pjl_console@ disables or erases messages on console */ char *PJL_RDYMSG_str = "@PJL RDYMSG DISPLAY = \"%s\" "; void Pjl_console_msg( int start ) { char buffer[SMALLBUFFER], *name; DEBUG2("Pjl_console: flag %d, start %d, jobname '%s'", Pjl_console, start, Jobname ); if( Pjl == 0 || Pjl_console == 0 ){ return; } Pjl_displayname(); if( start ){ name = Job_ready_msg; } else { name = End_ready_msg; } SNPRINTF(buffer, sizeof(buffer)) PJL_RDYMSG_str, name ); DEBUG2("Pjl_console: console msg '%s'", buffer); Put_pjl( buffer ); } /* * PJL SET VAR=VALUE * 1. The variable is in the Pjl_vars_set list * @PJL var = value * OR the variable is in the Pjl_options_set list * @PJL var value * 2. The variable must not be in the Pjl_vars_except list * This list has entries of the form * var var var */ char *PJL_SET_str = "@PJL SET %s = %s"; char *PJL_SET_string_str = "@PJL SET %s = \"%s\""; char *PJL_OPTION_str = "@PJL %s %s"; int Pjl_setvar(char *prefix, char*id, char *value, Wr_out routine) { int found = 0, n; char buffer[SMALLBUFFER], *s; DEBUG3( "Pjl_setvar: prefix '%s', id '%s', value '%s'", prefix, id, value ); buffer[0] = 0; if( (s = GET_HASH_STR_OBJ( Pjl_vars_set, id,MEMINFO )) ){ DEBUG3( "Pjl_setvar: found id '%s'='%s'", id, s ); if( !GET_HASH_IVAL_OBJ( Pjl_vars_except, id ) ){ DEBUG3( "Pjl_setvar: not in the except list" ); if( strchr(s,';') ){ /* we have constraint key=default!(usekey)TYPE;val1,val2,... */ char *value_list, *end, *default_value, *real_name, *type_name, *values; char *working = safestrdup(s,MEMINFO); default_value = 0; if( (end = strchr(working,'!')) ){ default_value = working; *end++ = 0; } else { end = working; } real_name = 0; if( cval(end) == '('){ char *t; real_name = end+1; end = strchr(end,')'); *end++ = 0; for( t = real_name; !ISNULL(t) && (t = strchr(t,'+')); ++t ) *t = ' '; } type_name = end; values = 0; if( (end = strchr(end,';')) ){ *end++ = 0; values = end; } DEBUG3( "Pjl_setvar: id '%s', real_name '%s', value '%s', default_value '%s', type_name '%s', values '%s'", id, real_name, value, default_value, type_name, values ); if( !value ) value = default_value; /* * now we validate */ if( !strcasecmp(type_name,"string") ){ DEBUG3( "Pjl_setvar: id '%s', string value '%s'", real_name?real_name:id, value?value:"" ); SNPRINTF(buffer,sizeof(buffer)) PJL_SET_string_str, real_name?real_name:id, value?value:"" ); } else if( !strcasecmp(type_name,"enumerated") ){ char *t; found = 0; if( ISNULL(value) ){ value = values; if( (end = strchr(values,',')) ) *end++ = 0; found = 1; } else { for( t = values; !found && !ISNULL(t); t = end ){ if( (end = strchr(t,',')) ) *end = 0; found = !strcasecmp(value,t); if( end ){ *end = ','; ++end; } } if( !found ){ char *m = 0; if( !strcmp(value,"1") ) m = "on"; if( !strcmp(value,"0" ) ) m = "off"; DEBUG3( "Pjl_setvar: value '%s', trying '%s'", value, m ); for( t = values; m && !found && !ISNULL(t); t = end ){ if( (end = strchr(t,',')) ) *end = 0; found = !strcasecmp(m,t); if( end ){ *end = ','; ++end; } } if( found ) value = m; } } if( !found ){ t = strchr(s,';'); ++t; LOGMSG(LOG_INFO)_("Pjl_setvar: WARNING - value for PJL variable '%s' = '%s' is not one of '%s'"), id, value, t ); } else { DEBUG3( "Pjl_setvar: id '%s', enumerated value '%s'", real_name?real_name:id, value?value:"" ); SNPRINTF(buffer,sizeof(buffer)) PJL_SET_str, real_name?real_name:id, value?value:"" ); } } else if( !strcasecmp(type_name,"range") ){ char *t; found = 1; if( ISNULL(value) ){ LOGMSG(LOG_INFO)_("Pjl_setvar: WARNING - missing value for PJL variable '%s'"), id ); } else { double low, high, v; end = 0; low = high = v = 0; found = 1; v = strtod(value,&end); DEBUG3( "Pjl_setvar: v %f", v ); if( !end || cval(end) ){ found = 0; } if( found ){ low = strtod(values,&end); DEBUG3( "Pjl_setvar: low %f", low ); if( ISNULL(end) && cval(end) != ',' ){ found = 0; } else { ++end; } } if( found ){ high = strtod(end,&end); DEBUG3( "Pjl_setvar: high %f", high ); if( !end ){ found = 0; } } if( found ){ if( low > high ){ double m; m = low; low = high; high = m; } if( v < low || v > high ){ found = 0; } } DEBUG3( "Pjl_setvar: low %f, high %f, value %f", low, high, v ); if( !found ){ LOGMSG(LOG_INFO)_("Pjl_setvar: WARNING - bad value for PJL variable '%s' = '%s', not in range %s"), id, value, values ); } else { DEBUG3( "Pjl_setvar: id '%s', range value '%s'", real_name?real_name:id, value?value:"" ); SNPRINTF(buffer,sizeof(buffer)) PJL_SET_str, real_name?real_name:id, value?value:"" ); } } } else { LOGMSG(LOG_INFO)_("Pjl_setvar: WARNING - unknown type for PJL variable '%s' = '%s', %s"), id, value, type_name ); } if( working ) free( working ); working = 0; } else { /* we do not have constraint */ /* convert to ON/OFF if numerical value */ if( !value ) value = s; s = 0; n = strtol(value,&s,0); if( s && !cval(s) ){ if(n) value = "ON"; if(!n) value = "OFF"; } DEBUG3( "Pjl_setvar: setting '%s' = '%s'", id, value ); SNPRINTF(buffer,sizeof(buffer)) PJL_SET_str,id,value); found = 1; } if( cval(buffer) ){ if(strlen(buffer) < sizeof(buffer)-2 ){ uppercase(buffer); routine(buffer); } else { Errorcode = JABORT; FATAL(LOGINFO)_("Pjl_setvar: PJL option too long! '%s'"), buffer ); } } found = 1; } } else if( (s = GET_HASH_STR_OBJ( Pjl_options_set, id,MEMINFO )) ){ DEBUG3( "Pjl_setvar: found option id '%s'='%s'", id, s ); if( !GET_HASH_IVAL_OBJ( Pjl_vars_except, id ) ){ DEBUG3( "Pjl_setvar: not in the except list" ); if( !value ) value = ""; DEBUG3( "Pjl_setvar: setting 'PJL %s %s", id, value ); SNPRINTF(buffer,sizeof(buffer)) PJL_OPTION_str,id,value); uppercase(buffer); routine(buffer); found = 1; } } return(found); } int Pcl_setvar(char *prefix, char*id, char *value, Wr_out routine ) { int found = 0; char *s; DEBUG3( "Pcl_setvar: prefix '%s', id '%s', value '%s'", prefix, id, value ); if( (s = GET_HASH_STR_OBJ( Pcl_vars_set, id,MEMINFO)) ){ DEBUG3( "Pcl_setvar: found id '%s'='%s'", id, s ); if( !Find_in_list( Pcl_vars_except, id ) ){ DEBUG3( "Pcl_setvar: not in the except list" ); if( !value ) value = s; DEBUG3( "Pcl_setvar: setting '%s' = '%s'", id, value ); if( value ){ routine(value); } found = 1; } } return(found); } /* * Do_sync() * actual work is done here later * sync=pjl enables pjl * sync=ps enables postscript * sync@ disables sync * default is to use the prefix value */ char *PJL_ECHO_str = "@PJL ECHO %s"; char *CTRL_T = "\024"; char *CTRL_D = "\004"; /* * void Do_sync( int sync_timeout, int sync_interval, int pagecount_pjl ) * - get a response from the printer * timeout is sync_timeout * send the synchronization stuff at sync_interval seconds * pagecount_pjl means that we should check for pagecount */ void Do_sync( int sync_timeout, int sync_interval, int pagecount_pjl ) { char buffer[SMALLBUFFER], name[SMALLBUFFER], *s, *sync_str; int len, elapsed, timeout, sync, use, use_ps, use_pjl, use_snmp, cx, attempt; time_t start_t, current_t, interval_t; char *use_prog = 0; struct stat statb; time( &start_t ); cx = 0; sync_str = 0; s = Sync; DEBUG2("Do_sync: sync is '%s'", Sync ); /* we see if we can do sync */ use = use_pjl = use_ps = use_snmp = 0; if( !Is_flag( s, &use ) ){ /* we check to see if the string is specifying */ if( cval(s) == '|' ){ use_prog = Fix_option_str( s+1, 0, 1, 1 ); } else if( !strcasecmp(s,"pjl") ){ use_pjl = Pjl; } else if( !strcasecmp(s,"ps") ){ use_ps = Ps; } else if( !strcasecmp(s,"snmp") ){ use_snmp = 1; } use = 1; } else if( use ){ use_ps = Ps; use_pjl = Pjl; } else { return; } if( use_pjl && ( (LEN_HASH_OBJ(Pjl_only) && !GET_HASH_IVAL_OBJ( Pjl_only, "echo")) || (LEN_HASH_OBJ(Pjl_except) && GET_HASH_IVAL_OBJ( Pjl_except, "echo"))) ){ use_pjl = 0; } if( use_pjl ) use_ps = 0; if( !use_ps && !use_pjl && !use_prog && !use_snmp ){ Errorcode = JABORT; FATAL(LOGINFO)_("Do_sync: sync '%s' and method not supported"), s ); } if( !sync_str && use_snmp ) sync_str = "snmp"; if( !sync_str && use_pjl ) sync_str = "pjl echo"; if( !sync_str && use_ps ) sync_str = "ps"; if( !sync_str && use_prog ) sync_str = use_prog; LOGMSG(LOG_INFO)_("Do_sync: getting sync using '%s'%s"), sync_str, Snmp_fd?" and snmp":"" ); attempt = 0; sync = 0; if( !use_snmp && Appsocket && fstat(1,&statb) == -1 ){ Open_device( Device ); DEBUG1("Start_of_job: Appsocket device open done"); } again: ++attempt; DEBUG2("Do_sync: attempt %d", attempt ); /* get start time */ time( &interval_t ); Init_outbuf(); SNPRINTF(name, sizeof(name)) "%d@%s", getpid(), Time_str(0,0)); { int c; for( s = name; (c = cval(s)); ++s ){ if( isspace(c) || c == ':') *s = '_'; } } lowercase(name); DEBUG2("Do_sync: Ps_status_code '%s', use_pjl %d, use_ps %d", Ps_status_code, use_pjl, use_ps ); if( use_pjl ){ Put_outbuf_str( PJL_UEL_str ); Put_outbuf_str( PJL_str ); if( (s = GET_HASH_STR_OBJ( Model, "pjl_init", MEMINFO)) ){ OBJ *l = 0; l = NEW_OBJ(l,MEMINFO); DEBUG1("Start_of_job: 'pjl_init'='%s'", s); Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); Resolve_list( "pjl_", l, 0, Put_pjl, 0, MAX_DEPTH ); Clear_OBJ(l); } SNPRINTF(buffer, sizeof(buffer)) PJL_ECHO_str, name ); Put_pjl( buffer ); SNPRINTF(buffer, sizeof(buffer)) PJL_RDYMSG_str, Job_ready_msg ); Put_pjl( buffer ); if( pagecount_pjl ){ Put_pjl( PJL_INFO_PAGECOUNT_str ); } Put_outbuf_str( PJL_UEL_str ); } else if( use_ps ){ if( Ps_status_code == 0 ){ FATAL(LOGINFO)_("Do_sync: sync '%s' and no ps_status_code value"), sync_str ); } if(Pjl){ Put_outbuf_str( PJL_UEL_str ); if( Pjl_enter ){ Put_outbuf_str( PJL_str ); Put_outbuf_str( "@PJL ENTER LANGUAGE = POSTSCRIPT\n" ); } } /* watch out for ^D as part of sync */ if( !Appsocket && Ps_eoj && Ps_eoj_at_start ) Put_outbuf_str( CTRL_D ); if( (s = safestrstr(Ps_status_code,"NAME")) ){ cx = *s; *s = 0; } Put_outbuf_str( Ps_status_code ); Put_outbuf_str( name ); if( s ){ *s = cx; s += 4; Put_outbuf_str( s ); }; Put_outbuf_str("\n"); /* watch out for ^D as part of sync */ if( !Appsocket && Ps_eoj && Ps_eoj_at_end ) Put_outbuf_str( CTRL_D ); if(Pjl){ Put_outbuf_str( PJL_UEL_str ); } } DEBUG2("Do_sync: sync string '%s'", Outbuf ); while( !sync ){ /* write the string */ /* check to see if we need to read */ time( ¤t_t ); elapsed = current_t - start_t; /* check for master timeout */ if( sync_timeout > 0 ){ if( elapsed >= sync_timeout ){ break; } timeout = sync_timeout - elapsed; } else { timeout = 0; } elapsed = current_t - interval_t; DEBUG3("Do_sync: timeout %d, sync_interval %d, elpased %d", timeout, sync_interval, elapsed ); if( sync_interval > 0 ){ timeout = sync_interval - elapsed; if( timeout <= 0 ){ LOGMSG(LOG_INFO)_("Do_sync: printer not detected, trying again")); LOGMSG(LOG_INFO)_("Do_sync: Perhaps printer offline or not detected by Operating System")); LOGMSG(LOG_INFO)_("Do_sync: If on a parallel port then parallel port may not be bidirectional")); LOGMSG(LOG_INFO)_("Do_sync: Use the 'status@' filter option to suppress this check")); LOGMSG(LOG_INFO)_("Do_sync: See the ifhp man page or the ifhp HOWTO for details")); goto again; } } DEBUG3("Do_sync: waiting for sync, timeout %d", timeout ); len = 0; if( use_prog ){ len = Get_prog_status( Devstatus, use_prog, timeout ); sync = GET_HASH_IVAL_OBJ(Devstatus,"sync"); } else if( Outlen ){ len = Write_read_timeout( Outlen, Outbuf, timeout ); Init_outbuf(); } else { len = Read_status_timeout( timeout ); } DEBUG3("Do_sync: read/write result '%d'", len ); if( Snmp_fd ){ int i; for( i = 0; !sync && i < LEN_LIST_OBJ(Status_fields); ++i ){ char *s = GET_ENTRY_LIST_OBJ(Status_fields,i); char *status = GET_HASH_STR_OBJ( Devstatus, s, MEMINFO); /* The status we get back must be in the Snmp_sync_status list, * the value in the list must not start with '!' */ DEBUG3( "Do_sync: %s '%s', Snmp_sync_status '%s'", s, status, Snmp_sync_status); if( (s = safestrstr( Snmp_sync_status, status )) && (s == Snmp_sync_status || cval(s-1) != '!') ){ sync = 1; } } if( sync ) break; } if( (s = GET_HASH_STR_OBJ( Devstatus, "echo", MEMINFO)) && safestrstr( s, name ) ){ sync = 1; break; } if( len == -1 ){ Errorcode = JFAIL; FATAL(LOG_INFO)_("Do_sync: EOF on connection")); break; } s = GET_HASH_STR_OBJ( Devstatus, "error", MEMINFO ); if( !ISNULL(s) ){ Errorcode = JFAIL; FATAL(LOGINFO)_("Do_sync: error '%s'"), s ); } } DEBUG2("Do_sync: sync %d", sync ); if( sync == 0 ){ Errorcode = JFAIL; FATAL(LOGINFO)"Do_sync: no sync response from printer" ); } if( use_prog ) free( use_prog ); use_prog = 0; LOGMSG(LOG_INFO)_("Do_sync: sync done")); } /* * void Do_waitend( int waitend_timeout, int interval ) * - get the job status from the printer * and wait for the end of job */ char *PJL_USTATUS_JOB_str = "@PJL USTATUS JOB = ON"; void Do_waitend( int waitend_timeout, int waitend_interval, int waitend_ctrl_t_interval, int banner ) { char *sync_str, *opt_str, buffer[SMALLBUFFER], endname[SMALLBUFFER]; int len, elapsed, timeout, use, use_pjl, use_ps, use_job, c, use_snmp, echo_received = 0, first_time = 1; time_t start_t, current_t, interval_t, response_t; char *status; char *waitend; char *use_prog = 0; struct stat statb; time( &start_t ); response_t = start_t; SET_HASH_STR_OBJ( Devstatus, "pagecount", 0, MEMINFO ); opt_str = (Waitend?Waitend:Sync); DEBUG1("Do_waitend: waitend '%s', end_status '%s', Send_job_rw_timeout %d, waitend timeout %d, interval %d, ctrl_t_interval %d", opt_str, End_status, Send_job_rw_timeout, waitend_timeout, waitend_interval, waitend_ctrl_t_interval ); /* we see if we can do sync */ use = use_pjl = use_ps = use_job = use_snmp = 0; sync_str = 0; if( !Is_flag( opt_str, &use ) ){ /* we check to see if the string is specifying */ if( cval(opt_str) == '|' ){ use_prog = Fix_option_str( opt_str+1, 0, 1, 1 ); } else if( !strcasecmp(opt_str,"pjl") ){ use_pjl = Pjl; } else if( !strcasecmp(opt_str,"ps") ){ use_ps = Ps; } else if( !strcasecmp( opt_str, "snmp") ){ use_snmp = 1; } use = 1; } else if( use ){ use_job = use_pjl = Pjl; use_ps = Ps; } else { return; } if( ISNULL(End_status) || Is_flag(End_status, &c) ){ Errorcode = JABORT; FATAL(LOGINFO)_("Do_waitend: invalid endstatus value '%s'"), End_status ); } if( use_pjl ){ use_job = GET_HASH_IVAL_OBJ(Model,"pjl_job"); if( use_job && ( (LEN_HASH_OBJ(Pjl_only) && !GET_HASH_IVAL_OBJ(Pjl_only, "job")) || (LEN_HASH_OBJ(Pjl_except) && GET_HASH_IVAL_OBJ( Pjl_except, "job"))) ){ use_job = 0; } if( !use_job && ( (LEN_HASH_OBJ(Pjl_only) && !GET_HASH_IVAL_OBJ(Pjl_only, "echo")) || (LEN_HASH_OBJ(Pjl_except) && GET_HASH_IVAL_OBJ( Pjl_except, "echo"))) ){ use_pjl = 0; } if( !use_ps && !use_pjl && !use_prog ){ Errorcode = JABORT; FATAL(LOGINFO)_("Do_waitend: waitend '%s' and interactive method not supported"), opt_str ); } } sync_str = 0; if( !sync_str && use_job ) sync_str = "pjl job/eoj"; if( !sync_str && use_pjl ) sync_str = "pjl echo"; if( !sync_str && use_ps ) sync_str = "ps"; if( !sync_str && use_prog ) sync_str = "prog"; if( !sync_str && use_snmp ) sync_str = "snmp"; LOGMSG(LOG_INFO)_("Do_waitend: getting end using '%s'%s"), sync_str, Snmp_fd?" and snmp":"" ); waitend = 0; /* find if we need to periodically send the waitend value */ DEBUG3("Do_waitend: use_pjl %d, use_job %d, use_ps %d, use_snmp %d, timeout %d, interval %d", use_pjl, use_job, use_ps, use_snmp, waitend_timeout, waitend_interval ); SNPRINTF(endname, sizeof(endname)) "%s PID %d", Time_str(1,0), getpid() ); { char *t; int c; for( t = endname; (c = cval(t)); ++t){ if( isspace(c) || c == ':' ) *t = '_'; } lowercase(endname); } DEBUG1("Do_waitend: endname '%s'", endname ); if ( Pjl_waitend_byjobname ) strcpy(endname, Jobname); again: Init_outbuf(); if( use_pjl ){ Put_outbuf_str( PJL_UEL_str ); Put_outbuf_str( PJL_str ); if ( Pjl_waitend_byjobname ) { /* do nothing, just wait for the end of the real job */ } else if( use_job ){ buffer[0] = 0; len = safestrlen(buffer); SNPRINTF(buffer+len, sizeof(buffer)-len) Jobreset_str); SNPRINTF(buffer+len, sizeof(buffer)-len) Jobstart_str, endname ); if( Pjl_console ){ len = safestrlen(buffer); SNPRINTF(buffer+len, sizeof(buffer)-len) Job_display, Job_ready_msg ); } Put_pjl(buffer); Put_pjl( PJL_USTATUS_JOB_str ); Pjl_eoj(endname); } else { SNPRINTF(buffer, sizeof(buffer)) PJL_ECHO_str, endname ); Put_pjl(buffer); } Put_outbuf_str( PJL_UEL_str ); } else if( use_ps ){ if( Ps_status_code == 0 ){ FATAL(LOGINFO)"Do_waitend: no ps_status_code value" ); } if( !echo_received || waitend_ctrl_t_interval > 0 ){ if(Pjl){ Put_outbuf_str( PJL_UEL_str ); if( Pjl_enter ){ Put_outbuf_str( PJL_str ); Put_outbuf_str( "@PJL ENTER LANGUAGE = POSTSCRIPT\n" ); } } if( !Appsocket && Ps_eoj && Ps_eoj_at_start ) Put_outbuf_str( CTRL_D ); if( !echo_received ){ char *s; c = 0; if( (s = safestrstr(Ps_status_code,"NAME")) ){ c = *s; *s = 0; } Put_outbuf_str( Ps_status_code ); Put_outbuf_str( endname ); if( s ){ *s = c; s += 4; Put_outbuf_str( s ); }; } Put_outbuf_str("\n"); if( waitend_ctrl_t_interval ){ Put_outbuf_str( CTRL_T ); } if( !Appsocket && Ps_eoj && Ps_eoj_at_end ) Put_outbuf_str( CTRL_D ); if(Pjl){ Put_outbuf_str( PJL_UEL_str ); } } } if( Snmp_fd ){ int i; if( !Appsocket && Snmp_wait_after_close > 0 ){ LOGMSG(LOG_INFO) _("Do_waitend: sleep %d before getting SNMP status"), Snmp_wait_after_close ); sleep(Snmp_wait_after_close); } /* clear these out */ for( i = 0; i < LEN_LIST_OBJ(Status_fields); ++i ){ char *s = GET_ENTRY_LIST_OBJ(Status_fields,i); SET_HASH_STR_OBJ( Devstatus, s, 0, MEMINFO); } } time( &interval_t ); DEBUG3("Do_waitend: sending '%s'", Outbuf ); Errorcode = 0; while( !waitend ){ char *s, *t, *u; /* write the string */ /* check to see if we need to read */ time( ¤t_t ); /* check for master timeout */ timeout = 0; if( waitend_timeout > 0 ){ elapsed = current_t - start_t; DEBUG3("Do_waitend: waitend timeout %d, elapsed %d", waitend_timeout, elapsed ); if( elapsed >= waitend_timeout ){ Errorcode = -JTIMEOUT; break; } timeout = waitend_timeout - elapsed; } if( Send_job_rw_timeout > 0 ){ int t; elapsed = current_t - response_t; DEBUG3("Do_waitend: Send_job_rw_timeout %d, elapsed %d from last response", Send_job_rw_timeout, elapsed ); if( elapsed >= Send_job_rw_timeout ){ Errorcode = -JTIMEOUT; break; } t = Send_job_rw_timeout - elapsed; if( timeout == 0 || t < timeout ) timeout = t; } if( waitend_interval > 0 ){ int t; elapsed = current_t - interval_t; t = waitend_interval - elapsed; if( t <= 0 ) goto again; if( timeout == 0 || t < timeout ) timeout = t; } DEBUG2("Do_waitend: timeout %d, Outlen %d '%s'", timeout, Outlen, Outlen?Outbuf:"" ); if( use_prog ){ len = Get_prog_status( Devstatus, use_prog, timeout ); if( GET_HASH_IVAL_OBJ( Devstatus,"waitend") ){ waitend = "program"; break; } } else if( Outlen ){ len = Write_read_timeout( Outlen, Outbuf, timeout ); if( len == 0 ) time( &response_t ); Init_outbuf(); } else { len = Read_status_timeout( timeout ); if( len == 0 ) time( &response_t ); } DEBUG3("Do_waitend: len %d", len ); if( len == -1 ){ /* we have an error */ LOGMSG(LOG_INFO) _("Do_waitend: EOF reading status") ); break; } if(DEBUGL3)SHORT_DUMP_OBJ("Do_waitend - Devstatus", Devstatus ); if( Snmp_fd ){ int i; if( first_time ){ /* clear these out - you will have old status from snmp */ for( i = 0; i < LEN_LIST_OBJ(Status_fields); ++i ){ char *s = GET_ENTRY_LIST_OBJ(Status_fields,i); SET_HASH_STR_OBJ( Devstatus, s, 0, MEMINFO); } first_time = 0; } for( i = 0; !waitend && i < LEN_LIST_OBJ(Status_fields); ++i ){ char *s = GET_ENTRY_LIST_OBJ(Status_fields,i); status = GET_HASH_STR_OBJ( Devstatus, s, MEMINFO); /* The status we get back must be in the Snmp_end_status list, * the value in the list must not start with '!' */ DEBUG3( "Do_waitend: %s '%s', Snmp_end_status '%s'", s, status, Snmp_end_status); if( (s = safestrstr( Snmp_end_status, status )) && (s == Snmp_end_status || cval(s-1) != '!') ){ waitend = "snmp"; SET_HASH_STR_OBJ( Devstatus, "pagecount", 0, MEMINFO ); break; } } if( waitend ) break; } if( use_pjl ){ char *e = GET_HASH_STR_OBJ( Devstatus, "echo", MEMINFO); s = GET_HASH_STR_OBJ( Devstatus, "job", MEMINFO); t = GET_HASH_STR_OBJ( Devstatus, "name", MEMINFO); u = GET_HASH_STR_OBJ( Devstatus, "result", MEMINFO); DEBUG2("Do_waitend: job '%s', name '%s', result '%s', echo '%s', endname %s", s, t, u, e, endname ); if( s && safestrstr(s,"end") && t && safestrstr(t,endname) ){ waitend = "pjl JOB"; break; } /* we have the job cancelled, so we retry */ if( (safestrstr(s, "CANCELED")) || (safestrstr(u, "CANCELED")) ){ SET_HASH_STR_OBJ(Devstatus,"job",0,MEMINFO); SET_HASH_STR_OBJ(Devstatus,"result",0,MEMINFO); LOGMSG(LOG_INFO)_("Do_waitend: job canceled")); goto again; } s = GET_HASH_STR_OBJ( Devstatus, "echo", MEMINFO); DEBUG2("Do_waitend: echo '%s', want '%s'", s, endname ); if( safestrstr(s,endname) ){ LOGMSG(LOG_INFO)_("Do_waitend: ECHO END detected")); waitend = "pjl ECHO"; break; } } else if( use_ps ){ if( !echo_received ){ s = GET_HASH_STR_OBJ( Devstatus, "echo", MEMINFO); echo_received = (safestrstr( s, endname ) != 0 ); DEBUG4("Do_waitend: echo '%s', endname '%s', echo_received %d", s, endname, echo_received ); } if( echo_received ){ status = GET_HASH_STR_OBJ( Devstatus, "status", MEMINFO); /* The status we get back must be in the End_status list, * the value in the list must not start with '!' */ DEBUG4( "Do_waitend: status '%s', End_status '%s'", status, End_status); if( (s = safestrstr( End_status, status )) && (s == End_status || cval(s-1) != '!') ){ waitend = "ps"; break; } else if( waitend_ctrl_t_interval > 0 && waitend_interval > waitend_ctrl_t_interval ){ /* we wait only a short amount of time */ waitend_interval = waitend_ctrl_t_interval; } } DEBUG4("Do_waitend: waitend %d", waitend ); } s = GET_HASH_STR_OBJ( Devstatus, "error", MEMINFO ); if( !ISNULL(s) ){ Errorcode = JFAIL; FATAL(LOGINFO)_("Do_waitend: error '%s'"), s ); } } if( waitend == 0 ){ if( Errorcode == 0 ) Errorcode = JFAIL; FATAL(LOGINFO)_("Do_waitend: no end response from printer, timeout %d"), waitend_timeout ); } if( use_prog ) free( use_prog ); use_prog = 0; LOGMSG(LOG_INFO)_("Do_waitend: %s detected %s END"), banner?_("BANNER PAGE"):_("JOB"), waitend ); } /* * int Do_pagecount(void) * - get the pagecounter value from the printer * We can use the PJL or PostScript method * If we use PJL, then we send pagecount command, and read status * until we get the value. * If we use PostScript, we need to set up the printer for PostScript, * send the PostScript code, and then get the response. * * INFO PAGECOUNT Option * pagecount=pjl - uses PJL (default) * pagecount=ps - uses PS * pagecount=snmp - uses SNMP * pagecount@ * */ int Check_pagecount( int *use_ps_v, int *use_pjl_v, char **use_prog_v, int *use_snmp_v ) { int use, use_ps, use_pjl, use_snmp; char *s; char *use_prog = 0; *use_ps_v = *use_pjl_v = 0; *use_prog_v = 0; if( Status == 0 ) return(0); s = Pagecount; DEBUG4("Check_pagecount: status %d, pagecount using '%s'", Status, s ); /* we see if we can do pagecount */ use = use_pjl = use_ps = use_snmp = 0; if( !Is_flag( s, &use ) ){ /* we check to see if the string is specifying */ if( cval(s) == '|' ){ use_prog = Fix_option_str( s+1, 0, 1, 1 ); } else if( !strcasecmp(s,"pjl") ){ use_pjl = 1; } else if( !strcasecmp(s,"ps") ){ use_ps = 1; } else if( !strcasecmp(s, "snmp") ){ use_snmp = 1; } use = 1; } else if( use ){ use_pjl = Pjl; use_ps = Ps; } else { return(0); } Strip_leading_spaces( &Ps_pagecount_code ); if(use_ps && !Ps_pagecount_code){ use_ps = 0; } if( use_pjl && ( (LEN_HASH_OBJ(Pjl_only) && !GET_HASH_IVAL_OBJ(Pjl_only, "info")) || (LEN_HASH_OBJ(Pjl_except) && GET_HASH_IVAL_OBJ( Pjl_except, "info"))) ){ use_pjl = 0; } if(use_ps && !Ps_pagecount_code){ use_ps = 0; } if( use_pjl ) use_ps = 0; if( !use_ps && !use_pjl && !use_prog && !use_snmp ){ Errorcode = JABORT; FATAL(LOGINFO)_("Check_pagecount: pagecount '%s' and method not supported"), s ); } s = 0; if( !s && use_pjl ) s = "pjl info pagecount"; if( !s && use_ps ) s = "ps script"; if( !s && use_prog ) s = "program"; if( !s && use_snmp ) s = "snmp info pagecount"; LOGMSG(LOG_INFO)_("Check_pagecount: pagecount using '%s'%s"), s, (Snmp_fd&&!use_snmp)?" and snmp":"" ); *use_ps_v = use_ps; *use_pjl_v = use_pjl; *use_prog_v = use_prog; *use_snmp_v = use_snmp; return(1); } int Do_pagecount( int pagecount_timeout, int pagecount_interval, int pagecount_poll, int use_ps, int use_pjl, char *use_prog, int use_snmp ) { int pagecounter = -1, new_pagecounter = -1, len; int pagecount_same = 1; char *s; if( (s = GET_HASH_STR_OBJ( Devstatus, "pagecount", MEMINFO )) ){ pagecounter = atoi( s ); } DEBUG1("Do_pagecount: pagecount at start %d", pagecounter ); if( use_prog ){ if( !pagecounter ){ len = Get_prog_status( Devstatus, use_prog, pagecount_timeout ); pagecounter = GET_HASH_IVAL_OBJ( Devstatus, "pagecount" ); DEBUG1("Do_pagecount: pagecount returned by program %d", pagecounter ); LOGMSG(LOG_INFO)_("Do_pagecount: pagecounter %d from program"), pagecounter ); } else { LOGMSG(LOG_INFO)_("Do_pagecount: pagecounter %d"), pagecounter ); } return( pagecounter ); } if( pagecount_poll > 0 ){ LOGMSG(LOG_INFO)_("Do_pagecount: polling pagecounter %d times at %d second intervals, max timeout %d"), pagecount_poll, pagecount_interval, pagecount_timeout ); SET_HASH_STR_OBJ( Devstatus, "pagecount", 0, MEMINFO ); pagecounter = 0; } pagecount_same = 0; if( pagecounter == -1 || pagecount_poll > 1 ){ do{ int timeout; time_t start_t, now_t; time( & start_t ); timeout = pagecount_timeout; /* if( pagecount_poll > 1 && pagecount_interval > 0 ){ timeout = pagecount_interval; } */ DEBUG1("Do_pagecount: getting pagecount, timeout %d, pagecount_same %d, pagecount_poll %d", timeout, pagecount_same, pagecount_poll); new_pagecounter = Current_pagecounter(timeout, use_pjl, use_ps, use_snmp ); if( new_pagecounter == -JTIMEOUT ){ /* timeout */ Errorcode = JTIMEOUT; FATAL(LOGINFO)_("Do_pagecount: timeout getting pagecount")); } else if( new_pagecounter == -1 ){ Errorcode = JFAIL; FATAL(LOGINFO)_("Do_pagecount: IO error getting pagecount")); } if( new_pagecounter == pagecounter ){ ++pagecount_same; } else { pagecounter = new_pagecounter; pagecount_same = 1; } if( pagecount_same < pagecount_poll && pagecount_interval > 0 ){ int n; time( &now_t ); n = pagecount_interval - (int)(now_t - start_t); if( n <= 0 ) n = 1; DEBUG1("Do_pagecount: sleeping %d seconds", n); sleep( n ); SET_HASH_STR_OBJ( Devstatus, "pagecount", 0, MEMINFO ); } } while( pagecounter == -1 || pagecount_same < pagecount_poll); } LOGMSG(LOG_INFO)_("Do_pagecount: pagecounter %d after %d attempts"), pagecounter, pagecount_same ); SET_HASH_IVAL_OBJ( Devstatus, "pagecount", pagecounter, MEMINFO ); return( pagecounter ); } int Current_pagecounter( int pagecount_timeout, int use_pjl, int use_ps, int use_snmp ) { int len, flag, elapsed, timeout, page, pagecounter = 0; time_t start_t, current_t, interval_t; char *s; /* get start time */ time( & start_t ); if(DEBUGL4)SHORT_DUMP_OBJ("Current_pagecounter - starting Devstatus",Devstatus); again: if( Appsocket && !use_snmp ){ DEBUG1("Current_pagecounter: Appsocket device close"); close(1); Open_device( Device ); DEBUG1("Current_pagecounter: Appsocket device open done"); } /* interval time */ time( & interval_t ); if(DEBUGL4)SHORT_DUMP_OBJ("Current_pagecounter - loop Devstatus", Devstatus); DEBUG1("Current_pagecounter: starting, use_pjl %d, use_ps %d, timeout %d", use_pjl, use_ps, pagecount_timeout ); /* remove the old status */ /* SET_HASH_STR_OBJ(Devstatus,"pagecount",0,MEMINFO); */ Init_outbuf(); if( use_pjl ){ Put_outbuf_str( PJL_UEL_str ); Put_outbuf_str( PJL_str ); Put_pjl( PJL_INFO_PAGECOUNT_str ); Put_outbuf_str( PJL_UEL_str ); } else if( use_ps ){ if( !Ps_pagecount_code ){ Errorcode = JABORT; FATAL(LOGINFO)_("Current_pagecounter: no ps_pagecount_code config info")); } if( Pjl ){ Put_outbuf_str( PJL_UEL_str ); if( Pjl_enter ){ Put_outbuf_str( PJL_str ); Put_outbuf_str( "@PJL ENTER LANGUAGE = POSTSCRIPT\n" ); } } /* Watch out for ^D again */ if( !Appsocket && Ps_eoj && Ps_eoj_at_start ) Put_outbuf_str( CTRL_D ); Put_outbuf_str( Ps_pagecount_code ); Put_outbuf_str( "\n" ); if( !Appsocket && Ps_eoj && Ps_eoj_at_end ) Put_outbuf_str( CTRL_D ); if( Pjl ) Put_outbuf_str( PJL_UEL_str ); } DEBUG2("Current_pagecounter: using string '%s'", Outbuf ); page = 0; len = 0; while(!page){ if(DEBUGL4)SHORT_DUMP_OBJ("Current_pagecounter - page wait Devstatus",Devstatus); if( (s = GET_HASH_STR_OBJ( Devstatus, "pagecount", MEMINFO )) ){ if( s && isdigit(cval(s)) ){ pagecounter = atoi( s ); page = 1; break; } } flag = 0; /* write the string */ /* check to see if we need to read */ time( ¤t_t ); elapsed = current_t - start_t; if( pagecount_timeout > 0 ){ if( elapsed >= pagecount_timeout ){ break; } timeout = pagecount_timeout - elapsed; } else { timeout = 0; } if( Outlen ){ DEBUG1("Current_pagecounter: writing %d", Outlen ); len = Write_read_timeout( Outlen, Outbuf, timeout ); DEBUG1("Current_pagecounter: Write_read_timeout result %d", len ); Init_outbuf(); } else { len = Read_status_timeout( timeout ); DEBUG1("Current_pagecounter: Read_status_timeout result %d", len ); } if( len == -1 ){ LOGMSG(LOG_INFO) _("Current_pagecounter: EOF reading status") ); pagecounter = -1; break; } else if( len == -JTIMEOUT ){ pagecounter = -JTIMEOUT; break; } s = GET_HASH_STR_OBJ( Devstatus, "error", MEMINFO ); if( !ISNULL(s) ){ Errorcode = JFAIL; FATAL(LOGINFO)_("Current_pagecounter: error '%s'"), s ); } } done: DEBUG1("Current_pagecounter: page %d, pagecounter %d", page, pagecounter ); return( pagecounter ); } /* * Send_job * 1. we read an input buffer * 2. we then check to see what type it is * 3. we then set up the various configuration * 4. we then send the job to the remote end * Note: there is a problem when you send language switch commands * to the HP 4M+, and other printers. * two functions. * * The following comments from hp.com try to explain the situation: * *"What is happening is the printer buffer fills with your switch * command and the first parts of your job. The printer does not * "prescan" the input looking for the %-1234... but instead gets * around to it after some time has expired. During the switch, the * data that you have already trasmitted is discarded and is picked * up whereever your driver happens to be. For PostScript that's a * messy situation. * * What you need to do is isolate the switch command. You can do this * with nulls if you have no control over the timing. 8K of them will * fill the largest allocated I/O buffer and then hold off the UNIX * system. The switch will be made and the initial remaining nulls * will be discarded. If you can control the timing of the data, you'll * have to experiment with the correct time. * */ char *PJL_ENTER_str = "@PJL ENTER LANGUAGE = %s\n"; char *PCL_EXIT_str = "\033E"; void Send_job() { int len = 0, i, c, n, cnt, tempfd; char *s, *pgm = 0; int done = 0; OBJ *l = 0, *match = 0, *files = 0; char *language; int langhpgl2 = 0; /*added by Samuel Lown @ CERN */ char *file_util; struct stat statb; int progress_pc, progress_k; double total_size, progress_last, progress_total; char file_result[SMALLBUFFER]; char errmsg[SMALLBUFFER]; int error_count = 0; l = NEW_OBJ(l,MEMINFO); match = NEW_OBJ(match,MEMINFO); files = NEW_OBJ(files,MEMINFO); LOGMSG(LOG_INFO) _("Send_job: starting transfer") ); Make_stdin_file(); file_util = GET_HASH_STR_OBJ( Model, "file_util_path", MEMINFO ); file_util = Fix_option_str( file_util, 0, 1, 1 ); /* find if there are user specified langagues */ language = 0; if( !Force_processing && (Loweropts['c'-'a'] || Autodetect) ){ language = RAW; } else if( (s = GET_HASH_STR_OBJ(Zopts,"language",MEMINFO)) && !ISNULL(s) ){ language = s; } again: DEBUG2( "Send_job: foomatic %d", Foomatic ); if( pgm ) SAFEFREE(pgm); pgm = 0; Init_outbuf(); if( lseek(0,0,SEEK_SET) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Send_job: lseek failed")); } /* we only need the first couple of characters */ cnt = 64; if( cnt > Outmax ) cnt = Outmax; DEBUG2( "Send_job: want %d", cnt ); Outlen = read( 0, Outbuf, cnt); Outbuf[Outlen] = 0; DEBUG2( "Send_job: read %d from stdin '%s'", Outlen, Outbuf ); if( Outlen < 0 ){ Errorcode = JFAIL; LOGERR_DIE(LOGINFO) _("Send_job: read error on stdin") ); } if( Outlen == 0 ){ LOGMSG(LOG_INFO) _("Send_job: zero length job file") ); return; } if( lseek(0,0,SEEK_SET) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Send_job: lseek failed")); } /* decide on the job type */ SET_HASH_STR_OBJ( Model,"file_output","",MEMINFO); if( language ){ /* we have the language already */ } else if( Force_conversion ){ if( ISNULL(file_util) ){ Errorcode = JABORT; FATAL(LOGINFO) _("Send_job: missing file_util_path value")); } DEBUG2( "Send_job: file_util_path '%s'", file_util ); Use_file_util(file_util, file_result, sizeof(file_result) ); language = file_result; } else if( !strncmp( PJL_UEL_str, Outbuf, safestrlen(PJL_UEL_str)) ){ language = PJL; } else if( Outbuf[0] == '\033' ){ if ( !strncmp(Outbuf+1, "E\033%0B", 5) ) { langhpgl2 = 1; DEBUG2( "Send_job: HPGL/2 language detected" ); } language = PCL; } else if( Outbuf[0] == '\004' && !strncmp(Outbuf+1, "%!", 2) ){ language = PS; } else if( !strncmp(Outbuf, "%!", 2) ){ language = PS; } else if( !ISNULL(file_util) ){ DEBUG2( "Send_job: file_util_path '%s'", file_util ); file_result[0] = 0; Use_file_util(file_util, file_result, sizeof(file_result) ); if( !ISNULL(file_result) ) language = file_result; } if( ISNULL(language) ){ /* defaults */ language = GET_HASH_STR_OBJ(Model,"default_language",MEMINFO); } if( ISNULL(language) ) language = UNKNOWN; /* rewind the file and get ready for action */ Init_outbuf(); if( lseek(0,0,SEEK_SET) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Send_job: lseek failed")); } if( fstat(0,&statb) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Send_job: fstat3 failed")); } LOGMSG(LOG_INFO) _("Send_job: initial job type '%s', size %d"), language, (int)statb.st_size ); if (langhpgl2) LOGMSG(LOG_INFO) _("Send_job: HPGL/2 flag set") ); if( safestrcmp(language,RAW) && (s = GET_HASH_STR_OBJ(Model, "file_output_match",MEMINFO)) ){ /* split the matches up */ Clear_OBJ(l); Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/"\n", /*escape*/"\n", /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); if(DEBUGL2)SHORT_DUMP_OBJ("Send_job: file_output_match", l ); for( i = 0; i < LEN_LIST_OBJ(l); ++i ){ char *s = GET_ENTRY_LIST_OBJ(l,i); int c = 0; DEBUG2("Send_job: [%d] '%s'", i, s ); if(s) while( (c = cval(s)) && (isspace(c) || c == ']' || c == '[') ) ++s; if( ISNULL(s) ) continue; Clear_OBJ(match); /* split the line into three parts */ for( n = 0; !ISNULL(s) && n < 2; ++n ){ char *t; while(isspace(cval(s))) ++s; t = safestrpbrk(s,WHITESPACE); if( t ){ c = *t; *t = 0; } if( cval(s) ){ APPEND_LIST_OBJ(match,s,MEMINFO); } if( t ) { *t = c; ++t; } s = t; } if(s) while(isspace(cval(s))) ++s; if( !ISNULL(s) ){ APPEND_LIST_OBJ(match,s,MEMINFO); } if(DEBUGL2)SHORT_DUMP_OBJ("Send_job: checking against", match ); n = LEN_LIST_OBJ(match); if( n == 0 ) continue; if( n != 2 && n != 3 ){ LOGMSG(LOG_INFO) _("Send_job: wrong number of fields in 'file_output_match' - '%s'"), s ); continue; } { char *t; t = GET_ENTRY_LIST_OBJ(match,0); if( !Globmatch( t, language ) ){ t = GET_ENTRY_LIST_OBJ(match,1); SNPRINTF(file_result,sizeof(file_result)) "%s", t); language = file_result; DEBUG1("Send_job: match language '%s'", language, pgm ); if( LEN_LIST_OBJ(match) == 3 ){ t = GET_ENTRY_LIST_OBJ(match,2); pgm = Fix_option_str( t, 0, 1, 1 ); DEBUG1("Send_job: converter pgm '%s', final '%s'", t, pgm ); } break; } } } } language = Set_mode_lang(language); DEBUG1("Send_job: language '%s', converter pgm '%s'", language, pgm ); LOGMSG(LOG_INFO) _("Send_job: decoded job type '%s'"), language ); /* we can treat text as PCL */ if( !safestrcasecmp(language,RAW) ){ ; } else if( !safestrcasecmp(language,MSG) ){ ; } else if( !safestrcasecmp(language,PJL) ){ if( !Pjl ){ Errorcode = JABORT; FATAL(LOGINFO)_("Send_job: job is PJL and PJL not supported")); } } else if( !safestrcasecmp(language,PCL) ){ if(langhpgl2 && !Pcl){ Errorcode = JABORT; FATAL(LOGINFO)_("Send_job: job is HPGL2 and neither PCL nor HPGL2 are supported")); } else if(!Pcl ){ Errorcode = JABORT; FATAL(LOGINFO)_("Send_job: job is PCL and PCL not supported")); } else if(langhpgl2 && !Hpgl2) { /* reset langhpgl2 flag if HPGL2 not supported */ langhpgl2 = 0; LOGMSG(LOG_INFO) _("Send_job: HPGL2 not supported, resorting to PCL") ); } } else if( !safestrcasecmp(language,PS) ){ if( !Ps ){ Errorcode = JABORT; FATAL(LOGINFO)_("Send_job: job is PostScript and PostScript not supported")); } /* * we use the Foomatic filter */ DEBUG1("Send_job: language '%s', foomatic %d, foomatic_rip %s, ppd %s", language, Foomatic, Foomatic_rip, Ppd_file ); if( Foomatic ){ Foomatic = 0; if( ISNULL(Foomatic_rip) ){ LOGMSG(LOG_INFO) _("Send_job: foomatic enabled and no path to foomatic-rip") ); } else if( ISNULL(Ppd_file ) ){ LOGMSG(LOG_INFO) _("Send_job: foomatic enabled and no PPD file specified") ); } else { if( pgm ) SAFEFREE(pgm); pgm = 0; pgm = Fix_option_str( Foomatic_rip, 0, 1, 1 ); language = FILTER; } } } else if( !safestrcasecmp(language,TEXT) ){ if( !Pcl && !Text ){ Errorcode = JABORT; FATAL(LOGINFO)_("Send_job: job is Text and Text not supported")); } if( Pcl ) language = PCL; } else if( !safestrcasecmp(language,FILTER) ){ if( ISNULL(pgm) ){ Errorcode = JABORT; FATAL(LOGINFO)_("Send_job: filter wanted and no filter specified")); } } else { LOGMSG(LOG_INFO) _("Send_job: cannot process language '%s'"), language ); goto done; } /* we now invoke the converter or do hanky-panky with the MSG * this is called a hack of the 2nd order... Patrick */ if( !ISNULL( pgm ) ){ LOGMSG(LOG_INFO) _("Send_job: job type '%s', converter '%s'"), language, pgm ); if( lseek(0,0,SEEK_SET) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Send_job: lseek failed")); } tempfd = Make_tempfile(); /* here is where we do the dirty work */ if( !safestrcasecmp( language, MSG ) ){ /* now we cunningly force a rescan * gahhh... I put this in but I hoped I would never * have to use it */ Write_error_msg( tempfd, pgm ); language = FILTER; } else { n = Filter_file( pgm, _("CONVERTER"), 0, tempfd, errmsg, sizeof(errmsg) ); if( n ){ close(tempfd); tempfd = Make_tempfile(); /* stop recursion from causing problems */ if( error_count > 2 ) { Errorcode = n; FATAL(LOGINFO)_("Send_job: converter failed, exit code %d"), n); } ++error_count; SET_HASH_STR_OBJ( Model,"pgm",pgm,MEMINFO); SET_HASH_STR_OBJ( Model,"msg",errmsg,MEMINFO); Write_error_msg( tempfd, "conversion_error" ); language = FILTER; } } if( fstat(tempfd,&statb) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Send_job: fstat2 failed")); } LOGMSG(LOG_INFO)_("Send_job: converter done, output %ld bytes"), (long)(statb.st_size) ); if( statb.st_size == 0 ){ Errorcode = JABORT; LOGMSG(LOG_INFO)_("Send_job: zero length conversion output")); } if( tempfd != 0 ){ if( dup2(tempfd,0) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Send_job: dup2 failed")); } if( close(tempfd) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Send_job: close(tempfd %d) failed"), tempfd); } } /* if you did filtering, then reopen for the job */ if( pgm ) SAFEFREE(pgm); pgm = 0; } else if( !safestrcmp(language,PJL) && Remove_pjl_at_start ){ LOGMSG(LOG_INFO) _("Send_job: job type '%s', stripping leading PJL "), language ); if( lseek(0,0,SEEK_SET) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Send_job: lseek failed")); } tempfd = Make_tempfile(); Init_outbuf(); do{ len = read( 0, Outbuf+Outlen, Outmax - Outlen); DEBUG2( "Send_job: read %d from stdin", len ); if( len < 0 ){ Errorcode = JFAIL; LOGERR_DIE(LOGINFO) _("Send_job: read error on stdin") ); } Outlen += len; Outbuf[Outlen] = 0; done = 0; while(!done){ n = safestrlen(PJL_UEL_str); if( !strncmp( PJL_UEL_str, Outbuf, n) ){ memmove( Outbuf, Outbuf+n, Outlen - n + 1); Outlen -= n; continue; } else if( !strncmp(Outbuf,"@PJL",4) ){ if( (s = safestrpbrk(Outbuf,"\n")) ){ *s++ = 0; n = s - Outbuf; memmove( Outbuf, s, Outlen - n + 1); Outlen -= n; continue; } else { break; } } done = 1; } } while( !done && len > 0 ); /* now we write this to the output file */ /*DEBUG2("Send_job: initial part len %d, '%s'", Outlen, Outbuf ); */ do{ if( Outlen > 0 ){ len = write( tempfd, Outbuf, Outlen ); if( len != Outlen ){ Errorcode = JFAIL; LOGERR_DIE(LOGINFO) _("Send_job: write error to tempfile") ); } } Outlen = read( 0, Outbuf, Outmax ); Outbuf[Outlen] = 0; /* DEBUG2("Send_job: next part len %d, '%s'", Outlen, Outbuf ); */ } while( Outlen > 0 ); if( dup2(tempfd,0) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO) _("Make_stdin_file: dup2 failed") ); } if( tempfd != 0 ) close(tempfd); tempfd = -1; language = 0; /* if you did filtering, then reopen for the job */ goto again; } else { LOGMSG(LOG_INFO) _("Send_job: job type '%s'"), language ); } /* run the job through the converter */ if( !safestrcmp(language,FILTER) ){ language = 0; goto again; } /* * If we have a HPGL2 job, rename language for Init_job * Init_job will put the language back for us */ if ( langhpgl2 ) { language = HPGL2; } Init_outbuf(); Init_job( language ); /* INIT JOB */ Init_outbuf(); DEBUG1("Send_job: doing file transfer"); if( fstat( 0, &statb ) < 0 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO) _("Send_job: cannot fstat fd 0") ); } total_size = statb.st_size; if( lseek(0,0,SEEK_SET) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Send_job: lseek failed")); } progress_last = progress_total = 0; progress_pc = progress_k = 0; if( (s = GET_HASH_STR_OBJ(Model,"progress_pc",MEMINFO)) ){ progress_pc = atoi(s); } if( (s = GET_HASH_STR_OBJ(Model,"progress_k",MEMINFO)) ){ progress_k = atoi(s); } if( progress_pc < 0 || progress_pc > 100 ){ progress_pc = 0; } if( progress_k <= 0 ) progress_k = 0; if( progress_pc == 0 && progress_k == 0 ) progress_k = 100; DEBUG2( "Send_job: input stat 0%06o, size %0.0f, progress_pc %d, progress_k %d", (int)(statb.st_mode & S_IFMT), total_size, progress_pc, progress_k ); LOGMSG(LOG_INFO) _("Send_job: transferring %0.0f bytes"), total_size ); if( !safestrcmp(language,PS) && Remove_ctrl ){ for( i = 0; i < safestrlen(Remove_ctrl); ++i ){ Remove_ctrl[i] &= 0x1F; } } Init_outbuf(); /* just a couple of bytes at the start */ Outlen = read( 0, Outbuf, 8); Outbuf[Outlen] = 0; DEBUG2( "Send_job: read %d from stdin", Outlen ); if( Outlen < 0 ){ Errorcode = JFAIL; LOGERR_DIE(LOGINFO) _("Send_job: read error on stdin") ); } if( Outlen == 0 ){ LOGMSG(LOG_INFO) _("Send_job: zero length job file") ); goto done; } /* strip off the ^D at start of PostScript jobs */ if( !safestrcmp(language,PS) && Outbuf[0] == '\004' ){ memmove(Outbuf,Outbuf+1,Outlen-1); Outlen -= 1; } if( Outlen > 1 && !safestrcmp(language,PCL) && Outbuf[0] == '\033' && Outbuf[1] == 'E' ){ memmove(Outbuf,Outbuf+2,Outlen-2); Outlen -= 2; } Outbuf[Outlen] = 0; DEBUG2( "Send_job: Outbuf after type and stripping '%s'", Outbuf ); done = 0; do{ len = 0; progress_total += Outlen; if( !safestrcmp(language,PS) && Tbcp ){ DEBUG4("Send_job: tbcp"); for( cnt = 0; cnt < Outlen; ){ len = 0; c = 0; for( i = cnt; c == 0 && i < Outlen; ){ switch( (c = ((unsigned char *)Outbuf)[i]) ){ case 0x01: case 0x03: case 0x04: case 0x05: case 0x11: case 0x13: case 0x14: case 0x1C: break; default: c = 0; ++i; break; } } /* we now write the string from cnt to count+i-1 */ n = i - cnt; DEBUG1("Send_job: tbcp writing %d", n ); if( (len = Write_read_timeout( n, Outbuf+cnt, Send_job_rw_timeout )) ){ break; } if( c ){ char b[2]; DEBUG1("Send_job: tbcp escape 0x%02x", c ); b[0] = '\001'; b[1] = c ^ 0x40; if( (len = Write_read_timeout( 2, b, Send_job_rw_timeout )) ){ break; } n += 1; } cnt += n; } } else if( !safestrcmp(language,PS) && Remove_ctrl ){ for( i = 0; i < Outlen; ){ c = cval(Outbuf+i); if( safestrchr( Remove_ctrl,c ) ){ memmove( Outbuf+i, Outbuf+i+1,Outlen-i); --Outlen; } else { ++i; } } len = Write_read_timeout( Outlen, Outbuf, Send_job_rw_timeout ); } else if( (!safestrcmp(language,TEXT) || !safestrcmp(language,PCL)) && Crlf ){ DEBUG4("Send_job: crlf"); for( cnt = 0; cnt < Outlen; ){ len = 0; c = 0; for( i = cnt; c == 0 && i < Outlen; ){ switch( (c = ((unsigned char *)Outbuf)[i]) ){ case '\n': break; default: c = 0; ++i; break; } } /* we now write the string from cnt to count+i-1 */ n = i - cnt; DEBUG1("Send_job: crlf writing %d", n ); if( (len = Write_read_timeout( n, Outbuf+cnt, Send_job_rw_timeout )) ){ break; } if( c ){ if( (len = Write_read_timeout( 2, "\r\n", Send_job_rw_timeout )) ){ break; } n += 1; } cnt += n; } } else { DEBUG1("Send_job: writing %d", Outlen ); len = Write_read_timeout( Outlen, Outbuf, Send_job_rw_timeout ); } if( len ){ Errorcode = JFAIL; LOGERR_DIE(LOGINFO) _("Send_job: job failed during copy") ); } Init_outbuf(); DEBUG1("Send_job: total written %0.0f", progress_total ); /* * now we do progress report */ i = (progress_total - progress_last)/total_size*100; if( progress_pc && (i >= progress_pc) ){ DEBUG1("Send_job: pc total %0.0f, change %d%%", progress_total, i ); i = progress_total/total_size*100; LOGMSG(LOG_INFO)_("Send_job: %d percent done"), i); progress_last = progress_total; } else if( progress_k ){ i = (progress_total - progress_last)/1024; DEBUG1("Send_job: k total %0.0f, change %d", progress_total, i ); if( i >= progress_k ){ if( progress_pc ){ i = progress_total/total_size*100; LOGMSG(LOG_INFO)_("Send_job: %d percent done"), i); } else LOGMSG(LOG_INFO)_("Send_job: %d Kbytes done"), (int)(progress_total/1024)); progress_last = progress_total; } } if( Outlen == 0 && !done ){ while( Outlen < Outmax && (len = read( 0, Outbuf+Outlen, Outmax - Outlen )) > 0 ){ DEBUG1("Send_job: read %d", len ); Outlen += len; } Outbuf[Outlen] = 0; DEBUG1("Send_job: read total %d", Outlen ); if( len < 0 ){ Errorcode = JFAIL; LOGERR_DIE(LOGINFO) _("Send_job: read error on stdin") ); } else if( len == 0 ){ done = 1; } } } while( Outlen > 0 ); DEBUG1( "Send_job: finished file transfer" ); Term_job( language ); done: FREE_OBJ(l); l = 0; FREE_OBJ(match); match = 0; FREE_OBJ(files); files = 0; } void URL_decode( char *s ) { if( s ) while( (s = safestrpbrk(s, "%?")) ){ if( cval(s) == '?' ){ *s = ' '; } if( (s[0] = s[1]) && (s[1] = s[2]) ){ s[2] = 0; s[0] = strtol(s,0,16); memmove(s+1,s+3, safestrlen(s+3)+1); ++s; } else { break; } } } /* * Builtins */ struct keyvalue Builtin_values[] = { /* we get the various UEL strings */ {"Font_download","font_download",(void *)Font_download,0,0}, {0,0,0,0,0} }; /* * Process_OF_mode() * We read from STDIN on a character by character basis. * We then send the output to STDOUT until we are done * If we get a STOP sequence, we suspend ourselves. * * We actually have to wait on 3 FD's - * 0 to see if we have input * 1 to see if we have output * * We will put the output in the Outbuf buffer * Note: if we need to suspend, we do this AFTER we have * written the output */ static char stop[] = "\031\001"; /* sent to cause filter to suspend */ int Process_OF_mode(void) { char inbuf[2]; int n, state; n = state = 0; if( ftruncate( 1, 0 ) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Process_OF_mode: ftruncate fd 1 failed")); } while( (n = read(0,inbuf,1)) > 0 ){ if( inbuf[0] == stop[state] ){ ++state; if( stop[state] == 0 ){ return(1); } continue; } else if( state ){ state = 0; if( write(1,stop,1) != 1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Process_OF_mode: write failed")); } } if( write(1,inbuf,1) != 1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Process_OF_mode: write failed")); } } if( state && write(1,stop,1) != 1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Process_OF_mode: write failed")); } return(n); } /* * set the close on exec flag for a reasonable range of FD's */ void close_on_exec( int n ) { int fd, max = Max_fd+10; for( fd = n; fd < max; fd++ ){ fcntl(fd, F_SETFD, 1); } } void Set_max_fd( int n ) { if( Max_fd < n ) Max_fd = n; } /* * Use_file_util(char *pgm, char *matches, OBJ *args * * We will need to use the file utility * pgm = program to invoke * matches = lines in form of * glob returntype program * args = arguments to use if successful * RETURN 0 if no match * != 0 if match */ void Use_file_util(char *pgm, char *value, int value_len ) { int n, fd, c; char *s, *t; DEBUG1("Use_file_util: pgm '%s', value_len %d", pgm, value_len); LOGMSG(LOG_INFO)_("Use_file_util: file program = '%s'"), pgm ); value[0] = 0; if( lseek(0,0,SEEK_SET) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Use_file_util: lseek failed")); } fd = Make_tempfile(); n = Filter_file( pgm, _("FILE_UTIL"), 0, fd, 0, 0 ); if( n ){ Errorcode = n; LOGERR_DIE(LOGINFO)_("Use_file_util: exit code %d"), n ); } if( lseek(fd,0,SEEK_SET) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Use_file_util: lseek failed")); } if( (n = read(fd,value,value_len-1)) < 0){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Use_file_util: read failed")); } if( n >= 0 ) value[n] = 0; close(fd); DEBUG1("Use_file_util: read %d, '%s'", n, value ); lowercase(value); if( (s = safestrchr(value,':')) ){ ++s; } else { s = value; } while( isspace(cval(s)) ) ++s; for( t = value; (c = cval(s)) ; ++s ){ if( isspace(cval(s)) && (isspace(cval(s+1)) || !cval(s+1)) ){ ; } else if( isspace(cval(s)) ){ *t++ = '_'; } else { *t++ = *s; } } *t = 0; LOGMSG(LOG_INFO)_("Use_file_util: file information = '%s'"), value ); DEBUG4("Use_file_util: file util done, '%s'", value ); SET_HASH_STR_OBJ( Model,"file_output",value,MEMINFO); } int Make_tempfile( void ) { int fd; char buffer[MAXPATHLEN]; char *tempfile; tempfile = GET_HASH_STR_OBJ( Model,"tempfile", MEMINFO ); if( ISNULL(tempfile) ) tempfile = getenv("TMP"); SNPRINTF(buffer,sizeof(buffer)) "%s%sifhpXXXXXX", ISNULL(tempfile)?"":tempfile, ISNULL(tempfile)?"":"/" ); DEBUG1( "Make_tempfile: tempfile '%s'", buffer ); if( (fd = mkstemp(buffer)) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)"Make_tempfile: mkstemp failed with '%s'", buffer); } DEBUG1( "Make_tempfile: new tempfile '%s', fd %d", buffer, fd ); unlink(buffer); return( fd ); } void Make_stdin_file() { int is_file, fd, in, n, i; struct stat statb; char *s; if( fstat( 0, &statb ) < 0 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO) _("Make_stdin_file: cannot fstat fd 1") ); } is_file = ((statb.st_mode & S_IFMT) == S_IFREG); DEBUG2( "Make_stdin_file: input is_file %d, size %d", is_file, (int)statb.st_size ); if( !is_file ){ fd = Make_tempfile(); in = 1; do{ n = 0; for( i = Outlen, s = Outbuf; i > 0 && (n = write(fd,s,i)) > 0; i -= n, s += n); if( n < 0 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO) _("Make_stdin_file: write to tempfile fd %d failed"), fd ); } Outlen = 0; if( in > 0 ){ n = 0; for( Outlen = 0; Outlen < Outmax && (n = read(0,Outbuf+Outlen,Outmax-Outlen)) > 0; Outlen+=n); if( n < 0 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO) _("Make_stdin_file: read from stdin") ); } else if( n == 0 ){ in = 0; } } } while( Outlen > 0 ); if( dup2(fd,0) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO) _("Make_stdin_file: dup2 failed") ); } if( fd != 0 ) close(fd); fd = -1; } if( lseek(0,0,SEEK_SET) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Make_stdin_file: lseek failed")); } Outlen = 0; } char * Set_mode_lang( char *s ) { if( !ISNULL(s) ){ if(!strcasecmp( s, PS )){ s = PS; } else if(!strcasecmp( s, "ps" )){ s = PS; } else if(!strcasecmp( s, "postscript" )){ s = PS; } else if(!strcasecmp( s, PCL )){ s = PCL; } else if(!strcasecmp( s, HPGL2 )){ s = HPGL2; } else if(!strcasecmp( s, PJL )){ s = PJL; } else if(!strcasecmp( s, TEXT )){ s = TEXT; } else if(!strcasecmp( s, RAW )){ s = RAW; } else if(!strcasecmp( s, FILTER )){ s = FILTER; } } return s; } /* Fd_readable - check to see if you can read status from the file descriptor * use fcntl and stat to make sure that you do not have * a file as the device and that it is open RDWR */ int Fd_readable( int fd, int *poll_for_status ) { int n, readable = 0, err = 0; struct stat statb; char buffer[1]; if( fstat(fd,&statb) == -1 ){ Errorcode = JABORT; FATAL(LOGINFO) _("ifhp: fd is not open"),fd); } if( S_ISREG( statb.st_mode ) ){ readable = 0; return( readable ); } Set_nonblock_io( fd ); errno = 0; n = read( fd, buffer, 1 ); err = errno; Set_block_io( fd ); DEBUG1("Fd_readable: nonblocking read returned %d, errno %d (%s)", n, errno, strerror(errno) ); if( n >= 0 || ( 0 #if defined(EWOULDBLOCK) || err == EWOULDBLOCK #endif #if defined(EAGAIN) || err == EAGAIN #endif ) ){ if( n > 0 ) Peek_char = cval(buffer); readable = 1; if( !isatty( fd ) ){ if( fstat( fd, &statb ) < 0 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO) _("Fd_readable: cannot fstat fd %d"), fd ); } DEBUG2( "Fd_readable: fd %d st_mode 0%o", fd, statb.st_mode & S_IFMT ); if ( S_ISCHR(statb.st_mode ) ){ *poll_for_status = 1; } } } return( readable ); } void Init_job( char *language ) { char buffer[SMALLBUFFER]; OBJ *l = 0; int len, i; char *s; l = NEW_OBJ(l,MEMINFO); DEBUG2("Init_job: language '%s'", language ); if( !safestrcmp(language,TEXT) ) language = PCL; if( Pjl && Pjl_enter && (!safestrcmp(language,PS) || !safestrcmp(language,PCL) || !safestrcmp(language,HPGL2)) ){ SNPRINTF(buffer, sizeof(buffer)) PJL_ENTER_str, language ); Put_pjl( buffer ); memset( buffer, 0, sizeof(buffer) ); /* HPGL2 is subset of PCL, set language back * to PCL now that the PJL language type is set */ if (!safestrcmp(language,HPGL2)) language = PCL; /* * force nulls to be output */ for( i = Null_pad_count; i > 0; i -= len){ len = sizeof(buffer); if( i < len ) len = i; Put_outbuf_len( buffer, len ); } } DEBUG2("Init_job: after PJL ENTER '%s'", Outbuf ); /* now we handle the various initializations */ if( Pcl && !safestrcmp(language,PCL) ){ DEBUG1("Init_job: doing pcl init"); if( Pcl_eoj_at_start ) Put_outbuf_str( PCL_EXIT_str ); if( (s = GET_HASH_STR_OBJ( Model, "pcl_init", MEMINFO)) ){ DEBUG1("Init_job: 'pcl_init'='%s'", s); Clear_OBJ(l); Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); Resolve_list( "pcl_", l, 0, Put_pcl, 0, MAX_DEPTH ); Clear_OBJ(l); } DEBUG1("Init_job: 'pcl' and Topts"); Resolve_user_opts( "pcl_", Pcl_user_opts, Unsorted_Topts, Model, Put_pcl ); DEBUG1("Init_job: 'pcl' and Zopts"); Resolve_user_opts( "pcl_", Pcl_user_opts, Unsorted_Zopts, Zopts, Put_pcl ); } else if( Ps && !safestrcmp(language,PS) ){ DEBUG1("Init_job: doing ps init"); if( !Appsocket && Ps_eoj && Ps_eoj_at_start ) Put_outbuf_str( CTRL_D ); if( Tbcp ){ DEBUG2("Init_job: doing TBCP"); Put_outbuf_str("\001M"); } if( (s = GET_HASH_STR_OBJ(Model, "ps_level_str",MEMINFO)) ){ Put_ps(s); } else { Put_ps("%!"); } if( (s = GET_HASH_STR_OBJ( Model, "ps_init", MEMINFO)) ){ DEBUG1("Init_job: 'ps_init'='%s'", s); Clear_OBJ(l); Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); Resolve_list( "ps_", l, 0, Put_ps, 0, MAX_DEPTH ); Clear_OBJ(l); } DEBUG1("Init_job: 'ps' and Topts"); Resolve_user_opts( "ps_", Ps_user_opts, Unsorted_Topts, Model, Put_ps ); DEBUG1("Init_job: 'ps' and Zopts"); Resolve_user_opts( "ps_", Ps_user_opts, Unsorted_Zopts, Zopts, Put_ps ); } DEBUG2("Init_job: final '%s'", Outbuf ); len = Write_read_timeout( Outlen, Outbuf, Send_job_rw_timeout ); if( len ){ Errorcode = JFAIL; FATAL(LOGINFO) "Init_job: job timed out language selection" ); } Init_outbuf(); FREE_OBJ(l); l = 0; } void Term_job( char *language ) { int len; OBJ *l = 0; char *s; DEBUG2("Term_job: language '%s'", language ); l = NEW_OBJ(l,MEMINFO); /* now we handle the various terminations */ if( Pcl && !safestrcmp(language,PCL) ){ DEBUG1("Term_job: doing pcl term"); if( (s = GET_HASH_STR_OBJ( Model, "pcl_term", MEMINFO)) ){ DEBUG1("Term_job: 'pcl_term'='%s'", s); Clear_OBJ(l); Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); Resolve_list( "pcl_", l, 0, Put_pcl, 0, MAX_DEPTH ); Clear_OBJ(l); } } else if( Ps && !safestrcmp(language,PS) ){ DEBUG1("Term_job: doing ps term"); if( (s = GET_HASH_STR_OBJ( Model, "ps_term", MEMINFO)) ){ DEBUG1("Term_job: 'ps_term'='%s'", s); Clear_OBJ(l); Split_STR_OBJ( /*p*/l, /*nomod*/1, /*str*/s, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/LISTSEP WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); Resolve_list( "ps_", l, 0, Put_ps, 0, MAX_DEPTH ); Clear_OBJ(l); } } if( Pcl && ( !safestrcmp(language,PCL) || !safestrcmp(language,TEXT) ) ){ if( Pcl_eoj_at_end ) Put_outbuf_str( PCL_EXIT_str ); } if( Ps && !safestrcmp(language,PS) ){ if( Ps_eoj && Ps_eoj_at_end ) Put_outbuf_str( CTRL_D ); } len = Write_read_timeout( Outlen, Outbuf, Send_job_rw_timeout ); if( len ){ Errorcode = JFAIL; FATAL(LOGINFO) _("Term_job: job error on cleanup strings") ); } Init_outbuf(); FREE_OBJ(l); l = 0; } /* * filter a file through a program */ int Filter_file( char *pgm, char *title, int fd_stdin, int fd_stdout, char *errbuffer, int len_errbuffer ) { char *s; OBJ *l = 0; int error_fd[2], pid, len, n, c; char buffer[SMALLBUFFER]; plp_status_t status; char *orig_pgm = safestrdup(pgm,MEMINFO); pgm = orig_pgm; l = NEW_OBJ(l,MEMINFO); while( (c = cval(pgm)) == '|' || isspace(c)) ++pgm; if( safestrstr(pgm,"ZOPTS") || safestrstr(pgm,"TOPTS") ){ LOGMSG(LOG_INFO)_("Filter_file: WARNING - 'ZOPTS' and 'TOPS' conversion options replaced by {Z} and {T} - '%s'"), pgm ); } if( (s = safestrstr(pgm,"ARGV")) && s[4] != '}' ){ LOGMSG(LOG_INFO)"Filter_file: WARNING - 'ARGV' conversion option replaced by {ARGV} - '%s'", pgm ); } DEBUG4("Filter_file: pgm '%s', title '%s', stdin %d, stdout %d", pgm, title, fd_stdin, fd_stdout ); if( pgm && (safestrpbrk( pgm, "|><;" ) || (cval(pgm) == '(')) ){ APPEND_LIST_OBJ(l,"/bin/sh", MEMINFO); APPEND_LIST_OBJ(l,"-c", MEMINFO); if( cval(pgm) != '(' ){ s = safestrdup3("( ",pgm," )", MEMINFO ); APPEND_LIST_OBJ(l, s, MEMINFO ); if(s) SAFEFREE(s); s = 0; } else { APPEND_LIST_OBJ(l, pgm, MEMINFO ); } } else { Split_cmd_line_OBJ( l, pgm ); } if(DEBUGL2)SHORT_DUMP_OBJ("Filter_file: process args", l ); if( pipe(error_fd) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Filter_file: pipe failed")); } Set_max_fd(error_fd[0]); Set_max_fd(error_fd[1]); /* fork the process */ if( (pid = fork()) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Filter_file: fork failed")); } else if( pid == 0 ){ if( fd_stdin < 0 && (fd_stdin = open("/dev/null", O_RDWR)) < 0 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Filter_file: open(/dev/null) failed")); } if( fd_stdout < 0 && (fd_stdout = open("/dev/null", O_RDWR)) < 0 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Filter_file: open(/dev/null) failed")); } if( (fd_stdin != 0 && dup2(fd_stdin,0) == -1) || (fd_stdout != 1 && dup2(fd_stdout,1) == -1) || dup2(error_fd[1],2) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Filter_file: dup2 failed")); } close_on_exec(3); /* now we exec the filter process */ { char **argv = GET_LIST_OBJ(l); execve( argv[0], argv, Envp ); /* ooops... error */ SNPRINTF(buffer,sizeof(buffer)) _("execv '%s' failed - %s"), argv[0], Errormsg(errno) ); Write_fd_str(2,buffer); } exit(JABORT); } close(error_fd[1]); SNPRINTF(buffer, sizeof(buffer)) "%s", pgm ); if( (s = safestrpbrk( buffer, WHITESPACE )) ) *s = 0; if( (s = safestrrchr( buffer, '/' )) ){ ++s; } else { s = buffer; } LOGMSG(LOG_INFO)_("Filter_file: started %s- '%s'"), title, s); len = 0; buffer[0] = 0; if( errbuffer ) errbuffer[0] = 0; while( len < (int)sizeof(buffer)-1 && (n = read(error_fd[0],buffer+len,sizeof(buffer)-1-len)) > 0 ){ buffer[n+len] = 0; while( (s = safestrchr(buffer,'\n')) ){ *s++ = 0; LOGMSG(LOG_INFO)_("Filter_file: '%s' msg '%s'"), title, buffer ); memmove(buffer,s,safestrlen(s)+1); } len = safestrlen(buffer); } if( len ){ LOGMSG(LOG_INFO)_("Filter_file: '%s' msg '%s'"), title, buffer ); } close(error_fd[0]); while( (n = waitpid(pid,&status,0)) != pid ){ if( pid == -1 && errno == ECHILD ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO) _("ifhp: waitpid and no child!") ); } DEBUG1("Filter_file: converter pid %d, exit '%s'", pid, Decode_status( &status ) ); } DEBUG1("Filter_file: converter pid %d, exit '%s'", pid, Decode_status( &status ) ); if( WIFEXITED(status) ){ n = WEXITSTATUS(status); if( n > 0 && n < 32 ) n += JFAIL-1; } else if( WIFSIGNALED(status) ){ n = WTERMSIG(status); FATAL(LOGINFO)_("Filter_file: converter process died with signal %d, '%s'"), n, Sigstr(n)); n = JSIGNAL; } if( n && errbuffer && !errbuffer[0] ){ SNPRINTF(errbuffer,len_errbuffer) "Filter_file: converter exited with status '%s'", Decode_status( &status ) ); } if( orig_pgm ) SAFEFREE(orig_pgm); orig_pgm = 0; return( n ); } /* * Write_error_msg( int fd, char *id ) * - we expand and find the values for writing error messages * This error message will actually then be sent to the printer * There are two formats for message: * ps_${id} = ... \%{msg} * pcl_${id} = ... \%{msg} * ${id} = ... \%{msg} * If PostScript available and ps_${id} then we use ps_${id} * else if PCL available and pcl_${id} then we use pcl_${id} * else we use ${id} */ void Write_error_msg( int fd, char *id ) { char *s; char name[SMALLBUFFER]; /* now we find the string to use */ s = 0; if( !s && Ps ){ SNPRINTF(name,sizeof(name)) "ps_%s", id ); s = GET_HASH_STR_OBJ( Model, name, MEMINFO ); } if( !s && Pcl ){ SNPRINTF(name,sizeof(name)) "pcl_%s", id ); s = GET_HASH_STR_OBJ( Model, name, MEMINFO ); } if( !s ){ SNPRINTF(name,sizeof(name)) "%s", id ); s = GET_HASH_STR_OBJ( Model, name, MEMINFO ); } if( s ){ /* now we expand it */ s = Fix_option_str( s, 0, 0, 0 ); DEBUG3("Write_error_msg: '%s'", s ); Write_fd_str( fd , s ); } } /*************************************************************************** * Split_cmd_line_OBJ * if we have xx "yy zz" we split this as * xx * yy zz ***************************************************************************/ OBJ * Split_cmd_line_OBJ( OBJ *l, char *s ) { char *t, *u; int c; DEBUG3("Split_cmd_line_OBJ: line '%s'", s ); while( s && (c = cval(s)) ){ if( isspace(c) ){ ++s; continue; } if( c == '"' || c == '\'' ){ /* we now have hit a string */ ++s; for( (t = safestrchr(s,c)); t && t > s && t[-1] == '\\'; t = safestrchr(t+1,c) ); } else { t = strpbrk(s, WHITESPACE); } if( t ) *t++ = 0; for( u = s; (u = safestrchr(u,'\'')); ){ if( u > s && u[-1] == '\\' ){ memmove(u-1,u,safestrlen(u)+1); } else{ ++u; } } DEBUG5("Split_cmd_line: arg '%s', rest '%s'", s, t ); l = APPEND_LIST_OBJ( l, s, MEMINFO); s = t; } if(DEBUGL3){ SHORT_DUMP_OBJ("Split_cmd_line_OBJ", l ); } return( l ); } /* * we extract the values from the raw list of lines * dkey = dvalue * [xx yy zz] * key = value * ... * [ xx ] * key = value * * Index: 'default' =>"default" * Index: 'xx' =>"xx yy zz,xx" * Index: 'yy' =>"xx yy zz" * Index: 'zz' =>"xx yy zz" * Values: 'default' => dkey = dvalue... * Values: 'xx' => key = value... * Values: 'xx yy zz' => key = value... */ void Make_model_index( OBJ *input, OBJ *index, OBJ *entries ) { /* we start off with the default */ OBJ *current_entry = 0, *items = 0, *strval = 0; char *s, *t, *str; int line, linecount, i, c, tc; items = NEW_OBJ(items,MEMINFO); strval = SET_STR_OBJ(strval,"",MEMINFO); current_entry = Make_new_model_entry( "default", index, entries, items, strval ); SET_STR_OBJ(strval,"",MEMINFO); linecount = LEN_LIST_OBJ(input); for( line = 0; line < linecount; ++line ){ s = GET_ENTRY_LIST_OBJ( input, line ); /* remove trailing blanks */ for( i = safestrlen(s); i > 0; --i ){ if( !isspace( cval(s+i-1) ) ){ s[i] = 0; break; } } /* ignore blank lines */ if( ISNULL(s) ) continue; DEBUGF(DDB3)("Make_model_index: input line [%d] '%s'", line, s ); c = cval(s); str = VAL_STR_OBJ( strval ); if( isspace(c) || c == ']' ){ if( cval(str) ){ APPEND_STR_OBJ(MEMINFO,strval,"\n",s,0); } else { while( (c = cval(s)) && isspace(c) ) ++s; if( c ){ Errorcode = JABORT; FATAL(LOG_INFO) "Make_model_index: missing key name for value '%s'", s ); } } } else { if( cval(str) ){ APPEND_STR_OBJ( MEMINFO, current_entry, str, "\001", 0 ); DEBUGF(DDB3)("Make_model_index: appended value '%s'", VAL_STR_OBJ(current_entry) ); } /* now we check for '[...' header */ if( c == '[' ){ current_entry = Make_new_model_entry( s, index, entries, items, strval ); SET_STR_OBJ(strval,"",MEMINFO); continue; } /* we need to find if we have a tc= */ SET_STR_OBJ(strval,s,MEMINFO); s = VAL_STR_OBJ(strval); if( (t = safestrpbrk(s,VALUESEP)) ){ c = *t; *t = 0; tc = !safestrcmp("tc",s ); *t = c; if( tc ){ t = safestrchr(t,'='); if( !t ){ Errorcode = JABORT; FATAL(LOG_INFO) "Make_model_index: missing tc value '%s'", s ); } if( t[-1] != '+' ){ int len = safestrlen(s); APPEND_STR_OBJ(MEMINFO,strval," ",0); s = VAL_STR_OBJ(strval); s[len] = 0; t = safestrchr(t,'='); memmove(t+1,t,safestrlen(t)+1); t[0] = '+'; } } } } DEBUGF(DDB3)("Make_model_index: line [%d] strval '%s'", line,VAL_STR_OBJ(strval) ); } str = VAL_STR_OBJ(strval); if( cval(str) ){ APPEND_STR_OBJ( MEMINFO, current_entry, str, "\001", 0 ); DEBUGF(DDB2)("Make_model_index: setting '%s'", VAL_STR_OBJ(current_entry) ); } DEBUGFC(DDB1){ SHORT_DUMP_OBJ("Make_model_index: index", index ); SHORT_DUMP_OBJ("Make_model_index: entries", entries ); } FREE_OBJ(items); items = 0; FREE_OBJ(strval); strval = 0; } OBJ *Make_new_model_entry( char *key, OBJ *index, OBJ *entries, OBJ *items, OBJ *strval ) { OBJ *current_entry, *p; char *newkey, *s; int i; DEBUGF(DDB1)("Make_new_model_entry: new key '%s'", key ); Clear_OBJ(items); Split_STR_OBJ( /*p*/items, /*nomod*/1, /*str*/key, /*type*/OBJ_T_LIST, /*linesep*/"[]" WHITESPACE, /*escape*/WHITESPACE, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); DEBUGFC(DDB3){ SHORT_DUMP_OBJ("Make_new_model_entry: items", items); } strval = SET_STR_OBJ(strval,"",MEMINFO); for( i = 0; i < LEN_LIST_OBJ(items); ++i ){ s = GET_ENTRY_LIST_OBJ(items,i); newkey = VAL_STR_OBJ(strval); APPEND_STR_OBJ(MEMINFO,strval,ISNULL(newkey)?"":" ",s,0); } newkey = VAL_STR_OBJ(strval); if( ISNULL(newkey) ){ Errorcode = JABORT; FATAL(LOG_INFO) "Make_new_model_entry: bad key entry '%s'", key ); } DEBUGF(DDB3)("Make_new_model_entry: final key '%s'", newkey ); /* now we add this entry to all of the single key values */ for( i = 0; i < LEN_LIST_OBJ(items); ++i ){ s = GET_ENTRY_LIST_OBJ(items,i); p = GET_HASH_OBJ(index,s); if( !p ){ p = SET_HASH_OBJ(index,s,0,MEMINFO); } APPEND_STR_OBJ(MEMINFO,p,",",newkey,0); DEBUGF(DDB3)("Make_new_model_entry: key list for '%s' = '%s'", s, VAL_STR_OBJ(p) ); } DEBUGF(DDB3)("Make_new_model_entry: getting model for key '%s'", newkey ); if( !(current_entry = GET_HASH_OBJ( entries, newkey )) ){ current_entry = SET_HASH_OBJ( entries, newkey, 0, MEMINFO ); } /* now we add values to the entry */ DEBUGFC(DDB2){ char msg[SMALLBUFFER]; SNPRINTF(msg,sizeof(msg)) "Make_new_model_entry: current values for key '%s'", newkey ); SHORT_DUMP_OBJ(msg, current_entry ); } return( current_entry ); } /* * void Select_model_info( * OBJ *model - this is where you put the output * OBJ *index - the index table for the entries * OBJ *entries - the actual entries themselves * char *id - the id of the thing we are looking up * int level, int maxlevel - recursion control and checking * * Index: 'default' =>"default" * Index: 'xx' =>'xx yy zz,xx' * Index: 'yy' =>'xx yy zz' * Index: 'zz' =>'xx yy zz' * The index has a list of strings which are the entries * into the 'entries' table. * * Entries: 'default' => dkey = dvalue... dkey += value... dkey -= value.. * Entries: 'xx yy zz' => key = value... key += value... key -= value.. * Entries: 'xx' => key = value... */ void Select_model_info( OBJ *model, OBJ *index, OBJ *entries, char *id, int level, int maxlevel ) { char *names; int i, j; OBJ *list = 0, *hash = 0, *tc_list = 0; DEBUGF(DDB1)("Select_model_info: id '%s', depth %d, max %d", id, level, maxlevel ); if( level > maxlevel ){ Errorcode = JABORT; LOGMSG(LOG_INFO)_("Select_model_info: looking for '%s' and recursion too deep at model '%s'"), Model_id, id ); } names = GET_HASH_STR_OBJ(index,id,MEMINFO); DEBUGF(DDB1)("Select_model_info: id '%s', names '%s'", id, names ); if( !names ){ Errorcode = JABORT; FATAL(LOG_INFO)_("Select_model_info: looking for '%s' %s cannot find information for model '%s'"), Model_id, level?"recursive lookup and":"", id ); } list = Split_STR_OBJ( /*p*/list, /*nomod*/1, /*str*/names, /*type*/OBJ_T_LIST, /*linesep*/",", /*escape*/0, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/1, /*value_urlunesc*/0, MEMINFO ); for( i = 0; i < LEN_LIST_OBJ(list); ++i ){ char *tc; char *name = GET_ENTRY_LIST_OBJ(list,i); char *value = GET_HASH_STR_OBJ( entries, name, MEMINFO); DEBUGF(DDB2)("Select_model_info: processing name '%s', value '%s'", name, value ); /* we add the entries to the Model information */ hash = NEW_OBJ(hash,MEMINFO); Split_STR_OBJ( /*p*/hash, /*nomod*/1, /*str*/value, /*type*/OBJ_T_HASH, /*linesep*/"\001", /*escape*/0, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/' ', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); DEBUGFC(DDB2){ SHORT_DUMP_OBJ("Select_model_info: split entry", hash ); } if( (tc = GET_HASH_STR_OBJ(hash,"tc",MEMINFO)) ){ char *s; DEBUGF(DDB2)("Select_model_info: tc entry '%s'", tc ); /* RECURSION!!! - get rid of [ and ] */ s = tc; while( s && (s = safestrpbrk(s,"[]")) ){ *s++ = ' '; } tc_list = NEW_OBJ(tc_list,MEMINFO); tc_list = Split_STR_OBJ( /*p*/tc_list, /*nomod*/1, /*str*/tc, /*type*/OBJ_T_LIST, /*linesep*/LISTSEP WHITESPACE, /*escape*/0, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/',', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); /* OK, we remove the 'tc' information */ SET_HASH_STR_OBJ( model, "tc", 0, MEMINFO ); for( j = 0; j < LEN_LIST_OBJ(tc_list); ++j ){ char *tc_name = GET_ENTRY_LIST_OBJ(tc_list,j); Select_model_info( model, index, entries, tc_name, level+1, maxlevel ); } SET_HASH_STR_OBJ( hash, "tc", 0, MEMINFO ); } /* now we add the information in this entry */ Split_STR_OBJ( /*p*/model, /*nomod*/1, /*str*/value, /*type*/OBJ_T_HASH, /*linesep*/"\001", /*escape*/0, /*comment*/ 0, /*trim*/1, /*keysep*/"=",/*do_append*/' ', /*lc*/1, /*flagvalues*/ 1, /*value_urlunesc*/0, MEMINFO ); SET_HASH_STR_OBJ( model, "tc", 0, MEMINFO ); } DEBUGFC(DDB1){ char msg[SMALLBUFFER]; SNPRINTF(msg,sizeof(msg)) "Select_model_info: for '%s'", id ); SHORT_DUMP_OBJ(msg, model ); } if( hash ) FREE_OBJ( hash ); hash = 0; } /* * Get_prog_status - * run a program and update the devstatus object * with values returned * if exit is 0, set sync = 1, waitend = 1 */ int Get_prog_status( OBJ *devstatus, char *pgm, int timeout ) { OBJ *l = 0; int error_fd[2], pid, len, n, c; char buffer[SMALLBUFFER]; plp_status_t status; char *s; l = NEW_OBJ(l,MEMINFO); pgm = safestrdup(pgm,MEMINFO); while( (c = cval(pgm)) == '|' || isspace(c)) ++pgm; DEBUG4("Get_prog_status: pgm '%s'", pgm ); if( pgm && (safestrpbrk( pgm, "|><;" ) || (cval(pgm) == '(')) ){ APPEND_LIST_OBJ(l,"/bin/sh", MEMINFO); APPEND_LIST_OBJ(l,"-c", MEMINFO); if( cval(pgm) != '(' ){ char *s = safestrdup3("( ",pgm," )", MEMINFO ); APPEND_LIST_OBJ(l, s, MEMINFO ); if(s) SAFEFREE(s); s = 0; } else { APPEND_LIST_OBJ(l, pgm, MEMINFO ); } } else { Split_cmd_line_OBJ( l, pgm ); } if(DEBUGL2)SHORT_DUMP_OBJ("Get_prog_status: process args", l ); if( pipe(error_fd) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Get_prog_status: pipe failed")); } Set_max_fd(error_fd[0]); Set_max_fd(error_fd[1]); /* fork the process */ if( (pid = fork()) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Get_prog_status: fork failed")); } else if( pid == 0 ){ if( dup2(1,0) == -1 || dup2(error_fd[1],1) == -1 || dup2(error_fd[1],2) == -1 ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO)_("Get_prog_status: dup2 failed")); } close_on_exec(3); /* now we exec the filter process */ { char **argv = GET_LIST_OBJ(l); execve( argv[0], argv, Envp ); /* ooops... error */ SNPRINTF(buffer,sizeof(buffer)) _("execv '%s' failed - %s"), argv[0], Errormsg(errno) ); Write_fd_str(2,buffer); } exit(JABORT); } close(error_fd[1]); SNPRINTF(buffer, sizeof(buffer)) "%s", pgm ); if( (s = safestrpbrk( buffer, WHITESPACE )) ) *s = 0; if( (s = safestrrchr( buffer, '/' )) ){ ++s; } else { s = buffer; } LOGMSG(LOG_INFO)_("Get_prog_status: started '%s'"), s); len = 0; buffer[0] = 0; while( len < (int)sizeof(buffer)-1 && (n = read(error_fd[0],buffer,sizeof(buffer)-1)) > 0 ){ buffer[n] = 0; Put_inbuf_len( buffer, n ); Get_inbuf_str(); } close(error_fd[0]); while( (n = waitpid(pid,&status,0)) != pid ){ if( pid == -1 && errno == ECHILD ){ Errorcode = JABORT; LOGERR_DIE(LOGINFO) _("Get_prog_status: waitpid and no child!") ); } DEBUG1("Get_prog_status: converter pid %d, exit '%s'", pid, Decode_status( &status ) ); } DEBUG1("Get_prog_status: converter pid %d, exit '%s'", pid, Decode_status( &status ) ); n = 0; if( WIFEXITED(status) ){ n = WEXITSTATUS(status); if( n ){ if( n > 0 && n < 32 ) n += JFAIL-1; Errorcode = n; if( n != JFAIL ) Errorcode = JABORT; FATAL(LOGINFO)_("Get_prog_status: status process exited with %d, '%s'"), n, Decode_status(&status)); } if( !GET_HASH_IVAL_OBJ( devstatus,"sync") ){ SET_HASH_IVAL_OBJ( devstatus,"sync",1,MEMINFO); } if( !GET_HASH_IVAL_OBJ( devstatus,"waitend") ){ SET_HASH_IVAL_OBJ( devstatus,"waitend",1,MEMINFO); } } else if( WIFSIGNALED(status) ){ n = WTERMSIG(status); Errorcode = JABORT; FATAL(LOGINFO)_("Get_prog_status: converter process died with signal %d, '%s'"), n, Sigstr(n)); } DEBUG1("Get_prog_status: freeing pgm"); if( pgm ) SAFEFREE(pgm); pgm = 0; DEBUG1("Get_prog_status: done freeing pgm"); return( n ); } ifhp-3.5.20/src/safestrutil.h0100644000175100017510000000327610130541267016276 0ustar papowellpapowell/*************************************************************************** * LPRng - An Extended Print Spooler System * * Copyright 1988-2001, Patrick Powell, San Diego, CA * papowell@lprng.com * See LICENSE for conditions of use. * $Id: safestrutil.h,v 1.1 2002/01/30 14:34:20 papowell Exp papowell $ ***************************************************************************/ #ifndef _SAFESTRUTIL_H_ #define _SAFESTRUTIL_H_ 1 #define safestrncat( s1, s2 ) mystrncat(s1,s2,sizeof(s1)) #define safestrncpy( s1, s2 ) mystrncpy(s1,s2,sizeof(s1)) #ifndef ISNULL #define ISNULL(X) ((X)==0||(*X)==0) #endif #ifndef cval #define cval(x) (int)(*(unsigned const char *)(x)) #endif /* PROTOTYPES */ int safestrlen( const char *s1 ); int safestrcasecmp (const char *s1, const char *s2); int safestrncasecmp (const char *s1, const char *s2, int len ); int safestrcmp( const char *s1, const char *s2 ); int safestrncmp( const char *s1, const char *s2, int len ); char *safestrchr( const char *s1, int c ); char *safestrrchr( const char *s1, int c ); char *safestrpbrk( const char *s1, const char *s2 ); char *safestrstr( const char *s1, const char *s2 ); void lowercase( char *s ); void uppercase( char *s ); char *trunc_str( char *s); int Lastchar( char *s ); const char *Is_clean_name( const char *s ); void Clean_name( char *s ); int Is_meta( int c, const char * safe_chars ); const char *Find_meta( const char *s, const char *safe_chars ); void Clean_meta( char *t, const char *safe_chars ); char *Make_pathname( const char *dir, const char *filename, MEMPASS ); int safeunlink( const char *s ); char *mystrncat( char *s1, const char *s2, int len ); char *mystrncpy( char *s1, const char *s2, int len ); #endif ifhp-3.5.20/src/lpbanner_fnt.c0100644000175100017510000003604710130541266016375 0ustar papowellpapowell/*************************************************************************** * LPRng - An Extended Print Spooler System * * Copyright 1988-1997, Patrick Powell, San Diego, CA * papowell@astart.com * See LICENSE for conditions of use. * *************************************************************************** * MODULE: lpbanner_font.c * PURPOSE: big character font **************************************************************************/ /*************************************************************************** Commentary Patrick Powell Wed Jun 7 19:42:01 PDT 1995 The font information is provided as entries in a data structure. The struct font{} entry specifies the character heights and widths, as well as the number of lines needed to display the characters. The struct glyph{} array is the set of glyphs for each character. { X__11___, X__11___, X__11___, X__11___, X__11___, X_______, X_______, X__11___, cX_11___}, / * ! * / ^ lower left corner, i.e. - on baseline - x = 0, y = 8 { X_______, X_______, X_______, X_111_1_, X1___11_, X1____1_, X1____1_, X1___11_, cX111_1_, X_____1_, X1____1_, X_1111__}, / * g * / ^ lower left corner, i.e. - on baseline - x = 0, y = 8 ***************************************************************************/ static char *const _id = "lpbanner_fnt.c,v 3.2 1997/09/18 19:45:43 papowell Exp"; #include "lpbanner.h" #define X_______ 0 #define X______1 01 #define X_____1_ 02 #define X____1__ 04 #define X____11_ 06 #define X___1___ 010 #define X___1__1 011 #define X___1_1_ 012 #define X___11__ 014 #define X__1____ 020 #define X__1__1_ 022 #define X__1_1__ 024 #define X__11___ 030 #define X__111__ 034 #define X__111_1 035 #define X__1111_ 036 #define X__11111 037 #define X_1_____ 040 #define X_1____1 041 #define X_1___1_ 042 #define X_1__1__ 044 #define X_1_1___ 050 #define X_1_1__1 051 #define X_1_1_1_ 052 #define X_11____ 060 #define X_11_11_ 066 #define X_111___ 070 #define X_111__1 071 #define X_111_1_ 072 #define X_1111__ 074 #define X_1111_1 075 #define X_11111_ 076 #define X_111111 077 #define X1______ 0100 #define X1_____1 0101 #define X1____1_ 0102 #define X1____11 0103 #define X1___1__ 0104 #define X1___1_1 0105 #define X1___11_ 0106 #define X1__1___ 0110 #define X1__1__1 0111 #define X1__11_1 0115 #define X1__1111 0117 #define X1_1____ 0120 #define X1_1___1 0121 #define X1_1_1_1 0125 #define X1_1_11_ 0126 #define X1_111__ 0134 #define X1_1111_ 0136 #define X11____1 0141 #define X11___1_ 0142 #define X11___11 0143 #define X11_1___ 0150 #define X11_1__1 0151 #define X111_11_ 0166 #define X1111___ 0170 #define X11111__ 0174 #define X111111_ 0176 #define X1111111 0177 struct glyph g9x8[] = { { ' ', 0, 8, { X_______, X_______, X_______, X_______, X_______, X_______, X_______, X_______, X_______}}, /* */ { '!', 0, 8, { X__11___, X__11___, X__11___, X__11___, X__11___, X_______, X_______, X__11___, X__11___}}, /* ! */ { '"', 0, 8, { X_1__1__, X_1__1__, X_______, X_______, X_______, X_______, X_______, X_______, X_______}}, /* " */ { '#', 0, 8, { X_______, X__1_1__, X__1_1__, X1111111, X__1_1__, X1111111, X__1_1__, X__1_1__, X_______}}, /* # */ { '$', 0, 8, { X___1___, X_11111_, X1__1__1, X1__1___, X_11111_, X___1__1, X1__1__1, X_11111_, X___1___}}, /* $ */ { '%', 0, 8, { X_1_____, X1_1___1, X_1___1_, X____1__, X___1___, X__1____, X_1___1_, X1___1_1, X_____1_}}, /* % */ { '&', 0, 8, { X_11____, X1__1___, X1___1__, X_1_1___, X__1____, X_1_1__1, X1___11_, X1___11_, X_111__1}}, /* & */ { '\'', 0, 8, { X___11__, X___11__, X___1___, X__1____, X_______, X_______, X_______, X_______, X_______}}, /* ' */ { '(', 0, 8, { X____1__, X___1___, X__1____, X__1____, X__1____, X__1____, X__1____, X___1___, X____1__}}, /* ( */ { ')', 0, 8, { X__1____, X___1___, X____1__, X____1__, X____1__, X____1__, X____1__, X___1___, X__1____}}, /* ) */ { '*', 0, 8, { X_______, X___1___, X1__1__1, X_1_1_1_, X__111__, X_1_1_1_, X1__1__1, X___1___, X_______}}, /* * */ { '+', 0, 8, { X_______, X___1___, X___1___, X___1___, X1111111, X___1___, X___1___, X___1___, X_______}}, /* + */ { ',', 0, 8, { X_______, X_______, X_______, X_______, X_______, X_______, X_______, X__11___, X__11___, X__1____, X_1_____, X_______}}, /* , */ { '-', 0, 8, { X_______, X_______, X_______, X_______, X1111111, X_______, X_______, X_______, X_______}}, /* - */ { '.', 0, 8, { X_______, X_______, X_______, X_______, X_______, X_______, X_______, X__11___, X__11___}}, /* . */ { '/', 0, 8, { X_______, X______1, X_____1_, X____1__, X___1___, X__1____, X_1_____, X1______, X_______}}, /* / */ { '0', 0, 8, { X_11111_, X1_____1, X1____11, X1___1_1, X1__1__1, X1_1___1, X11____1, X1_____1, X_11111_}}, /* 0 */ { '1', 0, 8, { X___1___, X__11___, X_1_1___, X___1___, X___1___, X___1___, X___1___, X___1___, X_11111_}}, /* 1 */ { '2', 0, 8, { X_11111_, X1_____1, X______1, X_____1_, X__111__, X_1_____, X1______, X1______, X1111111}}, /* 2 */ { '3', 0, 8, { X_11111_, X1_____1, X______1, X______1, X__1111_, X______1, X______1, X1_____1, X_11111_}}, /* 3 */ { '4', 0, 8, { X_____1_, X____11_, X___1_1_, X__1__1_, X_1___1_, X1____1_, X1111111, X_____1_, X_____1_}}, /* 4 */ { '5', 0, 8, { X1111111, X1______, X1______, X11111__, X_____1_, X______1, X______1, X1____1_, X_1111__}}, /* 5 */ { '6', 0, 8, { X__1111_, X_1_____, X1______, X1______, X1_1111_, X11____1, X1_____1, X1_____1, X_11111_}}, /* 6 */ { '7', 0, 8, { X1111111, X1_____1, X_____1_, X____1__, X___1___, X__1____, X__1____, X__1____, X__1____}}, /* 7 */ { '8', 0, 8, { X_11111_, X1_____1, X1_____1, X1_____1, X_11111_, X1_____1, X1_____1, X1_____1, X_11111_}}, /* 8 */ { '9', 0, 8, { X_11111_, X1_____1, X1_____1, X1_____1, X_111111, X______1, X______1, X1_____1, X_1111__}}, /* 9 */ { ':', 0, 8, { X_______, X_______, X_______, X__11___, X__11___, X_______, X_______, X__11___, X__11___}}, /* : */ { ';', 0, 8, { X_______, X_______, X_______, X__11___, X__11___, X_______, X_______, X__11___, X__11___, X__1____, X_1_____}}, /* ; */ { '<', 0, 8, { X____1__, X___1___, X__1____, X_1_____, X1______, X_1_____, X__1____, X___1___, X____1__}}, /* < */ { '=', 0, 8, { X_______, X_______, X_______, X1111111, X_______, X1111111, X_______, X_______, X_______}}, /* = */ { '>', 0, 8, { X__1____, X___1___, X____1__, X_____1_, X______1, X_____1_, X____1__, X___1___, X__1____}}, /* > */ { '?', 0, 8, { X__1111_, X_1____1, X_1____1, X______1, X____11_, X___1___, X___1___, X_______, X___1___}}, /* ? */ { '@', 0, 8, { X__1111_, X_1____1, X1__11_1, X1_1_1_1, X1_1_1_1, X1_1111_, X1______, X_1____1, X__1111_}}, /* @ */ { 'A', 0, 8, { X__111__, X_1___1_, X1_____1, X1_____1, X1111111, X1_____1, X1_____1, X1_____1, X1_____1}}, /* A */ { 'B', 0, 8, { X111111_, X_1____1, X_1____1, X_1____1, X_11111_, X_1____1, X_1____1, X_1____1, X111111_}}, /* B */ { 'C', 0, 8, { X__1111_, X_1____1, X1______, X1______, X1______, X1______, X1______, X_1____1, X__1111_}}, /* C */ { 'D', 0, 8, { X11111__, X_1___1_, X_1____1, X_1____1, X_1____1, X_1____1, X_1____1, X_1___1_, X11111__}}, /* D */ { 'E', 0, 8, { X1111111, X1______, X1______, X1______, X111111_, X1______, X1______, X1______, X1111111}}, /* E */ { 'F', 0, 8, { X1111111, X1______, X1______, X1______, X111111_, X1______, X1______, X1______, X1______}}, /* F */ { 'G', 0, 8, { X__1111_, X_1____1, X1______, X1______, X1______, X1__1111, X1_____1, X_1____1, X__1111_}}, /* G */ { 'H', 0, 8, { X1_____1, X1_____1, X1_____1, X1_____1, X1111111, X1_____1, X1_____1, X1_____1, X1_____1}}, /* H */ { 'I', 0, 8, { X_11111_, X___1___, X___1___, X___1___, X___1___, X___1___, X___1___, X___1___, X_11111_}}, /* I */ { 'J', 0, 8, { X__11111, X____1__, X____1__, X____1__, X____1__, X____1__, X____1__, X1___1__, X_111___}}, /* J */ { 'K', 0, 8, { X1_____1, X1____1_, X1___1__, X1__1___, X1_1____, X11_1___, X1___1__, X1____1_, X1_____1}}, /* K */ { 'L', 0, 8, { X1______, X1______, X1______, X1______, X1______, X1______, X1______, X1______, X1111111}}, /* L */ { 'M', 0, 8, { X1_____1, X11___11, X1_1_1_1, X1__1__1, X1_____1, X1_____1, X1_____1, X1_____1, X1_____1}}, /* M */ { 'N', 0, 8, { X1_____1, X11____1, X1_1___1, X1__1__1, X1___1_1, X1____11, X1_____1, X1_____1, X1_____1}}, /* N */ { 'O', 0, 8, { X__111__, X_1___1_, X1_____1, X1_____1, X1_____1, X1_____1, X1_____1, X_1___1_, X__111__}}, /* O */ { 'P', 0, 8, { X111111_, X1_____1, X1_____1, X1_____1, X111111_, X1______, X1______, X1______, X1______}}, /* P */ { 'Q', 0, 8, { X__111__, X_1___1_, X1_____1, X1_____1, X1_____1, X1__1__1, X1___1_1, X_1___1_, X__111_1}}, /* Q */ { 'R', 0, 8, { X111111_, X1_____1, X1_____1, X1_____1, X111111_, X1__1___, X1___1__, X1____1_, X1_____1}}, /* R */ { 'S', 0, 8, { X_11111_, X1_____1, X1______, X1______, X_11111_, X______1, X______1, X1_____1, X_11111_}}, /* S */ { 'T', 0, 8, { X1111111, X___1___, X___1___, X___1___, X___1___, X___1___, X___1___, X___1___, X___1___}}, /* T */ { 'U', 0, 8, { X1_____1, X1_____1, X1_____1, X1_____1, X1_____1, X1_____1, X1_____1, X1_____1, X_11111_}}, /* U */ { 'V', 0, 8, { X1_____1, X1_____1, X1_____1, X_1___1_, X_1___1_, X__1_1__, X__1_1__, X___1___, X___1___}}, /* V */ { 'W', 0, 8, { X1_____1, X1_____1, X1_____1, X1_____1, X1__1__1, X1__1__1, X1_1_1_1, X11___11, X1_____1}}, /* W */ { 'X', 0, 8, { X1_____1, X1_____1, X_1___1_, X__1_1__, X___1___, X__1_1__, X_1___1_, X1_____1, X1_____1}}, /* X */ { 'Y', 0, 8, { X1_____1, X1_____1, X_1___1_, X__1_1__, X___1___, X___1___, X___1___, X___1___, X___1___}}, /* Y */ { 'Z', 0, 8, { X1111111, X______1, X_____1_, X____1__, X___1___, X__1____, X_1_____, X1______, X1111111}}, /* Z */ { '[', 0, 8, { X_1111__, X_1_____, X_1_____, X_1_____, X_1_____, X_1_____, X_1_____, X_1_____, X_1111__}}, /* [ */ { '\\', 0, 8, { X_______, X1______, X_1_____, X__1____, X___1___, X____1__, X_____1_, X______1, X_______}}, /* \ */ { ']', 0, 8, { X__1111_, X_____1_, X_____1_, X_____1_, X_____1_, X_____1_, X_____1_, X_____1_, X__1111_}}, /* ] */ { '^', 0, 8, { X___1___, X__1_1__, X_1___1_, X1_____1, X_______, X_______, X_______, X_______, X_______}}, /* ^ */ { '_', 0, 8, { X_______, X_______, X_______, X_______, X_______, X_______, X_______, X_______, X_______, X1111111, X_______}}, /* _ */ { '`', 0, 8, { X__11___, X__11___, X___1___, X____1__, X_______, X_______, X_______, X_______, X_______}}, /* ` */ { 'a', 0, 8, { X_______, X_______, X_______, X_1111__, X_____1_, X_11111_, X1_____1, X1____11, X_1111_1}}, /* a */ { 'b', 0, 8, { X1______, X1______, X1______, X1_111__, X11___1_, X1_____1, X1_____1, X11___1_, X1_111__}}, /* b */ { 'c', 0, 8, { X_______, X_______, X_______, X_1111__, X1____1_, X1______, X1______, X1____1_, X_1111__}}, /* c */ { 'd', 0, 8, { X_____1_, X_____1_, X_____1_, X_111_1_, X1___11_, X1____1_, X1____1_, X1___11_, X_111_1_}}, /* d */ { 'e', 0, 8, { X_______, X_______, X_______, X_1111__, X1____1_, X111111_, X1______, X1____1_, X_1111__}}, /* e */ { 'f', 0, 8, { X___11__, X__1__1_, X__1____, X__1____, X11111__, X__1____, X__1____, X__1____, X__1____}}, /* f */ { 'g', 0, 8, { X_______, X_______, X_______, X_111_1_, X1___11_, X1____1_, X1____1_, X1___11_, X_111_1_, X_____1_, X1____1_, X_1111__}}, /* g */ { 'h', 0, 8, { X1______, X1______, X1______, X1_111__, X11___1_, X1____1_, X1____1_, X1____1_, X1____1_}}, /* h */ { 'i', 0, 8, { X_______, X___1___, X_______, X__11___, X___1___, X___1___, X___1___, X___1___, X__111__}}, /* i */ { 'j', 0, 8, { X_______, X_______, X_______, X____11_, X_____1_, X_____1_, X_____1_, X_____1_, X_____1_, X_____1_, X_1___1_, X__111__}}, /* j */ { 'k', 0, 8, { X1______, X1______, X1______, X1___1__, X1__1___, X1_1____, X11_1___, X1___1__, X1____1_}}, /* k */ { 'l', 0, 8, { X__11___, X___1___, X___1___, X___1___, X___1___, X___1___, X___1___, X___1___, X__111__}}, /* l */ { 'm', 0, 8, { X_______, X_______, X_______, X1_1_11_, X11_1__1, X1__1__1, X1__1__1, X1__1__1, X1__1__1}}, /* m */ { 'n', 0, 8, { X_______, X_______, X_______, X1_111__, X11___1_, X1____1_, X1____1_, X1____1_, X1____1_}}, /* n */ { 'o', 0, 8, { X_______, X_______, X_______, X_1111__, X1____1_, X1____1_, X1____1_, X1____1_, X_1111__}}, /* o */ { 'p', 0, 8, { X_______, X_______, X_______, X1_111__, X11___1_, X1____1_, X1____1_, X11___1_, X1_111__, X1______, X1______, X1______}}, /* p */ { 'q', 0, 8, { X_______, X_______, X_______, X_111_1_, X1___11_, X1____1_, X1____1_, X1___11_, X_111_1_, X_____1_, X_____1_, X_____1_}}, /* q */ { 'r', 0, 8, { X_______, X_______, X_______, X1_111__, X11___1_, X1______, X1______, X1______, X1______}}, /* r */ { 's', 0, 8, { X_______, X_______, X_______, X_1111__, X1____1_, X_11____, X___11__, X1____1_, X_1111__}}, /* s */ { 't', 0, 8, { X_______, X__1____, X__1____, X11111__, X__1____, X__1____, X__1____, X__1__1_, X___11__}}, /* t */ { 'u', 0, 8, { X_______, X_______, X_______, X1____1_, X1____1_, X1____1_, X1____1_, X1___11_, X_111_1_}}, /* u */ { 'v', 0, 8, { X_______, X_______, X_______, X1_____1, X1_____1, X1_____1, X_1___1_, X__1_1__, X___1___}}, /* v */ { 'w', 0, 8, { X_______, X_______, X_______, X1_____1, X1__1__1, X1__1__1, X1__1__1, X1__1__1, X_11_11_}}, /* w */ { 'x', 0, 8, { X_______, X_______, X_______, X1____1_, X_1__1__, X__11___, X__11___, X_1__1__, X1____1_}}, /* x */ { 'y', 0, 8, { X_______, X_______, X_______, X1____1_, X1____1_, X1____1_, X1____1_, X1___11_, X_111_1_, X_____1_, X1____1_, X_1111__}}, /* y */ { 'z', 0, 8, { X_______, X_______, X_______, X111111_, X____1__, X___1___, X__1____, X_1_____, X111111_}}, /* z */ { '}', 0, 8, { X___11__, X__1____, X__1____, X__1____, X_1_____, X__1____, X__1____, X__1____, X___11__}}, /* } */ { '|', 0, 8, { X___1___, X___1___, X___1___, X___1___, X___1___, X___1___, X___1___, X___1___, X___1___}}, /* | */ { '}', 0, 8, { X__11___, X____1__, X____1__, X____1__, X_____1_, X____1__, X____1__, X____1__, X__11___}}, /* } */ { '~', 0, 8, { X_11____, X1__1__1, X____11_, X_______, X_______, X_______, X_______, X_______, X_______}}, /* ~ */ { 'X', 0, 8, { X_1__1__, X1__1__1, X__1__1_, X_1__1__, X1__1__1, X__1__1_, X_1__1__, X1__1__1, X__1__1_}} /* rub-out */ }; /* 9 by 8 font: 12 rows high, 8 cols wide, 9 lines above baseline */ struct font Font9x8 = { 12, 8, 9, g9x8 }; ifhp-3.5.20/src/open_device.c0100644000175100017510000001314410130541266016176 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER *****/ static char *const _id = "$Id: open_device.c,v 1.23 2004/02/25 15:56:25 papowell Exp papowell $"; #include "ifhp.h" void Open_device( char *device ) { int fd = -1; struct stat statb; int attempt = 0; DEBUG1("Open_device: device '%s'", device); if( fstat(1,&statb) == 0 && S_ISSOCK(statb.st_mode) ){ char msg[32]; DEBUG1("Open_device: closing socket"); shutdown(1,1); while( read(1,msg,sizeof(msg)) > 0 ); } close(1); DEBUG1("Open_device: closed fd 1"); Errorcode = 0; if( (device[0] == '/') ){ for( ; fd < 0; ++attempt, plp_usleep(Dev_sleep * 1000) ){ DEBUG1("Open_device: device '%s', attempt %d", device, attempt); fd = open( device, (Status?O_RDWR:O_WRONLY)|O_APPEND|O_CREAT|O_NONBLOCK, 0600 ); /*Set_max_fd(fd);*/ if( fd < 0 ){ if( Dev_retries < 0 || (Dev_retries >0 && attempt >= Dev_retries) ){ Errorcode = JABORT; LOGERR_DIE(LOG_INFO)"Open_device: open '%s' failed", device); } } else { break; } } if( isatty( fd ) && Stty_args){ Do_stty( fd, Stty_args ); } /* can we get status */ } else { fd = Link_open( device ); } if( fd != 1 ){ Errorcode = JABORT; LOGERR_DIE(LOG_INFO)"Open_device: did not open on fd 1"); } if( Status ){ Status = Fd_readable(1, &Poll_for_status); } Set_block_io(1); Set_keepalive(1); DEBUG1("Open_device: success"); } void Set_keepalive( int sock ) { #ifdef SO_KEEPALIVE int option = 0; int len; len = sizeof( option ); setsockopt( sock, SOL_SOCKET, SO_KEEPALIVE, (char *)&option, sizeof(option) ); #endif } int Link_open( char * device ) { char *s, *end; int fd = -1, port, option, attempt = 1; struct hostent *hostent; struct sockaddr_in sin; int src_port = 0; char *dcopy = 0; dcopy = safestrdup( device,__FILE__,__LINE__ ); if( (end = strchr( dcopy, '%' )) == 0 ){ Errorcode = JABORT; FATAL(LOG_INFO)"Link_open: missing port number '%s'",device ); } *end++ = 0; s = end; port = strtol( end, &s, 0 ); if( port <= 0 ){ Errorcode = JABORT; FATAL(LOG_INFO)"Link_open: bad port number '%s'",end ); } end = s; if( end && *end ){ *end++ = 0; src_port = strtol( end, 0, 0 ); } hostent = gethostbyname(dcopy); if( hostent && hostent->h_addrtype != AF_INET ){ Errorcode = JABORT; FATAL(LOG_INFO)"Link_open: bad address type for host '%s'", device); cleanup(0); } for( ; fd < 0; ++attempt, plp_usleep(Dev_sleep * 1000) ){ memset( &sin, 0, sizeof(sin) ); sin.sin_family = AF_INET; /* * set up the address information */ if( hostent ){ memmove( &sin.sin_addr, hostent->h_addr, hostent->h_length ); } else { sin.sin_addr.s_addr = inet_addr(dcopy); if( (int)sin.sin_addr.s_addr == -1){ Errorcode = JABORT; FATAL(LOG_INFO)"Link_open: getconnection: unknown host '%s'", device); cleanup(0); } } sin.sin_port = htons( port ); DEBUG1("Link_open: destination '%s' port %d, attempt %d", inet_ntoa( sin.sin_addr ), ntohs( sin.sin_port ), attempt ); fd = socket (AF_INET, SOCK_STREAM, 0); if( fd < 0 ){ Errorcode = JABORT; LOGERR_DIE(LOG_INFO) "Link_open: socket() failed" ); if( Dev_retries <= 0 || (Dev_retries > 0 && attempt >= Dev_retries) ){ Errorcode = JABORT; LOGERR_DIE(LOG_INFO)"Link_open: open '%s' failed", device); } continue; } option = 1; if( setsockopt( fd, SOL_SOCKET, SO_REUSEADDR, (char *)&option, sizeof(option) ) ){ Errorcode = JABORT; LOGERR_DIE(LOG_INFO) "Link_open: setsockopt failed" ); } if( src_port ){ struct sockaddr_in src_sin; memset( &src_sin, 0, sizeof(src_sin) ); src_sin.sin_family = AF_INET; src_sin.sin_port = htons( src_port ); if( bind( fd, (struct sockaddr *)&src_sin, sizeof( src_sin )) < 0 ){ LOGERR(LOG_INFO)"Link_open: bind failed"); close(fd); fd = -1; ++src_port; continue; } } if( connect(fd, (struct sockaddr *) & sin, sizeof (sin)) < 0 ){ Errorcode = JFAIL; LOGERR(LOG_INFO)"Link_open: connect to '%s port %d' failed", inet_ntoa( sin.sin_addr ), ntohs( sin.sin_port ) ); close(fd); fd = -1; continue; } if( fd >= 0 ) break; } if( dcopy ) free(dcopy); dcopy = 0; return(fd); } #if !defined(HAVE_INET_NTOP) /*************************************************************************** * inet_ntop( int family, const void *addr, * const char *strptr, int len ) * p means presentation, i.e. - ASCII C string * n means numeric, i.e. - network byte ordered address * family = AF_Protocol or AF_Protocol6 * addr = binary to convert * strptr = string where to place * len = length ***************************************************************************/ const char *inet_ntop( int family, const void *addr, char *str, size_t len ) { char *s; if( family != AF_INET ){ FATAL(LOG_INFO) "inet_ntop: bad family '%d'", family ); } s = inet_ntoa(((struct in_addr *)addr)[0]); strncpy( str, s, len ); return(str); } #endif const char *inet_ntop_sockaddr( struct sockaddr *addr, char *str, int len ) { void *a = 0; /* we get the printable from the socket address */ if( addr->sa_family == AF_INET ){ a = &((struct sockaddr_in *)addr)->sin_addr; #if defined(IN6_ADDR) } else if( addr->sa_family == AF_INET6 ){ a = &((struct sockaddr_in6 *)addr)->sin6_addr; #endif } else { FATAL(LOG_INFO)"inet_ntop_sockaddr: bad family '%d'", addr->sa_family ); } return( inet_ntop( addr->sa_family, a, str, len ) ); } ifhp-3.5.20/src/globmatch.h0100644000175100017510000000073410130541266015664 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER ***** $Id: globmatch.h,v 1.1 1999/12/17 02:04:57 papowell Exp papowell $ **** HEADER *****/ #if !defined(_GLOBMATCH_H_) #define _GLOBMATCH_H_ 1 /* PROTOTYPES */ int Globmatch( char *pattern, char *str ); #endif ifhp-3.5.20/src/globmatch.c0100644000175100017510000000543010130541266015655 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER *****/ static char *const _id = "$Id: globmatch.c,v 1.2 1999/12/17 02:04:57 papowell Exp papowell $"; #include "ifhp.h" /**** ENDINCLUDE ****/ static int glob_pattern( char *pattern, char *str ) { int result = 1; int len, c; char *glob; /* DEBUG4("glob_pattern: pattern '%s' to '%s'", pattern, str ); */ if( (glob = strpbrk( pattern, "*?[" )) ){ /* check the characters up to the glob length for a match */ len = glob - pattern; c = *glob; /* DEBUG4("glob_pattern: meta '%c', len %d", c, len ); */ if( (len == 0 || !strncasecmp( pattern, str, len )) ){ /* matched: pattern xxxx* to xxxx * now we have to do the remainder. We simply check for rest */ pattern += len+1; str += len; /* DEBUG4("glob_pattern: rest of pattern '%s', str '%s'", pattern, str ); */ /* check for trailing glob */ if( c == '?' ){ if( *str ){ result = glob_pattern( pattern, str+1 ); } else { result = 1; } } else if( c == '[' ){ /* now we check for the characters in the pattern * this can have the format N or N-M */ glob = strchr( pattern, ']' ); if( glob == 0 ){ return( 1 ); } len = glob - pattern; c = 0; /* DEBUG4("globmatch: now case '%s', len %d", pattern, len ); */ while( result && len > 0 ){ /* DEBUG4("globmatch: c '0x%x', pat '%c', str '%c'", c, *pattern, *str ); */ if( c && *pattern == '-' && len > 1 ){ /* we have preceeding, get end */ pattern++; --len; while( result && c <= *pattern ){ /* DEBUG4("globmatch: range c '%c', pat '%c', str '%c'", c, *pattern, *str ); */ result = (*str != c++); } pattern++; --len; c = 0; } else { c = *pattern++; --len; result = (*str != c); } } /* DEBUG4("globmatch: after pattern result %d", result); */ if( result == 0 ){ pattern += len+1; ++str; /* at this point pattern is past */ result = glob_pattern( pattern, str ); } } else if( pattern[0] ){ while( *str && (result = glob_pattern( pattern, str )) ){ ++str; } } else { result = 0; } } } else { result = strcasecmp( pattern, str ); } return( result ); } int Globmatch( char *pattern, char *str ) { int result; /* try simple test first: string compare */ /* DEBUG4("Globmatch: pattern '%s' to '%s'", pattern, str ); */ if( pattern == 0 ) pattern = ""; if( str == 0 ) str = ""; result = glob_pattern( pattern, str ); DEBUG4("Globmatch: '%s' to '%s' result %d", pattern, str, result ); return( result ); } ifhp-3.5.20/src/snmp_printer_status.conf0100644000175100017510000003254710130541267020555 0ustar papowellpapowell[snmp_params] community="public" timeout="2" retries="2" [comments] HOST-RESOURCES-MIB::hrDeviceDescr.1 = STRING: HP LaserJet 2200 .iso.org.dod.internet.mgmt.mib-2.host.hrDevice.hrDeviceTable.hrDeviceEntry.hrDeviceDescr.1 = STRING: HP LaserJet 2200 .1.3.6.1.2.1.25.3.2.1.3.1 = STRING: HP LaserJet 2200 A textual description of this device, including the device's manufacturer and revision, and optionally, its serial number. DEVICEDESCR=HP LaserJet 2200 Printer-MIB::prtGeneralPrinterName.1 = STRING: "HP LaserJet 2200" .iso.org.dod.internet.mgmt.mib-2.printmib.prtGeneral.prtGeneralTable.prtGeneralEntry.prtGeneralPrinterName.1 = STRING: "HP LaserJet 2200" .1.3.6.1.2.1.43.5.1.1.16.1 = STRING: "HP LaserJet 2200" An administrator-specified name for this printer. Depending upon implementation of this printer, the value of this object may or may not be same as the value for the MIB-II 'SysName' object. PRINTERNAME=HP LaserJet 2200 HOST-RESOURCES-MIB::hrDeviceStatus.1 = INTEGER: unknown(1), running(2), warning(3), testing(4), down(5) .iso.org.dod.internet.mgmt.mib-2.host.hrDevice.hrDeviceTable.hrDeviceEntry.hrDeviceStatus.1 = INTEGER: running(2) .1.3.6.1.2.1.25.3.2.1.5.1 = INTEGER: running(2) The current operational state of the device described by this row of the table. A value unknown(1) indicates that the current state of the device is unknown. running(2) indicates that the device is up and running and that no unusual error conditions are known. The warning(3) state indicates that agent has been informed of an unusual error condition by the operational software (e.g., a disk device driver) but that the device is still 'operational'. An example would be a high number of soft errors on a disk. A value of testing(4), indicates that the device is not available for use because it is in the testing state. The state of down(5) is used only when the agent has been informed that the device is not available for any use. DEVICESTATUS=running HOST-RESOURCES-MIB::hrPrinterStatus.1 = INTEGER: other(1), unknown(2), idle(3), printing(4), warmup(5) .iso.org.dod.internet.mgmt.mib-2.host.hrDevice.hrPrinterTable.hrPrinterEntry.hrPrinterStatus.1 = INTEGER: idle(3) .1.3.6.1.2.1.25.3.5.1.1.1 = INTEGER: idle(3) The current status of this printer device. PRINTERSTATUS=idle Printer-MIB::prtMarkerLifeCount.1.1 = Counter32: 93118 .iso.org.dod.internet.mgmt.mib-2.printmib.prtMarker.prtMarkerTable.prtMarkerEntry.prtMarkerLifeCount.1.1 = Counter32: 93118 .1.3.6.1.2.1.43.10.2.1.4.1.1 = Counter32: 93118 prtmarkerlifecount OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS optional DESCRIPTION "The count of the number of units of measure counted during the life of printer using units of measure as specified by prtMarkerCounterUnit. Refer to ftp://ftp.pwg.org/pub/pwg/pmp/drafts/pmib_031698.txt, for more details in the Standard Printer MIB. Additional information: Replaces PML TOTAL-ENGINE-PAGE-COUNT. The total engine page count is kept in NVRAM however the NVRAM value is only updated every 10 impressions. NOTE: The value returned by this OID will be incremented every page but if power is lost between NVRAM updates, up to 9 impressions of the page count may be lost. The counter will be reset to zero after 999999 pages. The page count is incremented when a sheet of media is pulled from an input tray. A duplex printed sheet will cause this counter to be incremented by two." PAGECOUNT=93118 Printer-MIB::prtConsoleDisplayBufferText.1.1 = STRING: "READY " .iso.org.dod.internet.mgmt.mib-2.printmib.prtConsoleDisplayBuffer.prtConsoleDisplayBufferTable.prtConsoleDisplayBufferEntry.prtConsoleDisplayBufferText.1.1 = STRING: "READY " .1.3.6.1.2.1.43.16.5.1.2.1.1 = STRING: "READY " The content of a line in the logical display buffer of the operator's console of the printer. When a write operation occurs, normally a critical message, to one of the LineText strings, the agent should make that line displayable if a physical display is present. Writing a zero length string clears the line. It is an implementation-specific matter as to whether the agent allows a line to be overwritten before it has been cleared. Printer generated strings shall be in the localization specified by prtConsoleLocalization. Management Application generated strings should be localized by the Management Application. STATUS=READY Printer-MIB::prtAlertSeverityLevel.1.1 = INTEGER: warning(4) .iso.org.dod.internet.mgmt.mib-2.printmib.prtAlert.prtAlertTable.prtAlertEntry.prtAlertSeverityLevel.1.1 = INTEGER: warning(4) .1.3.6.1.2.1.43.18.1.1.2.1.1 = INTEGER: warning(4) other(1), critical(3), warning(4), warningBinaryChangeEvent(5) The level of severity of this alert table entry. The printer determines the severity level assigned to each entry in the table. A critical alert is binary by nature and definition. A warning is defined to be a non-critical alert. The original and most common warning is unary. The binary warning was added later and given a more distinguished name. Printer-MIB::prtAlertGroup.1.3 = INTEGER: mediaPath(13) .iso.org.dod.internet.mgmt.mib-2.printmib.prtAlert.prtAlertTable.prtAlertEntry.prtAlertGroup.1.3 = INTEGER: mediaPath(13) .1.3.6.1.2.1.43.18.1.1.4.1.3 = INTEGER: mediaPath(13) other(1), hostResourcesMIBStorageTable(3), hostResourcesMIBDeviceTable(4), generalPrinter(5), cover(6), localization(7), input(8), output(9), marker(10), markerSupplies(11), markerColorant(12), mediaPath(13), channel(14), interpreter(15), consoleDisplayBuffer(16), consoleLights(17), alert(18), finDevice(30), finSupply(31), finSupplyMediaInput(32), finAttributeTable(33) The type of sub-unit within the printer model that this alert is related. Input, output, and markers are examples of printer model groups, i.e., examples of types of sub-units. Wherever possible, these enumerations match the sub-identifier that identifies the relevant table in the printer MIB. Printer-MIB::prtAlertDescription.1.3 = STRING: "Power Saver" .iso.org.dod.internet.mgmt.mib-2.printmib.prtAlert.prtAlertTable.prtAlertEntry.prtAlertDescription.1.3 = STRING: "Power Saver" .1.3.6.1.2.1.43.18.1.1.8.1.3 = STRING: "Power Saver" NOTE: Alert type codes have been added for the host resources MIB storage table and device table. These additional types are for situations in which the printer's storage and device objects must generate alerts (and possibly traps for critical alerts)." STATUS=alert SeverityLevel (AlertGroup) AlertDescription - if the alert status level is critical Printer-MIB::prtMarkerPowerOnCount.1.1 = Counter32: 1 .iso.org.dod.internet.mgmt.mib-2.printmib.prtMarker.prtMarkerTable.prtMarkerEntry.prtMarkerPowerOnCount.1.1 = Counter32: 1 .1.3.6.1.2.1.43.10.2.1.5.1.1 = Counter32: 1 The count of the number of units of measure counted since the equipment was most recently powered on using units of measure as specified by prtMarkerCounterUnit. POWERONCOUNT=1 PCL-TOTAL-PAGE-COUNT .1.3.6.1.4.1.11.2.3.9.4.2.1.3.3.3.5.0 pcl-total-page-count OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS optional DESCRIPTION "Total number of PCL pages printed by the device. Additional information: The PCL page count is kept in NVRAM, and the NVRAM value is updated at least every 10 pages. NOTE: The value returned by this object will be incremented every page but if power is lost between NVRAM updates, up to 9 pages of the page count may be lost. The page count counter will be reset to zero after 16,777,215 (2^24-1) pages. The page count is incremented when a sheet of media is pulled from an input tray. A duplex printed sheet will cause this counter to be incremented by two." POSTSCRIPT-TOTAL-PAGE-COUNT .1.3.6.1.4.1.11.2.3.9.4.2.1.3.3.4.5.0 postscript-total-page-count OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS optional DESCRIPTION "Total number of PostScript pages printed by the device. Additional information: This object is only supported if the PostScript option is installed. In The LJ Series 4000 the count is kept in NVRAM, and the NVRAM value is updated at least every 10 sheets. NOTE: The value returned by this object will be incremented every sheet but if power is lost between NVRAM updates up to 9 sheets of the count may be lost. The counter will be reset to zero after 16,777,215 (2^24-1) pages. " DUPLEX-PAGE-COUNT .1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.2.22.0 duplex-page-count OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS optional DESCRIPTION "Total number of sheets of media that have been duplex printed. A sheet is counted if it travels through the duplex page path, regardless of whether or not marks are made on the page. The POS will indicate if the value is kept in NVRAM. Additional information: In The LJ Series 4000 the count is kept in NVRAM however the NVRAM value is only updated every 10 sheets. NOTE: The value returned by this object will be incremented every sheet but if power is lost between NVRAM updates up to 9 sheets of the count may be lost. The counter will be reset to zero after 16,777,215 (2^24-1) pages. " Note: from LJ2200 MIB: TOTAL-ENGINE-PAGE-COUNT .1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.2.5.0 total-engine-page-count OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS optional DESCRIPTION "Total number of pages printed by the device. POS indicates if the total engine page count is kept in NVRAM, and the maximum supported value before the page count rolls over to zero. Additional information: This object is stored in NVRAM. The maximum value of this count is 1000000 before it rolls over to zero." TOTAL-COLOR-PAGE-COUNT .1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.2.7.0 total-color-page-count OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS optional DESCRIPTION "Total number of color pages printed by the device. Additional information: Any page with one or more color pixels is counted as a color page. Pages that only contain black marks are not counted by this object. The valid range of this object is 0 to 2^24-1. When the number of color pages printed exceeds the maximum color page count, the value will roll to zero. (Realistically, this should never happen since that value is mo re than 16 times the rated life of the engine.) A duplexed sheet of media will cause the counter to be incremented by two." TOTAL-MONO-PAGE-COUNT .1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.2.6.0 [printerdata default] alert_oid =".1.3.6.1.2.1.43.18.1.1" alertseveritylevel = ".1.3.6.1.2.1.43.18.1.1.2.1" alertdescription = ".1.3.6.1.2.1.43.18.1.1.8.1" alertgroup = ".1.3.6.1.2.1.43.18.1.1.4.1" #pagecount_oid = ".1.3.6.1.2.1.43.10.2.1.4.1" #poweroncount_oid = ".1.3.6.1.2.1.43.10.2.1.5.1.1" devicestatus_oid = ".1.3.6.1.2.1.25.3.2.1.5.1" printerstatus_oid = ".1.3.6.1.2.1.25.3.5.1.1.1" #display_oid = ".1.3.6.1.2.1.43.16.5.1.2.1.1" # call this the status OID status_oid = ".1.3.6.1.2.1.43.16.5.1.2.1.1" devicedescr_oid = ".1.3.6.1.2.1.25.3.2.1.3.1" printername_oid = ".1.3.6.1.2.1.43.5.1.1.16.1" total_engine_page_count_oid = ".1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.2.5" prtmarkerlifecount_oid = ".1.3.6.1.2.1.43.10.2.1.4.1.1" duplex_page_count_oid = ".1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.2.22" pcl_total_page_count_oid = ".1.3.6.1.4.1.11.2.3.9.4.2.1.3.3.3.5" postscript_total_page_count_oid = ".1.3.6.1.4.1.11.2.3.9.4.2.1.3.3.4.5" total_color_page_count_oid = ".1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.2.7" total_mono_page_count_oid = ".1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.2.6" # set this to the list of valid page count oids pagecounters="total_engine_page_count_oid prtmarkerlifecount_oid" required="devicestatus_oid printerstatus_oid" [status devicestatus_oid] other="1" unknown="2" idle="3" printing="4" warmup="5" [status printerstatus_oid ] other="1" unknown="2" idle="3" printing="4" warmup="5" [status alertseveritylevel ] other="1" critical="3" warning="4" # warningBinaryChangeEvent="5" statuschange="5" [status alertgroup ] other="1" hostResourcesMIBStorageTable="3" hostResourcesMIBDeviceTable="4" generalPrinter="5" cover="6" localization="7" input="8" output="9" marker="10" markerSupplies="11" markerColorant="12" mediaPath="13" channel="14" interpreter="15" consoleDisplayBuffer="16" consoleLights="17" alert="18" finDevice="30" ifhp-3.5.20/src/errormsg.h0100644000175100017510000000346610130541266015571 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER ***** $Id: errormsg.h,v 1.6 2002/03/06 04:43:33 papowell Exp papowell $ **** ENDHEADER ****/ #ifndef _ERRORMSG_H #define _ERRORMSG_H #if defined(FORMAT_TEST) #define LOGMSG(X) printf( #define FATAL(X) printf( #define LOGERR(X) printf( #define LOGERR_DIE(X) printf( #define LOGDEBUG printf #define DIEMSG printf #define WARNMSG printf #define MESSAGE printf #else #define LOGMSG(X) logmsg( #define FATAL(X) fatal( #define LOGERR(X) logerr( #define LOGERR_DIE(X) logerr_die( #define LOGDEBUG logDebug #define DIEMSG Diemsg #define WARNMSG Warnmsg #define MESSAGE Message #endif /* PROTOTYPES */ const char * Errormsg ( int err ); /* VARARGS2 */ #ifdef HAVE_STDARGS void logmsg( char *msg,...) #else void logmsg(va_alist) va_dcl #endif ; /* VARARGS2 */ #ifdef HAVE_STDARGS void logDebug( char *msg,...) #else void logDebug(va_alist) va_dcl #endif ; /* VARARGS2 */ #ifdef HAVE_STDARGS void fatal ( char *msg,...) #else void fatal (va_alist) va_dcl #endif ; /* VARARGS2 */ #ifdef HAVE_STDARGS void logerr (char *msg,...) #else void logerr (va_alist) va_dcl #endif ; /* VARARGS2 */ #ifdef HAVE_STDARGS void logerr_die ( char *msg,...) #else void logerr_die (va_alist) va_dcl #endif ; char *Time_str(int shortform, time_t t); int Write_fd_str( int fd, const char *str ); int Write_fd_len( int fd, const char *str, int len ); const char *Sigstr (int n); void setstatus( char *msg, char *details, int trace ); int udp_open( char *device ); /* VARARGS2 */ #ifdef HAVE_STDARGS void safefprintf (int fd, char *format,...) #else void safefprintf (va_alist) va_dcl #endif ; #endif ifhp-3.5.20/src/errormsg.c0100644000175100017510000003345410130541266015564 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER *****/ static char *const _id = "$Id: errormsg.c,v 1.19 2004/02/25 15:56:25 papowell Exp papowell $"; #include "ifhp.h" /**** ENDINCLUDE ****/ /**************************************************************************** * char *Errormsg( int err ) * returns a printable form of the * errormessage corresponding to the valie of err. * This is the poor man's version of sperror(), not available on all systems * Patrick Powell Tue Apr 11 08:05:05 PDT 1995 ****************************************************************************/ /****************************************************************************/ #if !defined(HAVE_STRERROR) # if defined(HAVE_SYS_NERR) # if !defined(HAVE_SYS_NERR_DEF) extern int sys_nerr; # endif # define num_errors (sys_nerr) # else # define num_errors (-1) /* always use "errno=%d" */ # endif # if defined(HAVE_SYS_ERRLIST) # if !defined(HAVE_SYS_ERRLIST_DEF) extern const char *const sys_errlist[]; # endif # else # undef num_errors # define num_errors (-1) /* always use "errno=%d" */ # endif #endif static int in_log; int udp_open( char *device ); void setstatus( char *msg, char *details, int trace ); const char * Errormsg ( int err ) { const char *cp; if( err == 0 ){ cp = "No Error"; } else { #if defined(HAVE_STRERROR) cp = strerror(err); #else # if defined(HAVE_SYS_ERRLIST) if (err >= 0 && err < num_errors) { cp = sys_errlist[err]; } else # endif { static char msgbuf[32]; /* holds "errno=%d". */ (void) SNPRINTF(msgbuf,sizeof(msgbuf) "errno=%d", err); cp = msgbuf; } #endif } return (cp); } static char log_buf[LARGEBUFFER]; static char *log_start; static void log_init() { int n; char *s; log_buf[0] = 0; n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; if (Name && *Name) { (void) SNPRINTF( s, n) "%s ", Name ); n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; } (void) SNPRINTF( s, n) "%s ", Time_str(1,0) ); n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; (void) SNPRINTF(s, n) "[%d] ", (int)getpid ()); n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; log_start = s; } static void log_backend( int trace, int stderr_output ) { int n; char *s; n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; setstatus( log_buf, log_start, trace ); *s = 0; if( Trace_on_stderr || stderr_output ){ n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; (void)SNPRINTF( s, n) "\n" ); Write_fd_str( 2, log_buf ); } } /* VARARGS2 */ #ifdef HAVE_STDARGS void logmsg( char *msg,...) #else void logmsg(va_alist) va_dcl #endif { #ifndef HAVE_STDARGS char *msg; #endif int n; char *s; int err = errno; VA_LOCAL_DECL VA_START (msg); VA_SHIFT (msg, char *); if( in_log++ == 0 ){ log_init(); n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; (void) VSNPRINTF(s, n) msg, ap); log_backend(0,0); in_log = 0; } VA_END; errno = err; } /* VARARGS2 */ #ifdef HAVE_STDARGS void logDebug( char *msg,...) #else void logDebug(va_alist) va_dcl #endif { #ifndef HAVE_STDARGS char *msg; #endif int n; char *s; int err = errno; VA_LOCAL_DECL VA_START (msg); VA_SHIFT (msg, char *); if( in_log++ == 0 ){ log_init(); n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; (void) VSNPRINTF(s, n) msg, ap); log_backend(1,0); in_log = 0; } VA_END; errno = err; } /* VARARGS2 */ #ifdef HAVE_STDARGS void fatal ( char *msg,...) #else void fatal (va_alist) va_dcl #endif { #ifndef HAVE_STDARGS char *msg; #endif int n; char *s; VA_LOCAL_DECL VA_START (msg); VA_SHIFT (msg, char *); if( in_log++ == 0 ){ log_init(); n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; (void) VSNPRINTF(s, n) msg, ap); log_backend(0,1); if( Errorcode == 0 ){ Errorcode = JFAIL; } if( Errorcode == -1 ) abort(); cleanup(0); in_log = 0; } VA_END; } /* VARARGS2 */ #ifdef HAVE_STDARGS void logerr (char *msg,...) #else void logerr (va_alist) va_dcl #endif { #ifndef HAVE_STDARGS char *msg; #endif int err = errno; int n; char *s; VA_LOCAL_DECL VA_START (msg); VA_SHIFT (msg, char *); if( in_log++ == 0 ){ log_init(); n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; (void) VSNPRINTF(s, n) msg, ap); n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; (void) SNPRINTF (s, n) " - %s", Errormsg (err)); log_backend(0,0); in_log = 0; } VA_END; errno = err; } /* VARARGS2 */ #ifdef HAVE_STDARGS void logerr_die ( char *msg,...) #else void logerr_die (va_alist) va_dcl #endif { #ifndef HAVE_STDARGS char *msg; #endif int err = errno; int n; char *s; VA_LOCAL_DECL VA_START (msg); VA_SHIFT (msg, char *); if( in_log++ == 0 ){ log_init(); n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; (void) VSNPRINTF (s, n) msg, ap); n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; (void) SNPRINTF (s, n) " - %s", Errormsg (err)); log_backend(0,1); if( Errorcode == 0 ){ Errorcode = JFAIL; } if( Errorcode == -1 ) abort(); cleanup(0); in_log = 0; } VA_END; } /* * Time_str: return "cleaned up" ctime() string... * * in YY/MO/DY/hr:mn:sc * Thu Aug 4 12:34:17 BST 1994 -> 12:34:17 */ char *Time_str(int shortform, time_t t) { static char buffer[99]; struct tm *tmptr; struct timeval tv; tv.tv_usec = 0; if( t == 0 ){ if( gettimeofday( &tv, 0 ) == -1 ){ LOGERR_DIE(LOG_INFO) "gettimeofday failed"); } t = tv.tv_sec; } tmptr = localtime( &t ); if( shortform && Full_time == 0 ){ SNPRINTF( buffer, sizeof(buffer) ) "%02d:%02d:%02d.%03d", tmptr->tm_hour, tmptr->tm_min, tmptr->tm_sec, (int)(tv.tv_usec/1000) ); } else { SNPRINTF( buffer, sizeof(buffer) ) "%d-%02d-%02d-%02d:%02d:%02d.%03d", tmptr->tm_year+1900, tmptr->tm_mon+1, tmptr->tm_mday, tmptr->tm_hour, tmptr->tm_min, tmptr->tm_sec, (int)(tv.tv_usec/1000) ); } return( buffer ); } /* * Write_fd_str( int fd, char *str ) * returns: 0 successful * < 0 error */ int Write_fd_str( int fd, const char *str ) { if( str ){ return (Write_fd_len( fd, str, strlen(str) ) ); } return 0; } int Write_fd_len( int fd, const char *str, int len ) { int i; if( str ) while( len > 0 ){ i = write( fd, str, len ); if( i < 0 ) return(i); str += i; len -= i; } return 0; } /*************************************************************************** * char *Sigstr(n) * Return a printable form the the signal ***************************************************************************/ struct signame { char *str; int value; }; #undef PAIR #ifndef _UNPROTO_ # define PAIR(X) { #X , X } #else # define __string(X) "X" # define PAIR(X) { __string(X) , X } #endif struct signame signals[] = { { "NO SIGNAL", 0 }, #ifdef SIGHUP PAIR(SIGHUP), #endif #ifdef SIGINT PAIR(SIGINT), #endif #ifdef SIGQUIT PAIR(SIGQUIT), #endif #ifdef SIGILL PAIR(SIGILL), #endif #ifdef SIGTRAP PAIR(SIGTRAP), #endif #ifdef SIGIOT PAIR(SIGIOT), #endif #ifdef SIGABRT PAIR(SIGABRT), #endif #ifdef SIGEMT PAIR(SIGEMT), #endif #ifdef SIGFPE PAIR(SIGFPE), #endif #ifdef SIGKILL PAIR(SIGKILL), #endif #ifdef SIGBUS PAIR(SIGBUS), #endif #ifdef SIGSEGV PAIR(SIGSEGV), #endif #ifdef SIGSYS PAIR(SIGSYS), #endif #ifdef SIGPIPE PAIR(SIGPIPE), #endif #ifdef SIGALRM PAIR(SIGALRM), #endif #ifdef SIGTERM PAIR(SIGTERM), #endif #ifdef SIGURG PAIR(SIGURG), #endif #ifdef SIGSTOP PAIR(SIGSTOP), #endif #ifdef SIGTSTP PAIR(SIGTSTP), #endif #ifdef SIGCONT PAIR(SIGCONT), #endif #ifdef SIGCHLD PAIR(SIGCHLD), #endif #ifdef SIGCLD PAIR(SIGCLD), #endif #ifdef SIGTTIN PAIR(SIGTTIN), #endif #ifdef SIGTTOU PAIR(SIGTTOU), #endif #ifdef SIGIO PAIR(SIGIO), #endif #ifdef SIGPOLL PAIR(SIGPOLL), #endif #ifdef SIGXCPU PAIR(SIGXCPU), #endif #ifdef SIGXFSZ PAIR(SIGXFSZ), #endif #ifdef SIGVTALRM PAIR(SIGVTALRM), #endif #ifdef SIGPROF PAIR(SIGPROF), #endif #ifdef SIGWINCH PAIR(SIGWINCH), #endif #ifdef SIGLOST PAIR(SIGLOST), #endif #ifdef SIGUSR1 PAIR(SIGUSR1), #endif #ifdef SIGUSR2 PAIR(SIGUSR2), #endif {0,0} /* that's all */ }; #ifndef NSIG # define NSIG 32 #endif const char *Sigstr (int n) { static char buf[40]; const char *s = 0; if( n == 0 ){ return( "No signal"); } if (n < NSIG && n >= 0) { #if defined(HAVE_SYS_SIGLIST) # if !defined(HAVE_SYS_SIGLIST_DEF) extern const char *sys_siglist[]; # endif s = sys_siglist[n]; #else # if defined(HAVE__SYS_SIGLIST) # if !defined(HAVE__SYS_SIGLIST_DEF) extern const char *_sys_siglist[]; # endif s = _sys_siglist[n]; # else int i; for( i = 0; signals[i].str && signals[i].value != n; ++i ); s = signals[i].str; # endif #endif } if( s == 0 ){ s = buf; (void) SNPRINTF(buf, sizeof(buf)) "signal %d", n); } return(s); } void setstatus( char *msg, char *details, int trace ) { char *s; int size, minsize, n, temp_fd; static int active = 0; struct stat statb; char path[MAXPATHLEN]; char buffer[SMALLBUFFER]; if( active ) return; ++active; if( Status_fd < 0 && Statusfile && stat( Statusfile, &statb) != -1 ){ /* char b[SMALLBUFFER]; SNPRINTF(b, sizeof(b),"Statusfile %s\n", Statusfile ); Write_fd_str( 2, b ); */ size = Max_status_size; if( size == 0 ) size = 8; /* SNPRINTF(b,sizeof(b), "setstatus: size %d, max %d\n", size, (int)statb.st_size ); Write_fd_str( 2, b ); */ if( (statb.st_size/1024) > size ){ minsize = Min_status_size; if( minsize > size ){ minsize = size/4; } if( minsize == 0 ){ minsize = 512; } else { minsize *= 1024; } /* SNPRINTF(b,sizeof(b), "setstatus: min size %d\n", minsize ); Write_fd_str( 2, b ); */ Status_fd = open( Statusfile, O_RDWR ); /*Set_max_fd( Status_fd ); */ SNPRINTF(path,sizeof(path)) "%s.x", Statusfile ); unlink( path ); temp_fd = open( path, O_RDWR ); /*Set_max_fd( temp_fd );*/ if( Status_fd >= 0 && temp_fd >=0 ){ if( lseek( Status_fd, -minsize, SEEK_END ) < 0 ){ LOGERR_DIE(LOG_INFO) "setstatus: cannot seek '%s'", Statusfile ); } s = 0; while( s == 0 && (n = read(Status_fd, buffer,sizeof(buffer)-1)) > 0 ){ buffer[n] = 0; if( (s = strchr(buffer,'\n')) ){ *s++ = 0; write(temp_fd, s,strlen(s)); } } while( (n = read(Status_fd, buffer,sizeof(buffer)-1)) > 0 ){ write(temp_fd, buffer,n); } close( Status_fd ); close( temp_fd ); rename( path, Statusfile ); } } Status_fd = open( Statusfile, O_WRONLY|O_APPEND, 0600 ); /*Set_max_fd( Status_fd );*/ if( Status_fd == 0 || Status_fd == 1 || Status_fd == 2 ){ int fd; for( fd = 3; fstat(fd,&statb) == 0; ++fd ); if( dup2(Status_fd,fd) == -1 ){ LOGERR_DIE(LOG_INFO) "setstatus: dup2 failed"); } close( Status_fd ); Status_fd = fd; } /* stat( Statusfile, &statb ); SNPRINTF(b,sizeof(b), "setstatus: new size %d\n", (int)(statb.st_size) ); Write_fd_str( 2, b ); */ } msg = details; if( !Debug && !trace && (s = strpbrk(msg," \t:")) && *s == ':' && isspace(cval(s+1)) ){ for(msg = s+1; isspace(cval(msg)); ++msg ); } n = strlen(log_buf); s = log_buf+n; n = sizeof(log_buf)-n; (void)SNPRINTF( s, n) " at %s\n", Time_str(1,0) ); if( Status_fd >= 0 ){ if( OF_Mode ){ Write_fd_str(Status_fd, "(of) "); } Write_fd_str( Status_fd, msg ); } --active; } /********************************************** * Support a simple one line summary message for status * This is handy for debugging and reporting information **********************************************/ int udp_open( char *device ) { int port, i, fd, err; struct hostent *hostent; struct sockaddr_in sin; struct servent *servent; char *s; LOGMSG(LOG_INFO) "udp_open: '%s'\n",device ); if( (s = strpbrk( device, "@%" )) == 0 ){ LOGMSG(LOG_INFO) "udp_open: missing port number '%s'\n",device ); return( -1 ); } if( strpbrk( s+1, "@%" ) ){ LOGMSG(LOG_INFO) "udp_open: two '@' or '%%' in name '%s'\n", device ); return( -1 ); } port = atoi( s+1 ); if( port <= 0 ){ servent = getservbyname( s+1, "udp" ); if( servent ){ port = ntohs( servent->s_port ); } } if( port <= 0 ){ LOGMSG(LOG_INFO) "udp_open: bad port number '%s'\n",s+1 ); return( -1 ); } i = *s; *s = 0; sin.sin_family = AF_INET; sin.sin_addr.s_addr = -1; if( (hostent = gethostbyname(device)) ){ /* * set up the address information */ if( hostent->h_addrtype != AF_INET ){ LOGMSG(LOG_INFO) "udp_open: bad address type for host '%s'\n", device); } memmove( &sin.sin_addr, hostent->h_addr, hostent->h_length ); } else { sin.sin_addr.s_addr = inet_addr(device); } *s = i; if( (int)sin.sin_addr.s_addr == -1){ LOGMSG(LOG_INFO)"udp_open: unknown host '%s'\n", device); return(-1); } sin.sin_port = htons( port ); LOGMSG(LOG_INFO) "udp_open: destination '%s' port %d\n", inet_ntoa( sin.sin_addr ), ntohs( sin.sin_port ) ); fd = socket (AF_INET, SOCK_DGRAM, 0); /*Set_max_fd( fd );*/ err = errno; if (fd < 0) { LOGMSG(LOG_INFO)"udp_open: socket call failed - %s\n", Errormsg(err) ); return( -1 ); } i = connect (fd, (struct sockaddr *) & sin, sizeof (sin)); err = errno; if( i < 0 ){ LOGMSG(LOG_INFO)"udp_open: connect to '%s port %d' failed - %s\n", inet_ntoa( sin.sin_addr ), ntohs( sin.sin_port ), Errormsg(errno) ); close(fd); fd = -1; } return( fd ); } /* VARARGS2 */ #ifdef HAVE_STDARGS void safefprintf (int fd, char *format,...) #else void safefprintf (va_alist) va_dcl #endif { #ifndef HAVE_STDARGS int fd; char *format; #endif char buf[1024]; VA_LOCAL_DECL VA_START (format); VA_SHIFT (fd, int); VA_SHIFT (format, char *); buf[0] = 0; (void) VSNPRINTF (buf, sizeof(buf)) format, ap); Write_fd_str(fd,buf); } ifhp-3.5.20/src/checkcode.h0100644000175100017510000000020710130541266015627 0ustar papowellpapowell#if !defined(_CHECKCODE_H_) #define _CHECKCODE_H_ 1 /* PROTOTYPES */ void Check_code( char *code_str, char *msg, int msglen ); #endif ifhp-3.5.20/src/checkcode.c0100644000175100017510000004025510130541266015631 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER *****/ static char *const _id = "$Id: checkcode.c,v 1.10 2003/11/17 16:55:36 papowell Exp papowell $"; #include "ifhp.h" /**** ENDINCLUDE ****/ /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Check out the HP PCL 5 reference manual set; it includes the PJL manual which contains a complete (as far as I know) listing of status/error codes. In case you don't have the manual handy, here's some code I used to handle the status codes. The code should be fairly obvious. Free feel to use it. Eelco van Asperen / Erasmus University Rotterdam ----------------------------/ Informatievoorziening en Automatisering FEW vanasperen@facb.few.eur.nl / PObox 1738, 3000 DR Rotterdam, The Netherlands The header file, pjlcode.h: -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */ #define PJLC_GROUP(c) ((c)/1000) #define PJLC_CODE(c) ((c)%1000) #define PJLC_X(c) ((c/100)%10) #define PJLC_YY(c) ((c)%100) #define PJLC_XX(c) ((c/10)%100) #define PJLC_Y(c) ((c)%10) typedef struct code_t { int code; char *msg; int flag; } code_t; /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- And the actual code, pjlcode.c: -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ code_t groupcode[] = { { 10, "Informational", 0}, #define XTrayCodeYYMediaCode 1 { 11, "Background Paper Loading", XTrayCodeYYMediaCode }, #define XTrayCodeYYTrayStatus 2 { 12, "Background Paper Tray Status", XTrayCodeYYTrayStatus }, #define XXOutputYBinStatus 3 { 15, "Output Bin Status", XXOutputYBinStatus }, { 20, "PJL Parser Errors", 0}, { 25, "PJL Parser Warning", 0}, { 27, "PJL Semantic Errors", 0}, { 30, "Auto Continuable Conditions", 0}, { 32, "PUL File System Errors", 0}, { 35, "Possible Operator Intervention Conditions", 0}, { 40, "Operator Intervention Required", 0}, { 41, "Paper Mount Required", /* "Foreground Paper Mount" */ XTrayCodeYYMediaCode }, #define XJamCountYYJamLocation 4 { 42, "Paper Jam", XJamCountYYJamLocation }, #define XExtDeviceYYCode 5 { 43, "External Paper Handling Device Errors", XExtDeviceYYCode }, #define XJamCountYY4000Location 6 { 44, "LJ4000 Paper Jam", XJamCountYY4000Location }, { 50, "Hardware Errors", 0}, { 0, 0, 0}, }; static code_t pjlmsg[] = { /* Informational Message */ { 10000, "powersave mode", 0}, { 10001, "Ready Online", 0}, { 10002, "Ready Offline", 0}, { 10003, "Warming Up", 0}, { 10004, "Self Test", 0}, { 10005, "Reset", 0}, { 10006, "Toner Low", 0}, { 10007, "Cancelling Job", 0}, { 10010, "Status Buffer Overflow", 0}, { 10011, "auxiliary IO initialisation", 0}, { 10013, "self test", 0}, { 10014, "printing test", 0}, { 10015, "typeface list", 0}, { 10016, "engine test", 0}, { 10017, "demo page", 0}, { 10018, "menu reset", 0}, { 10019, "reset active IO", 0}, { 10020, "reset all IO", 0}, { 10022, "config page", 0}, { 10023, "processing job", 0}, { 10024, "waiting", 0}, { 10027, "remove paper from printer", 0}, { 10029, "formfeeding", 0}, { 10030, "job message displayed", 0}, { 10999, "warming up", 0}, /* 11xxx (Background Paper Loading Messages */ { 11304, "tray 3 empty (tray 3=LC)", 0}, /* Background paper tray status */ { 12201, "tray 2 open", 0}, { 12202, "tray 2 lifting", 0}, { 12301, "tray 3 open", 0}, { 12302, "tray 3 lifting", 0}, /* PJL Parser Error */ { 20001, "generic syntax error", 0}, { 20002, "unsupported command", 0}, { 20004, "unsupported personality/system", 0}, { 20006, "illegal character or line terminated by the UEL command", 0}, { 20007, "whitespace or linefeed missing after closing quotes", 0}, { 20008, "invalid character in an alphanumeric value", 0}, { 20009, "invalid character in a numeric value", 0}, { 20010, "invalid character at the start of a string," "alphanumeric value or numeric value", 0}, { 20011, "string missing closing double-quote character", 0}, { 20012, "numeric value starts with a decimal point", 0}, { 20013, "numeric value does not contain any digits", 0}, { 20014, "no alphanumeric value after command modifier", 0}, { 20015, "option name and equal sign encountered" " but value field is missing", 0}, { 20016, "more than one command modifier", 0}, { 20017, "command modifier encountered after an option", 0}, { 20018, "command not an alphanumeric value", 0}, { 20019, "numeric value encountered when" " an alphanumeric value expected", 0}, { 20020, "string encountered when an alphanumeric value expected", 0}, { 20021, "unsupported command modifier", 0}, { 20022, "command modifier missing", 0}, { 20023, "option missing", 0}, { 20024, "extra data received after option name", 0}, { 20025, "two decimal points in a numeric value", 0}, { 20026, "invalid binary value", 0}, /* PJL Parser Warning */ { 25001, "generic warning", 0}, { 25002, "PJL prefix missing", 0}, { 25003, "alphanumeric value too long", 0}, { 25004, "string too long", 0}, { 25005, "numeric value too long", 0}, { 25006, "unsupported option name", 0}, { 25007, "option name requires a value which is missing", 0}, { 25008, "option name requires value of a different type", 0}, { 25009, "option name received with a value," " but this option does not support values", 0}, { 25010, "same option name received more than once", 0}, { 25011, "ignored option name due to value underflow or overflow", 0}, { 25012, "value truncated or rounded", 0}, { 25013, "value out of range; used closest supported limit", 0}, { 25014, "value out of range; ignored", 0}, { 25016, "option name received with an alphanumeric value," " but this value is not supported", 0}, { 25017, "string empty, option ignored", 0}, /* PJL Semantic Errors; */ { 27001, "generic sematic error", 0}, { 27002, "EOJ encountered without a previous matching JOB command", 0}, { 27004, "value of a read-only variable can not be changed", 0}, /* Auto-Continuable Condition */ { 30010, "status buffer overflow", 0}, { 30016, "memory overflow", 0}, { 30017, "print overrun", 0}, { 30018, "communication error", 0}, { 30027, "IO buffer overflow", 0}, { 30034, "paper feed error", 0}, { 30035, "NVRAM error", 0}, { 30036, "NVRAM full", 0}, { 30072, "Remove Page", 0}, { 30076, "Personity Memory Overflow", 0}, { 30094, "General Misprint Error", 0}, { 30095, "41.2 Beam Detect Malfunction", 0}, { 30096, "41.3 Improper or unexpected paper size", 0}, { 30097, "41.4 No video sync", 0}, { 30098, "41.4 Noisy video sync", 0}, { 30099, "Invalid input source", 0}, { 30100, "Invalid output destination", 0}, { 30101, "Binding agent out of supplies", 0}, { 30102, "Binding agent misalignment", 0}, { 30103, "Binding agent media capacity exceeded", 0}, { 30104, "External input paper path jam", 0}, { 30105, "External output paper path jam", 0}, { 30106, "External input device error", 0}, { 30107, "External output device error", 0}, { 30108, "MIO Error, press GO key", 0}, { 30109, "Bad serial data format, press GO key", 0}, { 30110, "MIO Error, press GO key", 0}, { 30111, "Parallel IO Error, press GO key", 0}, { 30112, "Serial IO Error, press GO key", 0}, { 30113, "Stopping check last page", 0}, { 30114, "Press select to cancel job", 0}, { 30119, "Media Feed error", 0}, /* Possible Operator Intervention Condition */ { 35029, "BAD MIO", 0}, { 35029, "W1 image adapt", 0}, { 35030, "WA job altered", 0}, { 35031, "W2 invalid personality", 0}, { 35032, "WL warnings lost", 0}, { 35037, "W3 job aborted", 0}, { 35039, "W9 job 600/LTR", 0}, { 35040, "W0 job 600/A4", 0}, { 35041, "W8 job 600/OFF", 0}, { 35042, "W7 job 300/LGL", 0}, { 35043, "W5 job 300/LTR", 0}, { 35044, "W6 job 300/A4", 0}, { 35045, "W4 job 300/OFF", 0}, /* turn off from control panel using SERVICE MSG = NO */ { 35073, "WM Chk MEM Config", 0}, { 35074, "WM MEM Config N/A", 0}, { 35075, "User Maintenance Required (200000 copies done)", 0}, { 35076, "WM Memory Full, stored data lost", 0}, { 35078, "powersave mode", 0}, { 35081, "WM Job 300", 0}, { 35082, "WD Disk not init", 0}, { 35084, "WM job 600/LGL", 0}, { 35085, "WM job 600/A3", 0}, { 35086, "WM job 600/11x17", 0}, { 35087, "WM job 600/A3", 0}, { 35088, "WM job 600/11x17", 0}, { 35115, "Volume 1 not init", 0}, { 35117, "Volume 2 not init", 0}, /* Operator Intervention Needed */ { 40000, "Sleep Mode (STANDBY)", 0}, { 40005, "Cartridge Error or Reading Setup Sheet", 0}, { 40010, "no EP cartridge", 0}, { 40011, "Error Accessing ink cartridge", 0}, { 40019, "upper out-bin full", 0}, { 40021, "printer open", 0}, { 40022, "paper jam", 0}, { 40024, "FE cartridge", 0}, { 40026, "PC install", 0}, { 40038, "toner low", 0}, { 40046, "insert cartridge", 0}, { 40047, "remove cartridge", 0}, { 40048, "[PJL OpMsg]", 0}, { 40049, "[PJL StMsg]", 0}, { 40050, "service error 50", 0}, { 40051, "temporary error 51", 0}, { 40052, "temporary error 52", 0}, { 40053, "memory error", 0}, { 40054, "54 error", 0}, { 40055, "temporary error 55", 0}, { 40056, "56 Error", 0}, { 40057, "service error 57", 0}, { 40058, "service error 58", 0}, { 40059, "59 error", 0}, { 40061, "RAM parity error", 0}, { 40062, "error during memory check", 0}, { 40063, "internal RAM error", 0}, { 40064, "internal service error 64", 0}, { 40065, "65 error", 0}, { 40067, "67 error", 0}, { 40069, "70 error", 0}, { 40070, "71 error", 0}, { 40071, "72 error", 0}, { 40079, "offline", 0}, { 40080, "EE incompatible", 0}, { 40083, "FS Disk Failure", 0}, { 40089, "Incomplete Tray3 Installed", 0}, { 40090, "Incomplete Envelope Feeder Installed", 0}, { 40092, "81 service", 0}, { 40093, "Duplexer Jam", 0}, { 40099, "56.1 Error Press Select Key", 0}, { 40100, "56.2 Error Press Select Key", 0}, { 40102, "Finisher alignment error", 0}, { 40103, "Finisher limit reached", 0}, { 40104, "Input device feed path open", 0}, { 40105, "Output device delivery path open", 0}, { 40106, "Input operation error", 0}, { 40107, "Ouput operation error", 0}, { 40116, "Volume 1 failure", 0}, { 40118, "Volume 2 failure", 0}, { 40120, "Open face-up output bin", 0}, { 40121, "Close face-up output bin", 0}, { 40122, "Duplexer not installed", 0}, { 40123, "Duplexer error, remove duplexer", 0}, { 40124, "Bad Duplexer connection", 0}, { 0, 0, 0}, }; static code_t tray_status[] = { { 1, "Tray Open", 0}, { 2, "Tray Lifting", 0}, { 0, 0, 0} }; static code_t bin_status[] = { { 1, "Output Bin Full", 0}, { 2, "Output Bin Open", 0}, { 3, "Output Bin Broken", 0}, { 0, 0, 0} }; static code_t tray_tab[] = { { 0, "MP/Tray1/DuplexTray", 0}, { 1, "Manual Feed", 0}, { 2, "PC/Upper/Tray2", 0}, { 3, "LC/Lower/Tray3", 0}, { 4, "EE/EnvelopeFeeder", 0}, { 5, "HCI", 0}, { 0, 0, 0}, }; static code_t media_tab[] = { { 0, "Unknown Paper", 0}, { 1, "Unknown envelope", 0}, { 2, "Letter Paper", 0}, { 3, "Legal Paper", 0}, { 4, "A4 Paper", 0}, { 5, "Exec Paper", 0}, { 6, "Ledger Paper", 0}, { 7, "A3 Paper", 0}, { 8, "COM10 envelope", 0}, { 9, "Monarch envelope", 0}, { 10, "C5 envelope", 0}, { 11, "DL envelope", 0}, { 12, "B4 Paper", 0}, { 13, "B5 Paper", 0}, { 14, "B5 envelope", 0}, { 15, "Custom media", 0}, { 16, "J-Postcard", 0}, { 17, "J-RoundTrip Postcard", 0}, { 18, "A5 Paper", 0}, { 19, "Letter-R Paper", 0}, { 20, "A4-R Paper", 0}, { 21, "A5-R Paper", 0}, { 22, "Japan B5-R Paper", 0}, { 23, "Exec-R Paper", 0}, { 24, "A6 Paper", 0}, { 25, "Foolscap Paper", 0}, { 26, "Japan B6 Paper", 0}, { 0, 0, 0}, }; static code_t jam_location[] = { { 0, "Non-specific jam", 0}, { 1, "Paper feed 1 jam", 0}, { 2, "Paper feed 2 jam", 0}, { 3, "Fuser output jam", 0}, { 4, "Fuser output jam", 0}, { 5, "Face down output jam", 0}, { 6, "Face down output jam", 0}, { 7, "2 Sided Turn Around jam", 0}, { 8, "2 Sided Turn Around jam", 0}, { 9, "2 Sided path jam", 0}, { 10, "2 Sided path jam", 0}, { 11, "External input device jam", 0}, { 12, "External output device jam", 0}, { 13, "Fuser Accordion jam", 0}, { 14, "Fuser Accordion jam", 0}, { 15, "Printer could not eject paper jam", 0}, { 0, 0, 0 }, }; static code_t ext_dev[] = { { 1, "Device 1", 0}, { 2, "Device 2", 0}, { 3, "Device 3", 0}, { 4, "Device 4", 0}, { 5, "Device 5", 0}, { 0, 0, 0}, }; static code_t ext_code[] = { { 1, "Unable to communicate with PHC", 0}, { 2, "Out of sequence packet", 0}, { 3, "Bad Transaction", 0}, { 4, "Invalid status bits", 0}, { 5, "Invalid status code", 0}, { 6, "Invalid device specified", 0}, { 7, "Invalid tray specified", 0}, { 8, "Invalid bin specified", 0}, { 9, "Invalid number of special purpose bytes", 0}, { 10, "Invalid number of NVEE bytes", 0}, { 11, "General PHC malfunction", 0}, { 12, "Bad PHC RAM", 0}, { 13, "PHC ROM Checksum Error", 0}, { 14, "Faulty PHC FIFO", 0}, { 15, "PHC cannot communicate with devices", 0}, { 16, "PHC never ready", 0}, { 17, "FIFO empty when expecting data", 0}, { 18, "FIFO full when tray to send data", 0}, { 19, "Invalid page ACK", 0}, { 20, "Pack ACK timeout", 0}, { 21, "Inconsistent page size", 0}, { 22, "Wrong page ack", 0}, { 23, "Devices never ready during initialization", 0}, { 24, "Negative ACK of ready tray", 0}, { 0, 0, 0 }, }; static code_t lj4000_jam[] = { { 0, "Unknown jam", 0}, { 1, "input area jam", 0}, { 2, "output area jam", 0}, { 3, "underneath top cover jam", 0}, { 4, "duplexer jam", 0}, { 5, "duplex front cover area jam", 0}, { 6, "face down output area jam", 0}, { 7, "front door area jam", 0}, { 8, "left door area jam", 0}, { 9, "right door area jam", 0}, { 0, 0, 0}, }; static code_t * lookup(code_t *tab, int target) { DEBUG4("lookup_code: code %d", target ); while( tab->msg && tab->code != target ) ++tab; DEBUG4("lookup_code: return %d '%s'", tab->code, tab->msg ); return( tab ); } void pjl_message(char *code_str, char *msg, int msglen) { code_t *code_group, *decoded_msg, *tray, *media, *status; int code = atoi(code_str); int group = PJLC_GROUP(code); int X, XX, Y, YY; X = PJLC_X(code); YY = PJLC_YY(code); XX = PJLC_XX(code); Y = PJLC_Y(code); DEBUG4("pjl_message: code %d, group %d, X %d, YY %d, XX %d, Y %d", code, group, X, YY, XX, Y ); /* find the code group name */ msg[0] = 0; decoded_msg = lookup(pjlmsg, code ); if( decoded_msg->msg ){ SNPRINTF(msg,msglen) "%s",decoded_msg->msg); return; } /* now we use the code group name */ code_group = lookup( groupcode, group ); switch( code_group->flag ){ /* 11 XTrayCodeYYMediaCode tray_tab media_tab */ case XTrayCodeYYMediaCode: tray = lookup( tray_tab, X ); media = lookup( media_tab, YY ); SNPRINTF(msg,msglen) "%s - %s", tray->msg, media->msg ); break; /* 12 XTrayCodeYYTrayStatus tray_tab tray_status */ case XTrayCodeYYTrayStatus: tray = lookup( tray_tab, X ); status = lookup( tray_status, YY ); SNPRINTF(msg,msglen) "%s - %s", tray->msg, status->msg ); break; /* 15 XXOutputYBinStatus binnumber bin_status */ case XXOutputYBinStatus: status = lookup( bin_status, Y ); SNPRINTF(msg,msglen) "Bin %d - %s", XX, status->msg ); break; /* 42 XJamCountYYJamLocation jamcount jam_location */ case XJamCountYYJamLocation: status = lookup( jam_location, YY ); SNPRINTF(msg,msglen) "%s - %d pages", status->msg, X ); break; /* 43 XExtDeviceYYCode ext_dev ext_code */ case XExtDeviceYYCode: tray = lookup( ext_dev, X ); status = lookup( ext_code, YY ); SNPRINTF(msg,msglen) "%s - %s", tray->msg, status->msg ); break; /* 44 XJamCountYY4000Location jamcount lj4000_jam */ case XJamCountYY4000Location: status = lookup( lj4000_jam, YY ); SNPRINTF(msg,msglen) "%s - %d pages", status->msg, X ); break; } if( msg[0] == 0 ){ if( code_group->msg ){ SNPRINTF(msg,msglen) "%s - message '%s'", code_group->msg, code_str ); } else { SNPRINTF(msg,msglen) "Unknown message '%s'", code_str ); } } } void Check_code( char *code_str, char *msg, int msglen ) { char *s; DEBUG4( "Check_code: '%s'", code_str ); msg[0] = 0; pjl_message( code_str, msg, msglen ); if( msg[0] == 0 && (s = GET_HASH_STR_OBJ(Pjl_error_codes, code_str, MEMINFO)) ){ SNPRINTF(msg,msglen) "%s", s ); } DEBUG4("Check_code: returning '%s'", msg ); } ifhp-3.5.20/src/extract_pjl.in0100644000175100017510000001331507753506302016432 0ustar papowellpapowell#!/usr/bin/perl use strict; use FileHandle; use Getopt::Std; use IO::Select; use IO::Socket::INET; sub usage(){ print <{d}; $debug = 2 if $opt->{D}; $host = $opt->{h} if $opt->{h}; $port = $opt->{p} if $opt->{p}; $timeout = $opt->{t} if $opt->{t}; $dev = $opt->{u} if $opt->{u}; $verbose = 1 if $opt->{v}; my $socket; if( $host ){ $socket = IO::Socket::INET->new( PeerAddr=>$host, PeerPort=>$port, Proto=>"tcp", Type=>SOCK_STREAM) or die "could not connect to $host, port $port"; } elsif( $dev ){ print "Opening '$dev'\n" if $debug; $socket = new FileHandle( "$dev", "w+"); die "could not open device $dev" if( not $socket ); print "Open done '$dev'\n" if $debug; } if( $socket ){ print "Sending query\n" if $debug; print $socket "\033%-12345X" . "\@PJL\r\n" . "\@PJL INFO VARIABLES\r\n" . "\@PJL INFO ID\r\n" . "\@PJL INFO CONFIG\r\n" . "\033%-12345X" or die "write to device failed"; my $s = IO::Select->new(); my $in = ""; my $input; while(1){ $s->add($socket); print "starting wait, timeout $timeout\n" if $debug; my @ready = $s->can_read($timeout); print "ready '" . scalar @ready . "'\n" if $debug; last if( @ready == 0 ); my $len = sysread $socket, $input, 1024; print "Read '$len'\n" if $debug > 1; last if not $len; $input =~ s/[\015\014]//g; print " INPUT '$input'\n" if $debug > 1; $in .= $input; } close($socket); @lines = map( "$_\n", split("\n",$in )); } else { @lines = <> or die "No input"; } print "Input " . join("", @lines) . "\n" if $debug; if( $verbose ){ print join("", @lines); exit(0); } $inbody = 0; $outputline = ""; foreach (@lines){ chomp; s/\015//; $line = $_; print "# INPUT $_ \n" if $debug; if( /^\@PJL/ ){ if( /^\@PJL\s+INFO\s+VARIABLES/ ){ $inbody = 1; } else { $inbody = 0; } } if( not $inbody and $outputline ){ print STDERR "# Unexpected end of information\n"; print $outputline . "\n"; exit(1); } next if( not $inbody ); if ($line =~ m/^\s*([\w\s:]*)\s*=\"?([\w\.\?]*)\"?\s*\[([0-9]*)\s*(\w*)\s*(\w*)\]/ or $line =~ m/^\s*([\w\s:]*)\s*=\"?(.*)\"?\s*\[\s*(\w*)\s*\]/ # option default numchoices ) { # Option header if( $outputline ){ print STDERR "# Incomplete option '$outputline'\n"; exit(1); } my $typestr; my $modifierstr; ($option, $default, $numchoices, $typestr, $modifierstr) = ($1, $2, $3, $4, $5); if( $numchoices eq "STRING" ){ $typestr = $numchoices; $numchoices = ""; } print "# Option: '$option', Default '$default', Numchoices '$numchoices', Typestr '$typestr', Modifier '$modifierstr'\n" if $debug; if ($modifierstr eq "READONLY") { # Ignore READONLY options $numchoices = -2; print "# WARNING: Read-only option '$option', ignored!\n"; next; } $choicesfound = 0; @choices = (); my $optstr = $option; $optstr =~ s/\W/_/g; $outputline = $optstr . "="; if( $optstr ne $option ){ $optstr = "($option)"; $optstr =~ s/\s/+/g; $outputline .= $optstr; } if (($modifierstr eq "STRING") || ($typestr eq "STRING")) { $outputline .= "STRING;"; print $outputline . "\n"; $outputline = ""; $numchoices = -2; next; } if ($numchoices == 1 && $typestr eq "ENUMERATED") { # Ignore enumerated with 1 choice $numchoices = -2; print "# WARNING: enumerated option '$option' with one choice, ignored!\n"; $outputline = ""; $numchoices = -2; next; } $outputline .= "$typestr;"; } else { $choicesfound = @choices; print "# option: '$line', numchoices '$numchoices', found '$choicesfound'\n" if $debug>1; next if( $numchoices < 0 ); $line =~ s/\s//g; next if( $line eq "" ); if( not $numchoices or ($numchoices <= $choicesfound) ){ print "# Unexpected option '$line'\n"; next; } push @choices, $line; if( @choices == $numchoices ){ print $outputline . join(",",@choices). "\n"; $outputline = ""; } } } if( $outputline ){ print STDERR "# Unexpected EOF\n"; print $outputline . "\n"; exit(1); } ifhp-3.5.20/src/accounting.c0100644000175100017510000001001410130541266016041 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER *****/ static char *const _id = "$Id: accounting.c,v 1.18 2004/02/25 15:56:24 papowell Exp papowell $"; #include "ifhp.h" #include "open_device.h" /**** ENDINCLUDE ****/ /* * Do_accounting() * writes the accounting information to the accounting file * READ THE IFHP HOWTO FOR DETAILS! * * Set up a queue and experiment with output formats. * * This stuff is provided as a courtesy. If you want to use * accounting read the IFHP HOWTO, the LPRng HOWTO, and various * warnings about abuse of printing and accounting. * * The notion here is that the ifhp script will put a line * into the accounting file at the start and end of the job. * This code is ugly and I don't have time to beautify it. * Contact me for LPRng support contract prices. */ void Do_accounting(int start, int elapsed, int pagecounter, int npages ) { int accounting_fd = -1, c, n; char working[SMALLBUFFER]; char *list, *s, *t; if( start ){ LOGMSG(LOGINFO) _("Do_accounting: pagecounter %d"), pagecounter); } else { LOGMSG(LOGINFO) _("Do_accounting: pagecounter %d, pages %d"), pagecounter, npages); } DEBUG3("Accounting script '%s', file '%s', npages %d", Accounting_script, Accountfile, npages ); list = 0; /* we first set up the output line and arguments */ if( start ){ list = safeextend2(list, OF_Mode?"start":"filestart",__FILE__,__LINE__); } else { list = safeextend2(list, OF_Mode?"end":"fileend",__FILE__,__LINE__); SNPRINTF( working, sizeof(working)) " '-b%d'", npages ); list = safeextend2(list, working,__FILE__,__LINE__); SNPRINTF( working, sizeof(working)) " '-T%d'", elapsed ); list = safeextend2(list, working,__FILE__,__LINE__); } SNPRINTF( working, sizeof(working)) " '-q%d'", getpid() ); list = safeextend2(list, working,__FILE__,__LINE__); SNPRINTF( working, sizeof(working)) " '-p%d'", pagecounter ); list = safeextend2(list, working,__FILE__,__LINE__); SNPRINTF( working, sizeof(working)) " '-t%s'", Time_str(0,0) ); list = safeextend2(list, working,__FILE__,__LINE__); DEBUG1("Accounting: script '%s', Accountfile '%s', output '%s'", Accounting_script, Accountfile, list ); /* this is probably the best way to do the output */ if( !ISNULL(Accountfile) ){ if( strchr(Accountfile,'%') ){ accounting_fd = Link_open( Accountfile); } else { accounting_fd = open(Accountfile, O_WRONLY|O_APPEND ); } } if( accounting_fd > 0 ){ /*Set_max_fd(accounting_fd);*/ for( s = Accounting_info; *s; ++s ){ c = cval(s); t = 0; if( isupper(c) ) t = Upperopts[c-'A']; if( islower(c) ) t = Loweropts[c-'a']; if( t && *t ){ SNPRINTF( working, sizeof(working)) " '-%c%s'", c, t ); list = safeextend2(list, working,__FILE__,__LINE__); } } DEBUG1("Accounting: writing to %d, '%s'", accounting_fd, list ); n = strlen(list); list = safeextend2(list, "\n",__FILE__,__LINE__); Write_fd_str(accounting_fd,list); close( accounting_fd); accounting_fd = -1; list[n] = 0; } if( Accounting_script && *Accounting_script ){ s = safestrdup3( Accounting_script, " ", list, __FILE__,__LINE__ ); for( c = 'A'; c <= 'Z'; ++c ){ if( strchr( "T", c ) ) continue; t = Upperopts[c-'A']; if( t && *t ){ SNPRINTF( working, sizeof(working)) " '-%c%s'", c, t ); s = safeextend2(s, working,__FILE__,__LINE__); } } for( c = 'a'; c <= 'z'; ++c ){ if( strchr( "bqpt", c ) ) continue; t = Loweropts[c-'a']; if( t && *t ){ SNPRINTF( working, sizeof(working)) " '-%c%s'", c, t ); s = safeextend2(s, working,__FILE__,__LINE__); } } n = Filter_file( s, _("ACCOUNTING"), -1 , -1, 0, 0 ); DEBUG1("Accounting: exec '%s'", s ); if( n ){ Errorcode = n; FATAL(LOG_INFO)_("Do_accounting: script '%s' failed"), Accounting_script); } if( s ) free(s); s = 0; } if( list ) free(list); list = 0; } ifhp-3.5.20/src/snmp_printer_status0100755000175100000000000002732610130533406017072 0ustar papowellwheel#!/usr/local/bin/perl # # usage: # check_printer_status [-v][-h ipaddr][-m model][-f config ] # [-d debug] # -v - verbose mode # -h ipaddr - printer ip address or DNS name # -m model - model information # -f config - configuration file # -d debug - debug level # # # Do SNMP query of printer; return PJL-style information for ifhp # (must have ifhp-3.5.8a3 or newer) # # The basic idea here is to extract all of the important OIDs # and query them, rather than the brute-force approach of using # snmpwalk. # # The configuration file has the entries and documentation # on the OIDs used. # # The name of hte OID is lowercased and used as the output # legent. # To make things a bit simpler for pagecounting, a list of OIDs # is flagged as the ones to return a pagecount. These will # # The program sits in a loop, checking for status. If the # alert_oid is defined, it assumes that the prtAlert (see # Printer-MIB for details) is defined, and gets the various # alerts and status messages. If there is a critical alert # it skips the status getting step. Then the other OIDs # are checked. If any OID is not present on the device, it # is removed from the list. The device needs to have a minimum # set of OIDs (printerstatus_oid, devicestatus_oid) for status # to work. # use strict; use Net::SNMP; use Data::Dumper; use Getopt::Std; use IO::Select; use FileHandle; $| = 1; # config file containing printer-specific information my $config="/usr/libexec/filters/snmp_printer_status.conf"; # other variables my $host; my $model = 'default'; my $error; my $response; my $status; my $verbose=0; my %parms; my $interval = 1; my $start_time = time(); my $debug = 0; sub parse_config( $ ); sub getstatus( $ $ ); $Data::Dumper::Indent = 1; sub usage() { print STDERR <{comment}; delete $ref->{comments}; # SNMP parameters # Not sure why the following line doesn't work...I suspect something # strange in XML::Simple...Nate thinks it's in XML::Parser called from # XML::Simple. my $community=(substr($ref->{snmp_params}{community}, 0) || "public"); my $timeout=($ref->{snmp_params}{timeout} || 5); my $retries=($ref->{snmp_params}{retries} || 3); my $version=($ref->{snmp_params}{version} || 1); my $session; my $lastmessage = []; my $label = ""; my $start = 0; my $old = {}; foreach my $name ( keys %{$ref->{status}} ){ print "$name:\n" if $verbose; my $hash = $ref->{status}{$name}; foreach my $key (keys %$hash ){ my $value = $hash->{$key}; print STDERR "$key $hash->{$key}\n" if $verbose; $hash->{$value} = $key if $value; } } foreach my $name ( grep m/_oid$/, keys %{$ref->{printerdata}{default}} ){ my $d; $ref->{printerdata}{default}{$name} = $d if ($d = $ref->{printerdata}{$model}{$name}); } print STDERR "CONFIG " . Dumper($ref) if $verbose; print STDERR "SNMP params: host $host, community $community, timeout $timeout, retries $retries\n" if $verbose; ($session, $error) = Net::SNMP->session(-hostname => $host, -community => $community, -timeout => $timeout, -version => $version, -retries => $retries); if( $error ){ print STDERR "Cannot create SNMP session '$error'\n"; exit(1); } my $prtalertseveritylevel = $ref->{printerdata}{default}{alertseveritylevel}; my $prtalertdescription = $ref->{printerdata}{default}{alertdescription}; my $prtalertgroup = $ref->{printerdata}{default}{alertgroup}; my $pagecounters = $ref->{printerdata}{default}{pagecounters}; if( not $pagecounters ){ print STDERR "$0: no pagecounters value in config\n"; exit 1; } $pagecounters = [ split( ' ', $pagecounters) ]; my $required = $ref->{printerdata}{default}{required}; if( not $required ){ print STDERR "$0: no required value in config\n"; exit 1; } $required = [ split( ' ', $required) ]; while(1){ if ($start){ # be nice to the network my $s = IO::Select->new(); $s->add(\*STDIN); my @ready; print STDERR "Starting wait\n" if $verbose; @ready = $s->can_read( $interval ); print STDERR "End wait\n" if $verbose; while( @ready ){ my $fd = shift(@ready); if( <$fd> ){ print STDERR "Refresh\n" if $verbose; $lastmessage = []; $old = {}; } else { print STDERR "Exit\n" if $verbose; exit(0); } } } $start = 1; my $alert_oid = ($ref->{printerdata}{default}{alert_oid} || ""); my $critical_error = 0; my $change = 0; if( $alert_oid ){ print STDERR "Running alert_oid get_table ($alert_oid)\n" if $verbose; $response = $session->get_table( -baseoid =>$alert_oid); if( !$response ){ $status = $session->error(); if( $status =~ /table is empty/i ){ print STDERR "No OID alert_oid $alert_oid - $status\n" if $verbose; delete $ref->{printerdata}{default}{alert_oid}; } elsif( not defined $old->{status} or $status ne $old->{status} ){ my $now = (time - $start_time) . "- "; print STDERR "${now}STATUS= $status\n" if $verbose; print "STATUS= $status\n"; $old->{status} = $status; $old->{pagecount_value} = ""; } next; } print STDERR "printerstatus response: " . Dumper($response) if $verbose; my $v = {}; foreach my $k (sort keys %$response ){ my $r = $response->{$k}; my($val, $index) = $k =~ m/^(.*)\.(\d+)$/; print STDERR "my $k = $r, '$val' $index\n" if $verbose; $v->{$val}->[$index] = $r; } my $n = @{$v->{$prtalertseveritylevel}}; my $m = @{$lastmessage}; $n = $m if $n < $m; print STDERR "decoded response: " . Dumper($v) if $verbose; for( my $i = 1; $i < $n; ++$i ){ my $clear = 0; my $level = ($v->{$prtalertseveritylevel}->[$i] ||"" ); $level = $label if ($label = $ref->{status}{alertseveritylevel}{$level}); $critical_error = 1 if( $level eq 'critical' ); print STDERR "LEVEL $level\n" if $verbose; my $alertgroup = ($v->{$prtalertgroup}->[$i] || ""); $alertgroup = $label if ($label = $ref->{status}{alertgroup}{$alertgroup}); my $warning = ($v->{$prtalertdescription}->[$i] || ""); my $out = ""; if( $critical_error ){ $out = "STATUS= level: $level, group: $alertgroup, message: $warning" if( $warning ); } else { $out = "WARNING= level: $level, group: $alertgroup($i), message: $warning" if( $warning ); } my $last = ($lastmessage->[$i] || ""); next if( $out eq $last ); if( not $warning ){ if( $last ){ $out = $last . " CLEARED"; } else { $out = ""; } $clear = 1; } if( $out ){ my $now = (time - $start_time) . "- "; print STDERR "${now}${out}\n" if $verbose; print $out . "\n"; $change = 1; } if( $clear ){ $lastmessage->[$i] = ""; } else { $lastmessage->[$i] = $out; } } print "CRITICAL $critical_error\n" if $verbose; if( $critical_error or $change ){ $old->{pagecount_value} = ""; } } # status is irrelevant while error next if( $critical_error ); $error = 0; foreach my $key (keys %{$ref->{printerdata}{default}} ){ next if $key !~ /_oid$/; next if $key =~ /alert_oid/; $error |= getstatus( $ref, $key ); } next if $error; foreach my $id (@{$required}){ if( not $ref->{printerdata}{default}{$id} ){ print STDERR "Device does not support $id - may not be a printer\n"; exit 1; } } my $found = 0; my $pc = "" ; my $old_pc = $old->{pagecount_value}; $old_pc = "" if not defined $old_pc; foreach my $pr (@$pagecounters){ print "checking $pr\n" if $debug; if( defined $ref->{printerdata}{default}{$pr} ){ $pc = $old->{$pr}; $pc = "" if not defined $pc; print "value $pr = '$pc'\n" if $debug; $found = 1; last; } } $old->{pagecount_value} = $pc; if( not $found ){ print STDERR "Device does not have support for any of " . join (", ",@$pagecounters) . "\n"; exit 1; } print "PAGECOUNT= $old_pc\n" if( $old_pc ne "" ); } # all done $session->close; # exit with JSUCC $status = 0; print STDERR "Exit status: 0\n" if $verbose; exit $status; sub getstatus( $ $ ){ my ($ref, $name ) = @_; my $oid= $ref->{printerdata}{default}{$name}; my $legend = $name; $legend =~ s/_oid$//; $legend =~ tr/a-z/A-Z/; $old->{$oid} = ""; return if( not defined $oid or $oid !~ m/^\./ ); print STDERR "Running get_table '${name}' oid '$oid' $legend\n" if $verbose; $response = $session->get_table( -baseoid =>$oid); if( !$response ){ $status = $session->error(); if( $status =~ /no response from host/i ){ if( $status ne $old->{$status} ){ print "STATUS= $status\n"; } $old->{status} = $status; return 1; } print STDERR "Running ${name} get_request ($oid)\n" if $verbose; $response = $session->get_request( -varbindlist =>[$oid]); } if( !$response ){ $status = $session->error(); if( $status =~ /noSuchName/i ){ print STDERR "No OID $name $oid - $status\n" if $verbose; delete $ref->{printerdata}{default}{$name}; return 0; } print STDERR "OID $name $oid - $status\n" if $verbose; if( not defined $old->{status} or $status ne $old->{status} ){ my $now = (time - $start_time) . "- "; print STDERR "${now}STATUS= $status\n" if $verbose; print "STATUS= $status\n"; $old->{status} = $status; $old->{pagecount_value} = ""; } return 1; } print STDERR "${name} response: " . Dumper($response) if $verbose; my $value = ""; foreach (keys %$response){ $value = $response->{$_}; } $value = $label if ($label = $ref->{status}{$name}{$value}); if( ${value} ne ($old->{$name} || "") ){ $old->{pagecount_value} = ""; print "CHANGE NAME '$name' OLD '$old->{$name}' NEW '$value'\n" if $debug > 1; } $old->{$name} = ${value}; if( $name ne "pagecount_oid" ){ print "${legend}= ${value}\n"; } return 0; } sub parse( $ $ $ ){ my( $ref, $key, $line ) = @_; my $top = $ref; print "key '$key', line '$line'\n" if $debug> 2; my @list = split(' ', $key ); if( @list == 0 ){ print STDERR "bad entry '[ $key ]'\n"; exit(1); } if( @list == 1 and $list[0] =~ /comment/ ){ $ref->{$list[0]} = $line; return( $ref ); } my @line; $line =~ s/\n/ /g; $line =~ s/(\w+)\s*=\s*"([^"]*)"/push @line,"$1=$2"; ""/eg; $line =~ s/^\s*//; $line =~ s/\s*$//; #print "LINE '" . join("' '", @line) . "'\n"; #print "LEFT '$line'\n"; if( $line ne "" ){ print STDERR "bad entry '$line'\n"; exit 1; } foreach my $id ( @list ){ if( not defined $top->{$id} ){ $top->{$id} = {}; } $top = $top->{$id}; } foreach my $id ( @line ){ my($key,$value) = split( '=', $id, 2); $top->{$key} = $value; } print "parse: " . Dumper($ref) . "\n" if $debug > 1; return( $ref ); } sub parse_config( $ ){ my ($config) = @_; if( not defined $config ){ print STDERR "$0: no config file"; exit 1; } my $fh = new FileHandle "<$config" or die "$0: cannot open config file '$config'"; my $ref = {}; my ($key, $line); while( <$fh> ){ print "key '$key', line '$line'\n" if $debug > 2; next if( /^\s*#/ ); if( /^\[\s*([^\]]*)\s*]/ ){ parse( $ref, $key, $line ) if( $key ); $line = ""; $key = $1; } else { $line .= $_; } } parse( $ref, $key, $line ) if( $key ); print "parse_config: " . Dumper($ref) . "\n" if $debug; return( $ref ); } ifhp-3.5.20/src/open_device.h0100644000175100017510000000115410130541266016201 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER ***** $Id: open_device.h,v 1.4 2001/08/26 20:12:01 papowell Exp papowell $ **** HEADER *****/ #if !defined(_OPEN_DEVICE_H_) #define _OPEN_DEVICE_H_ 1 /* PROTOTYPES */ void Open_device( char *device ); void Set_keepalive( int sock ); int Link_open( char * device ); const char *inet_ntop_sockaddr( struct sockaddr *addr, char *str, int len ); #endif ifhp-3.5.20/src/snmp_printer_status.template0100644000175100017510000002730107755503711021446 0ustar papowellpapowell#!@PERL@ # # usage: # check_printer_status [-v][-h ipaddr][-m model][-f config ] # [-d debug] # -v - verbose mode # -h ipaddr - printer ip address or DNS name # -m model - model information # -f config - configuration file # -d debug - debug level # # # Do SNMP query of printer; return PJL-style information for ifhp # (must have ifhp-3.5.8a3 or newer) # # The basic idea here is to extract all of the important OIDs # and query them, rather than the brute-force approach of using # snmpwalk. # # The configuration file has the entries and documentation # on the OIDs used. # # The name of hte OID is lowercased and used as the output # legent. # To make things a bit simpler for pagecounting, a list of OIDs # is flagged as the ones to return a pagecount. These will # # The program sits in a loop, checking for status. If the # alert_oid is defined, it assumes that the prtAlert (see # Printer-MIB for details) is defined, and gets the various # alerts and status messages. If there is a critical alert # it skips the status getting step. Then the other OIDs # are checked. If any OID is not present on the device, it # is removed from the list. The device needs to have a minimum # set of OIDs (printerstatus_oid, devicestatus_oid) for status # to work. # use strict; use Net::SNMP; use Data::Dumper; use Getopt::Std; use IO::Select; use FileHandle; $| = 1; # config file containing printer-specific information my $config="@FILTER_DIR@/snmp_printer_status.conf"; # other variables my $host; my $model = 'default'; my $error; my $response; my $status; my $verbose=0; my %parms; my $interval = 1; my $start_time = time(); my $debug = 0; sub parse_config( $ ); sub getstatus( $ $ ); $Data::Dumper::Indent = 1; sub usage() { print STDERR <{comment}; delete $ref->{comments}; # SNMP parameters # Not sure why the following line doesn't work...I suspect something # strange in XML::Simple...Nate thinks it's in XML::Parser called from # XML::Simple. my $community=(substr($ref->{snmp_params}{community}, 0) || "public"); my $timeout=($ref->{snmp_params}{timeout} || 5); my $retries=($ref->{snmp_params}{retries} || 3); my $version=($ref->{snmp_params}{version} || 1); my $session; my $lastmessage = []; my $label = ""; my $start = 0; my $old = {}; foreach my $name ( keys %{$ref->{status}} ){ print "$name:\n" if $verbose; my $hash = $ref->{status}{$name}; foreach my $key (keys %$hash ){ my $value = $hash->{$key}; print STDERR "$key $hash->{$key}\n" if $verbose; $hash->{$value} = $key if $value; } } foreach my $name ( grep m/_oid$/, keys %{$ref->{printerdata}{default}} ){ my $d; $ref->{printerdata}{default}{$name} = $d if ($d = $ref->{printerdata}{$model}{$name}); } print STDERR "CONFIG " . Dumper($ref) if $verbose; print STDERR "SNMP params: host $host, community $community, timeout $timeout, retries $retries\n" if $verbose; ($session, $error) = Net::SNMP->session(-hostname => $host, -community => $community, -timeout => $timeout, -version => $version, -retries => $retries); if( $error ){ print STDERR "Cannot create SNMP session '$error'\n"; exit(1); } my $prtalertseveritylevel = $ref->{printerdata}{default}{alertseveritylevel}; my $prtalertdescription = $ref->{printerdata}{default}{alertdescription}; my $prtalertgroup = $ref->{printerdata}{default}{alertgroup}; my $pagecounters = $ref->{printerdata}{default}{pagecounters}; if( not $pagecounters ){ print STDERR "$0: no pagecounters value in config\n"; exit 1; } $pagecounters = [ split( ' ', $pagecounters) ]; my $required = $ref->{printerdata}{default}{required}; if( not $required ){ print STDERR "$0: no required value in config\n"; exit 1; } $required = [ split( ' ', $required) ]; while(1){ if ($start){ # be nice to the network my $s = IO::Select->new(); $s->add(\*STDIN); my @ready; print STDERR "Starting wait\n" if $verbose; @ready = $s->can_read( $interval ); print STDERR "End wait\n" if $verbose; while( @ready ){ my $fd = shift(@ready); if( <$fd> ){ print STDERR "Refresh\n" if $verbose; $lastmessage = []; $old = {}; } else { print STDERR "Exit\n" if $verbose; exit(0); } } } $start = 1; my $alert_oid = ($ref->{printerdata}{default}{alert_oid} || ""); my $critical_error = 0; my $change = 0; if( $alert_oid ){ print STDERR "Running alert_oid get_table ($alert_oid)\n" if $verbose; $response = $session->get_table( -baseoid =>$alert_oid); if( !$response ){ $status = $session->error(); if( $status =~ /table is empty/i ){ print STDERR "No OID alert_oid $alert_oid - $status\n" if $verbose; delete $ref->{printerdata}{default}{alert_oid}; } elsif( not defined $old->{status} or $status ne $old->{status} ){ my $now = (time - $start_time) . "- "; print STDERR "${now}STATUS= $status\n" if $verbose; print "STATUS= $status\n"; $old->{status} = $status; $old->{pagecount_value} = ""; } next; } print STDERR "printerstatus response: " . Dumper($response) if $verbose; my $v = {}; foreach my $k (sort keys %$response ){ my $r = $response->{$k}; my($val, $index) = $k =~ m/^(.*)\.(\d+)$/; print STDERR "my $k = $r, '$val' $index\n" if $verbose; $v->{$val}->[$index] = $r; } my $n = @{$v->{$prtalertseveritylevel}}; my $m = @{$lastmessage}; $n = $m if $n < $m; print STDERR "decoded response: " . Dumper($v) if $verbose; for( my $i = 1; $i < $n; ++$i ){ my $clear = 0; my $level = ($v->{$prtalertseveritylevel}->[$i] ||"" ); $level = $label if ($label = $ref->{status}{alertseveritylevel}{$level}); $critical_error = 1 if( $level eq 'critical' ); print STDERR "LEVEL $level\n" if $verbose; my $alertgroup = ($v->{$prtalertgroup}->[$i] || ""); $alertgroup = $label if ($label = $ref->{status}{alertgroup}{$alertgroup}); my $warning = ($v->{$prtalertdescription}->[$i] || ""); my $out = ""; if( $critical_error ){ $out = "STATUS= level: $level, group: $alertgroup, message: $warning" if( $warning ); } else { $out = "WARNING= level: $level, group: $alertgroup($i), message: $warning" if( $warning ); } my $last = ($lastmessage->[$i] || ""); next if( $out eq $last ); if( not $warning ){ if( $last ){ $out = $last . " CLEARED"; } else { $out = ""; } $clear = 1; } if( $out ){ my $now = (time - $start_time) . "- "; print STDERR "${now}${out}\n" if $verbose; print $out . "\n"; $change = 1; } if( $clear ){ $lastmessage->[$i] = ""; } else { $lastmessage->[$i] = $out; } } print "CRITICAL $critical_error\n" if $verbose; if( $critical_error or $change ){ $old->{pagecount_value} = ""; } } # status is irrelevant while error next if( $critical_error ); $error = 0; foreach my $key (keys %{$ref->{printerdata}{default}} ){ next if $key !~ /_oid$/; next if $key =~ /alert_oid/; $error |= getstatus( $ref, $key ); } next if $error; foreach my $id (@{$required}){ if( not $ref->{printerdata}{default}{$id} ){ print STDERR "Device does not support $id - may not be a printer\n"; exit 1; } } my $found = 0; my $pc = "" ; my $old_pc = $old->{pagecount_value}; $old_pc = "" if not defined $old_pc; foreach my $pr (@$pagecounters){ print "checking $pr\n" if $debug; if( defined $ref->{printerdata}{default}{$pr} ){ $pc = $old->{$pr}; $pc = "" if not defined $pc; print "value $pr = '$pc'\n" if $debug; $found = 1; last; } } $old->{pagecount_value} = $pc; if( not $found ){ print STDERR "Device does not have support for any of " . join (", ",@$pagecounters) . "\n"; exit 1; } print "PAGECOUNT= $old_pc\n" if( $old_pc ne "" ); } # all done $session->close; # exit with JSUCC $status = 0; print STDERR "Exit status: 0\n" if $verbose; exit $status; sub getstatus( $ $ ){ my ($ref, $name ) = @_; my $oid= $ref->{printerdata}{default}{$name}; my $legend = $name; $legend =~ s/_oid$//; $legend =~ tr/a-z/A-Z/; $old->{$oid} = ""; return if( not defined $oid or $oid !~ m/^\./ ); print STDERR "Running get_table '${name}' oid '$oid' $legend\n" if $verbose; $response = $session->get_table( -baseoid =>$oid); if( !$response ){ $status = $session->error(); if( $status =~ /no response from host/i ){ if( $status ne $old->{$status} ){ print "STATUS= $status\n"; } $old->{status} = $status; return 1; } print STDERR "Running ${name} get_request ($oid)\n" if $verbose; $response = $session->get_request( -varbindlist =>[$oid]); } if( !$response ){ $status = $session->error(); if( $status =~ /noSuchName/i ){ print STDERR "No OID $name $oid - $status\n" if $verbose; delete $ref->{printerdata}{default}{$name}; return 0; } print STDERR "OID $name $oid - $status\n" if $verbose; if( not defined $old->{status} or $status ne $old->{status} ){ my $now = (time - $start_time) . "- "; print STDERR "${now}STATUS= $status\n" if $verbose; print "STATUS= $status\n"; $old->{status} = $status; $old->{pagecount_value} = ""; } return 1; } print STDERR "${name} response: " . Dumper($response) if $verbose; my $value = ""; foreach (keys %$response){ $value = $response->{$_}; } $value = $label if ($label = $ref->{status}{$name}{$value}); if( ${value} ne ($old->{$name} || "") ){ $old->{pagecount_value} = ""; print "CHANGE NAME '$name' OLD '$old->{$name}' NEW '$value'\n" if $debug > 1; } $old->{$name} = ${value}; if( $name ne "pagecount_oid" ){ print "${legend}= ${value}\n"; } return 0; } sub parse( $ $ $ ){ my( $ref, $key, $line ) = @_; my $top = $ref; print "key '$key', line '$line'\n" if $debug> 2; my @list = split(' ', $key ); if( @list == 0 ){ print STDERR "bad entry '[ $key ]'\n"; exit(1); } if( @list == 1 and $list[0] =~ /comment/ ){ $ref->{$list[0]} = $line; return( $ref ); } my @line; $line =~ s/\n/ /g; $line =~ s/(\w+)\s*=\s*"([^"]*)"/push @line,"$1=$2"; ""/eg; $line =~ s/^\s*//; $line =~ s/\s*$//; #print "LINE '" . join("' '", @line) . "'\n"; #print "LEFT '$line'\n"; if( $line ne "" ){ print STDERR "bad entry '$line'\n"; exit 1; } foreach my $id ( @list ){ if( not defined $top->{$id} ){ $top->{$id} = {}; } $top = $top->{$id}; } foreach my $id ( @line ){ my($key,$value) = split( '=', $id, 2); $top->{$key} = $value; } print "parse: " . Dumper($ref) . "\n" if $debug > 1; return( $ref ); } sub parse_config( $ ){ my ($config) = @_; if( not defined $config ){ print STDERR "$0: no config file"; exit 1; } my $fh = new FileHandle "<$config" or die "$0: cannot open config file '$config'"; my $ref = {}; my ($key, $line); while( <$fh> ){ print "key '$key', line '$line'\n" if $debug > 2; next if( /^\s*#/ ); if( /^\[\s*([^\]]*)\s*]/ ){ parse( $ref, $key, $line ) if( $key ); $line = ""; $key = $1; } else { $line .= $_; } } parse( $ref, $key, $line ) if( $key ); print "parse_config: " . Dumper($ref) . "\n" if $debug; return( $ref ); } ifhp-3.5.20/src/accounting.h0100644000175100017510000000077410130541266016062 0ustar papowellpapowell/************************************************************************** * LPRng IFHP Filter * Copyright 1994-1999 Patrick Powell, San Diego, CA **************************************************************************/ /**** HEADER ***** $Id: accounting.h,v 1.1 1999/12/17 02:04:56 papowell Exp papowell $ **** HEADER *****/ #if !defined(_ACCOUTING_H_) #define _ACCOUTING_H_ 1 /* PROTOTYPES */ void Do_accounting(int start, int elapsed, int pagecounter, int npages ); #endif ifhp-3.5.20/src/patchlevel.h0100644000175100017510000000004110130541266016042 0ustar papowellpapowell#define PATCHLEVEL "ifhp-3.5.20" ifhp-3.5.20/man/0040755000175100017510000000000010130541267013537 5ustar papowellpapowellifhp-3.5.20/man/ifhp.n0100644000175100017510000002441010130541267014642 0ustar papowellpapowell.TH IFHP 8 "_VERSION_" .hy 0 .SH NAME ifhp \- Almost Universal LPRng Print Filter .\" $Id: ifhp.n,v 3.16 2002/04/01 18:37:42 papowell Exp papowell $ .SH SYNOPSIS .B ifhp .br [-F format] [-s statusfile] [-?value (other LPRng filter options)] .br .br [-Z[options[,options]*]* .br [-T[options[,options]*]* .br [accountingfile] .br .sp .BR ifhp.conf "(configuration file)" .SH DESCRIPTION .LP The .B ifhp is a general purpose filter for allmost all PostScript, PJL, PCL, and text based line printers. .LP The .B ifhp filter resets and synchronizes the printer, gets accounting information, and then checks the file to determine its format. Based on the format, it will do PCL, PostScript, or other initializations, and then transfer the file to the printer. Termination sequences are sent, followed by getting accounting information. .SH "OPTIONS AND CONFIGURATION" .LP Options controlling .B ifhp operations are specified by .BR -T option or .BR -Z option values. These options have the form: .nf Form Same As flag flag=1 flag@ flag=0 flag=str flag#str .fi .LP The complete set of options and their effect on operation are detailed in the IFHP-HOWTO document. The following is a brief list of the more important ones that will have a dramatic effect on printer operation. .sp .5v .TP .BR model =modelid .br .fi Specifies the printer modelid information. This is used to select an appropriate configuration from the ifhp configuration file. .TP .B "status (status@)" .br .fi The .B status option enables checking for status information from the printer. See .B "STATUS, SYNC, WAITEND, AND PAGECOUNT" for details. .TP .B "sync (sync@, sync=ps, sync=pjl)" .TP .B "waitend (waitend@, waitend=ps, waitend=pjl)" .br .fi If the .B status option is enabled, .B sync will check to see that the printer is online and ready and the .B waitent will check that the job has finished. The .B "sync@" and .B "waitend@" will suppress these checks. See .B "STATUS, SYNC, WAITEND, AND PAGECOUNT" for details. .TP .B "pagecount (pagecount@, pagecount=ps, pagecount=pjl)" .br .fi If the .B status option is enabled, .B pagecount will try to get the value of the printer pagecounter. See .B "STATUS, SYNC, WAITEND, AND PAGECOUNT" for details. .TP .BR config =path,path,... .br .fi pathnames of configuration files to read to obtain printer configuration information. .TP .BR debug =debuglevel .br .fi Set the debugging level. A larger number causes more verbose error messages. You have been warned. .TP .B trace .br .fi Sends out debugging and tracing information on STDERR as well as to the status log file. .TP .BR stty =options .br .fi Sets serial line configuration when a dev entry specified. .SH "STATUS, SYNC, WAITEND, AND PAGECOUNT" .LP If the .B status option is true, then the .B ifhp filter will assume that the printer is attached by a bidirectional channel and will attempt to read status information from the printer. This also enables the .B sync, .B sync and .B pagecount handshaking and getting pagecount information from the printer. .LP The .B sync flag causes a special PJL job or PostScript job to be sent to the printer at the start of printing at periodic intervals. This job has the property that it will attempt to put the printer into a sane state and cause it to return status information. By default, if the printer supports PJL then the PJL job is used, otherwise if it supports PostScript, the PostScript job is used. You can force the sync method using .B "sync=pjl" or .B "sync=ps" if necessary, and suppress it using .BR "sync@" .LP The .B waitend flag causes a special PJL job or PostScript job to be sent to the printer at the end of the job at periodic intervals. This job has the property that it will attempt to put the printer into a sane state and cause it to return status information. By default, if the printer supports PJL then the PJL job is used, otherwise if it supports PostScript, the PostScript job is used. You can force the waitend method using .B "waitend=pjl" or .B "waitend=ps" if necessary, and suppress it using .BR "waitend@" .LP The .B pagecount flag causes a special PJL job or PostScript job to be sent to the printer at the start and end of the job. This job has the property that it causes the printer to return the value of a hardware page counter. By taking the difference of the start and end values of the pagecounter, an accurate measure of the number of pages (or impressions for some duplex printers) can be done. By default, if the printer supports PJL then the PJL job is used, otherwise if it supports PostScript, the PostScript job is used. You can force the pagecount method using .B "pagecount=pjl" or .B "pagecount=ps" if necessary, and suppress it using .BR "pagecount@" .LP The IFHP filter will puts tracing and status information in the file specified by the .B -s command line flag. If the status file does not exist, it will not be created. The diagnostic .B trace flag overrides this and directs the status to STDERR. .LP The pagecount information is put into the accounting file specified on the command line. If the accounting file does not exist, it will not be created. .SH "JOB PROCESSING (LPR -Z) OPTIONS" .LP The .B lpr program passes the command line -Z options or the .B lp program -o options to the LPRng .B lpd server which then passes them to the ifhp filter. The options are used to control various printing features. For example if duplex printing and landscape is wanted, then .sp .5v .B lpr -P -Z'duplex,landscape' .sp .5v .LP Since each printer has a different set of capabilities there are no standard set of -Z options. The following is a sample of the options provided by .BR ifhp . Check the ifhp.conf file for all of the options supported by the printer. .TP .B "Input Tray Selection" .br inupper, inlower, intray1, intray2, intray3, manual, envelope .br source=name .br The input tray selection options should start with the .B in prefix and corresponds to the various trays. The manual and envelope options are included to select manual feed or envelope feed. There is a possible source of conflict here as there may be an envelope feeder as well as an envelope media. This is a printer specific dependency. .br The source=name option allows users to use options such as -Zsource=inbin1, which may be useful for systems that have an unusual or nonstandard input selection mechanism. se select media (paper) from the specified tray or feeder. .TP .B "Output Bin Selection" .br outupper, outlower, outbin1 .br outbin=name .br The output bin selection should start with the out prefix. .br The outbin=name form allow users to use options such as -Zoutbin=stapler, which may be useful for systems that have an unusual or nonstandard output selection mechanism. .TP .B "Media Size Selection" .br .nf a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 b0 b1 b2 b3 b4 b5 archA archB archC archD archE flsa flse halfletter note letter legal 11x17 ledger tabloid .fi .br paper=name .br The paper size selection facilities usually are quite printer dependent, and the input tray selection and paper size selection mechanisms may interact in strange and mysterious ways. .br The paper=name form allow users to use options such as -Zpaper=b3, which may be useful for systems that have an unusual or nonstandard input media selection mechanism. .TP .B "Media Type Selection" .br plain, preprinted, letterhead, transparency, glossy, prepunched, labels .br bond, recycled, color, heavy, cardstock .br Media Type is not the same as paper size, and corresponds to the name assigned to a particular media. Of course, the issue is complicated by the fact that some media have standard sizes as well. Again, the input tray selection, media size, and media type selection will interact in confusing and mysterious ways, depending on the whim of the printer firmware iplementors. .br You will notice that there is no generic mediatype=name facility. This is due to the radically different way that PostScript, PJL, PCL, etc., each handle media name and selection. While it is possible to determine the various strings, numbers, escape codes, etc., that need to be sent for each mediatype, a general mechanism is too fragile and fraught with peril for the unwary administrator to provide. You have been warned. Been there and have the scars to prove it. .br These are commonly used media type names gleaned from various PostScript Printer Description Files, Microsoft printer drivers, and arcane lore of the Printer Working Group. Note that these are not accepted terms in the paper industry for any of these type of media. You are warned. .TP .B "Duplex/Simplex" .br duplex (lduplex) duplexshort (sduplex) .br simplex .br tumble (shortedge) .br The duplex (alias lduplex) and duplexshort (alias sduplex) will print on both sides of the paper; duplexshort will reverse the orientation; simplex will print only on one side of the paper. .br The tumble (shortedge) will reverse the orientation of the paper. Used when printing facing pages of duplex and there is a desperate need for this orientation. .TP .B "Copies" .br copies=N .br Be aware that this option is totally bogus is usually ignored (except when you expect it to be ignored). You have been warned. .SH "OF MODE" The .B OF mode of operation is selected by the .B -Fo command line option. When operationg in OF mode it will scan the input for a two character stop sequence \e031\e011. When it finds the sequence it will suspend itself. The spooler will restart the filter with a SIGCONT signal when it has more output for it. .SH FILES .PD 0 .TP .B "_IFHP_CONF_" .br Configuration files .TP .B "_FILTER_DIR_/ifhp" .br Executables. .SH "SEE ALSO" .LP The IFHP-HOWTO document, which is included as part of the IFHP distribution. This is the principle reference for this filter. .sp .LP .BR lpd (8), .BR printcap (5). .sp .LP .nf FTP sites: ftp://ftp.lprng.com .sp .LP WEB sites: http://www.lprng.com .sp .LP Mailing List. Send email to lprng-request@lprng.com with the word 'subscribe' in the boyd. .SH "BUGS" .LP They are not bugs. They are mis-documented features. .SH "AUTHOR" .LP The IFHP filter was inspired by the LPRng CTI-ifhp filter, which was a descendent of the print filters developed by the .B CTI-Print project at the .B Division of Computing Facilities of the .B Computer Technology Institute (CTI), Patras, Greece. .SH "AUTHORS" .nf .in +.5i .ti -.5i Patrick Powell, Astart Technologies, San Diego, CA ifhp-3.5.20/man/install-sh0100755000175100017510000001124306767765761015575 0ustar papowellpapowell#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. # # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" tranformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 ifhp-3.5.20/man/mkinstalldirs0100755000175100017510000000121106444564305016350 0ustar papowellpapowell#!/bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Last modified: 1994-03-25 # Public domain errstatus=0 for file in ${1+"$@"} ; do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d in ${1+"$@"} ; do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" 1>&2 mkdir "$pathcomp" || errstatus=$? fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here ifhp-3.5.20/man/textps.n0100644000175100017510000000435010130541267015244 0ustar papowellpapowell.TH TEXTPS 8 "_VERSION_" .\" $Id: textps.n,v 1.1 1998/12/29 02:54:32 papowell Exp papowell $ .SH NAME textps \- text to PostScript filter .br nscript \- text to PostScript converter .SH SYNOPSIS .B textps [ .BI \-T [option[,option]*]* ] [ .I "lpr filter options" ] [ .I filename\|.\|.\|. ] .sp options: [ .BI c =n ] [ .BI l =n ] [ .BI m =n ] [ .BI t =n ] [ .BI v =n ] .sp .B nscript [ .B -G ] [ .B -r ] [ .B -2 ] [ .B -t width ] [ .BI -p file ] [ .BI -P printer ] [ .I filename\|.\|.\|. ] .SH DESCRIPTION .B textps is a simple text to PostScript filter. When invoked as .B nscript it (weakly) simulates the Adobe Systems Incorporated .B enscript program, converting text to PostScript and adding headers. .B textps is usually invoked automatically by a print spooler while .B nscript is usually invoked by a user. Input files can use ISO Latin-1. Two or more identical overstruck characters are rendered using a bold font. Tabs are assumed to be set every 8 character positions. .B textps is designed to produce good output with .B lpr\ \-p or .BR pr\ |\ lpr ; if you print unpaginated text, you will need to increase the .B t option value and decrease the .B v or .B l option value. .SH "TEXTPS OPTIONS" .TP .BI c =n Use .I n characters to the inch. .TP .BI l =n Use .I n lines per page. .TP .BI m =n Use a left margin of .I n points. .TP .BI t =n Position the baseline of the first line of text .I n points below the top of the page. .TP .BI v =n Use a vertical spacing of .I n points. .LP The default behaviour is .BR -Tc=12,l=66,m=18,t=8,v=12 . .SH "NSCRIPT OPTIONS" By default, .B nscript will send the formatted output to lpr; the -P option can select the printer. .TP .B -G Gaudy output - a header and labels for the input files are placed on the output page. .TP .B -r rotated (landscape) output. .TP .BI -t width Set tab stop to .I width characters. .TP .B -2 two column output. .TP .BI -p file send output to .I file. .TP .BI -P printer spool output to .I printer using .BR lpr . .LP Note: the combination nscript -2Gr is useful for viewing listings. .LP .SH "AUTHORS" .nf Original Author: James Clark , used with with his permission; Modified by: Patrick Powell .SH "SEE ALSO" .BR psrev (1), .BR psfilter (1), .BR psbanner (1) ifhp-3.5.20/man/Makefile.in0100644000175100017510000000310610130541267015601 0ustar papowellpapowell#************************************************************************** #* LPRng IFHP Filter #* Copyright 1994-1997 Patrick Powell, San Diego, CA #* #* $Id: Makefile.in,v 3.28 2004/09/24 20:18:15 papowell Exp papowell $ # SRC=@srcdir@ @SET_MAKE@ prefix=@prefix@ exec_prefix=@exec_prefix@ sysconfdir=@sysconfdir@ libexecdir=@libexecdir@ INSTALLCMD=@INSTALL@ FILTER_DIR=@FILTER_DIR@ IFHP_CONF=@IFHP_CONF@ VERSION=@VERSION@ SHELL=@SHELL@ MAN=@mandir@ INSTALL_MAN=@INSTALL_MAN@ #**************** configure does not change lines after this ********* FONTDIR=${FILTER_DIR}/fonts/ INSTALL= ifhp.8 textps.8 all: $(INSTALL) .PHONY: install all clean distclean ci install: all $(INSTALL) ${SHELL} ${SRC}/mkinstalldirs ${DESTDIR}$(MAN)/man8 for i in $(INSTALL) ; do \ $(INSTALL_MAN) -m 644 $$i ${DESTDIR}$(MAN)/man8; \ done ; clean: rm -f ifhp.8 textps.8 ifhp.8: $(SRC)/ifhp.n Makefile rm -f $@ sed -e 's,_FONTDIR_,$(FONTDIR),g' \ -e 's,_FILTER_DIR_,$(FILTER_DIR),g' \ -e 's,_IFHP_CONF_,$(IFHP_CONF),g' \ -e 's,_VERSION_,${VERSION},g' \ $(SRC)/ifhp.n >$@ textps.8: $(SRC)/textps.n Makefile rm -f $@ sed -e 's,_FONTDIR_,$(FONTDIR),g' \ -e 's,_FILTER_DIR_,$(FILTER_DIR),g' \ -e 's,_IFHP_CONF_,$(IFHP_CONF),g' \ -e 's,_VERSION_,${VERSION},g' \ $(SRC)/textps.n >$@ distclean: clean rm -f Makefile CI= #CO=-kv CO=-l ci: if test ! -d RCS ; then mkdir RCS; fi; checkin() { \ rcs -l $$1 ; \ ci $(CI) -mUpdate -t-Initial $$1; \ co $(CO) $$1; \ }; \ for i in Makefile.in Makefile *.n; do \ checkin $$i; \ done; update: ifhp-3.5.20/man/snmp_printer_status.n0100644000175100017510000002377710130541267020056 0ustar papowellpapowell.TH SNMP_PRINTER_STATUS 8 "_VERSION_" .hy 0 .SH NAME snmp_printer_status \- get printer status using SNMP .\" $Id: snmp_printer_status.n,v 1.1 2003/11/17 16:55:37 papowell Exp papowell $ .SH SYNOPSIS .B snmp_printer_status .br [-f format] [-s statusfile] .sp .BR snmp_printer_status.conf "(configuration file)" .SH DESCRIPTION .LP The .B snmp_printer_status .SH "OPTIONS AND CONFIGURATION" .LP Options controlling .B snmp_printer_status operations are specified by .BR -T option or .BR -Z option values. These options have the form: .nf Form Same As flag flag=1 flag@ flag=0 flag=str flag#str .fi .LP The complete set of options and their effect on operation are detailed in the SNMP_PRINTER_STATUS-HOWTO document. The following is a brief list of the more important ones that will have a dramatic effect on printer operation. .sp .5v .TP .BR model =modelid .br .fi Specifies the printer modelid information. This is used to select an appropriate configuration from the snmp_printer_status configuration file. .TP .B "status (status@)" .br .fi The .B status option enables checking for status information from the printer. See .B "STATUS, SYNC, WAITEND, AND PAGECOUNT" for details. .TP .B "sync (sync@, sync=ps, sync=pjl)" .TP .B "waitend (waitend@, waitend=ps, waitend=pjl)" .br .fi If the .B status option is enabled, .B sync will check to see that the printer is online and ready and the .B waitent will check that the job has finished. The .B "sync@" and .B "waitend@" will suppress these checks. See .B "STATUS, SYNC, WAITEND, AND PAGECOUNT" for details. .TP .B "pagecount (pagecount@, pagecount=ps, pagecount=pjl)" .br .fi If the .B status option is enabled, .B pagecount will try to get the value of the printer pagecounter. See .B "STATUS, SYNC, WAITEND, AND PAGECOUNT" for details. .TP .BR config =path,path,... .br .fi pathnames of configuration files to read to obtain printer configuration information. .TP .BR debug =debuglevel .br .fi Set the debugging level. A larger number causes more verbose error messages. You have been warned. .TP .B trace .br .fi Sends out debugging and tracing information on STDERR as well as to the status log file. .TP .BR stty =options .br .fi Sets serial line configuration when a dev entry specified. .SH "STATUS, SYNC, WAITEND, AND PAGECOUNT" .LP If the .B status option is true, then the .B snmp_printer_status filter will assume that the printer is attached by a bidirectional channel and will attempt to read status information from the printer. This also enables the .B sync, .B sync and .B pagecount handshaking and getting pagecount information from the printer. .LP The .B sync flag causes a special PJL job or PostScript job to be sent to the printer at the start of printing at periodic intervals. This job has the property that it will attempt to put the printer into a sane state and cause it to return status information. By default, if the printer supports PJL then the PJL job is used, otherwise if it supports PostScript, the PostScript job is used. You can force the sync method using .B "sync=pjl" or .B "sync=ps" if necessary, and suppress it using .BR "sync@" .LP The .B waitend flag causes a special PJL job or PostScript job to be sent to the printer at the end of the job at periodic intervals. This job has the property that it will attempt to put the printer into a sane state and cause it to return status information. By default, if the printer supports PJL then the PJL job is used, otherwise if it supports PostScript, the PostScript job is used. You can force the waitend method using .B "waitend=pjl" or .B "waitend=ps" if necessary, and suppress it using .BR "waitend@" .LP The .B pagecount flag causes a special PJL job or PostScript job to be sent to the printer at the start and end of the job. This job has the property that it causes the printer to return the value of a hardware page counter. By taking the difference of the start and end values of the pagecounter, an accurate measure of the number of pages (or impressions for some duplex printers) can be done. By default, if the printer supports PJL then the PJL job is used, otherwise if it supports PostScript, the PostScript job is used. You can force the pagecount method using .B "pagecount=pjl" or .B "pagecount=ps" if necessary, and suppress it using .BR "pagecount@" .LP The SNMP_PRINTER_STATUS filter will puts tracing and status information in the file specified by the .B -s command line flag. If the status file does not exist, it will not be created. The diagnostic .B trace flag overrides this and directs the status to STDERR. .LP The pagecount information is put into the accounting file specified on the command line. If the accounting file does not exist, it will not be created. .SH "JOB PROCESSING (LPR -Z) OPTIONS" .LP The .B lpr program passes the command line -Z options or the .B lp program -o options to the LPRng .B lpd server which then passes them to the snmp_printer_status filter. The options are used to control various printing features. For example if duplex printing and landscape is wanted, then .sp .5v .B lpr -P -Z'duplex,landscape' .sp .5v .LP Since each printer has a different set of capabilities there are no standard set of -Z options. The following is a sample of the options provided by .BR snmp_printer_status . Check the snmp_printer_status.conf file for all of the options supported by the printer. .TP .B "Input Tray Selection" .br inupper, inlower, intray1, intray2, intray3, manual, envelope .br source=name .br The input tray selection options should start with the .B in prefix and corresponds to the various trays. The manual and envelope options are included to select manual feed or envelope feed. There is a possible source of conflict here as there may be an envelope feeder as well as an envelope media. This is a printer specific dependency. .br The source=name option allows users to use options such as -Zsource=inbin1, which may be useful for systems that have an unusual or nonstandard input selection mechanism. se select media (paper) from the specified tray or feeder. .TP .B "Output Bin Selection" .br outupper, outlower, outbin1 .br outbin=name .br The output bin selection should start with the out prefix. .br The outbin=name form allow users to use options such as -Zoutbin=stapler, which may be useful for systems that have an unusual or nonstandard output selection mechanism. .TP .B "Media Size Selection" .br .nf a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 b0 b1 b2 b3 b4 b5 archA archB archC archD archE flsa flse halfletter note letter legal 11x17 ledger tabloid .fi .br paper=name .br The paper size selection facilities usually are quite printer dependent, and the input tray selection and paper size selection mechanisms may interact in strange and mysterious ways. .br The paper=name form allow users to use options such as -Zpaper=b3, which may be useful for systems that have an unusual or nonstandard input media selection mechanism. .TP .B "Media Type Selection" .br plain, preprinted, letterhead, transparency, glossy, prepunched, labels .br bond, recycled, color, heavy, cardstock .br Media Type is not the same as paper size, and corresponds to the name assigned to a particular media. Of course, the issue is complicated by the fact that some media have standard sizes as well. Again, the input tray selection, media size, and media type selection will interact in confusing and mysterious ways, depending on the whim of the printer firmware iplementors. .br You will notice that there is no generic mediatype=name facility. This is due to the radically different way that PostScript, PJL, PCL, etc., each handle media name and selection. While it is possible to determine the various strings, numbers, escape codes, etc., that need to be sent for each mediatype, a general mechanism is too fragile and fraught with peril for the unwary administrator to provide. You have been warned. Been there and have the scars to prove it. .br These are commonly used media type names gleaned from various PostScript Printer Description Files, Microsoft printer drivers, and arcane lore of the Printer Working Group. Note that these are not accepted terms in the paper industry for any of these type of media. You are warned. .TP .B "Duplex/Simplex" .br duplex (lduplex) duplexshort (sduplex) .br simplex .br tumble (shortedge) .br The duplex (alias lduplex) and duplexshort (alias sduplex) will print on both sides of the paper; duplexshort will reverse the orientation; simplex will print only on one side of the paper. .br The tumble (shortedge) will reverse the orientation of the paper. Used when printing facing pages of duplex and there is a desperate need for this orientation. .TP .B "Copies" .br copies=N .br Be aware that this option is totally bogus is usually ignored (except when you expect it to be ignored). You have been warned. .SH "OF MODE" The .B OF mode of operation is selected by the .B -Fo command line option. When operationg in OF mode it will scan the input for a two character stop sequence \e031\e011. When it finds the sequence it will suspend itself. The spooler will restart the filter with a SIGCONT signal when it has more output for it. .SH FILES .PD 0 .TP .B "_SNMP_PRINTER_STATUS_CONF_" .br Configuration files .TP .B "_FILTER_DIR_/snmp_printer_status" .br Executables. .SH "SEE ALSO" .LP The SNMP_PRINTER_STATUS-HOWTO document, which is included as part of the SNMP_PRINTER_STATUS distribution. This is the principle reference for this filter. .sp .LP .BR lpd (8), .BR printcap (5). .sp .LP .nf FTP sites: ftp://ftp.lprng.com .sp .LP WEB sites: http://www.lprng.com .sp .LP Mailing List. Send email to lprng-request@lprng.com with the word 'subscribe' in the boyd. .SH "BUGS" .LP They are not bugs. They are mis-documented features. .SH "AUTHOR" .LP The SNMP_PRINTER_STATUS filter was inspired by the LPRng CTI-snmp_printer_status filter, which was a descendent of the print filters developed by the .B CTI-Print project at the .B Division of Computing Facilities of the .B Computer Technology Institute (CTI), Patras, Greece. .SH "AUTHORS" .nf .in +.5i .ti -.5i Patrick Powell, Astart Technologies, San Diego, CA ifhp-3.5.20/BUGS0100644000175100017510000000025410130541262013440 0ustar papowellpapowellFirst Public Release: 3.1.4 Sun Dec 27 18:21:17 PST 1998 Patrick Powell papowell@astart.com None known... $Id: BUGS,v 1.2 1998/12/29 02:54:10 papowell Exp papowell $ ifhp-3.5.20/gs_out0100644000175100017510000011670010130541264014206 0ustar papowellpapowellE&l0o0l0E*b0M&l1X*rB*p0x0Y*t300R*p+1465Y*r1A*b72W€*b72W€*b72W€*b72Wÿ€*b72Wÿ€*b72Wÿÿ€*b72Wÿÿ€*b72Wÿÿ€*b72Wÿÿÿ€*b72Wÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72W?ÿÿÿÿ€*b72Wÿÿÿÿÿ€*b72Wÿÿÿÿÿ€*b72Wÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿ€*b72W?ÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿ€*b72W?ÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿ€*b72W?ÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72W?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72W?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿóÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿƒÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿøÿÿÿÿ€*b72WÿÿÿÿÿÿÿÿÿÿÀÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿþÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿðÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b72Wÿÿÿÿÿÿÿÿøÿÿÿÿ€*b72WÿÿÿÿÿÿÿÿÀÿÿÿÿ€*b72Wÿÿÿÿÿÿÿþÿÿÿÿ€*b72Wÿÿÿÿÿÿÿðÿÿÿÿ€*b72Wÿÿÿÿÿÿÿ€ÿÿÿÿ€*b72Wÿÿÿÿÿÿüÿÿÿÿ€*b72WÿÿÿÿÿÿÀÿÿÿÿ€*b72Wÿÿÿÿÿþÿÿÿÿ€*b72Wÿÿÿÿÿðÿÿÿÿ€*b72Wÿÿÿÿÿ€ÿÿÿÿ€*b72Wÿÿÿüÿÿÿÿ€*b72Wÿÿÿàÿÿÿÿ€*b72W?ÿÿÿÿÿÿÿ€*b72Wÿÿøÿÿÿÿ€*b72Wÿÿ€ÿÿÿÿ€*b72Wÿðÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b72Wÿÿÿÿ€*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b88WÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ*b88WÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ*b88WÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ*b88WÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ*b88WÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà*b88WÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ*b88WÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ*b88WÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ*b88WÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ*b88WÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ*b88WÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ*b88Wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€*rB Eifhp-3.5.20/UTILS/0040755000175100017510000000000010130541267013664 5ustar papowellpapowellifhp-3.5.20/UTILS/supported.in0100644000175100017510000000301510130541266016234 0ustar papowellpapowell# Perl Script my($line,$list,$l,@lists,$v1,$v2,$debug,$output); my($conf) = $ARGV[0]; $debug=0; if( not $conf ){ print STDERR "use: $0 ifhp.conf file\n"; exit 1; } open( CONF, "<$conf") or die "cannot open '$conf'"; while( ){ chomp(); if( /^# PRINTER / ){ s/^# PRINTER //; if( /^-/ ){ s/-//; $line .= $_; } else { if( $line ){ $output .= "### $line\n"; } $line = $_; } } elsif( $line and /^\[/ ){ if( $line !~ /\%/ ){ print STDERR $line if $debug; $output .= "### $line\n"; $line = ""; next; } @lists = split(' ',$_); foreach $list (@lists){ next if not $list; next if $list =~ /\[/; next if $list =~ /\]/; $l = $line; print STDERR "X $list $l\n" if $debug; $l =~ s/%/$list/; print STDERR "$l\n" if $debug; if( $l =~ m,{/(.*)/(.*)/}, ){ print STDERR "$1, $2\n" if $debug; $v1 = $1; $v2 = $2; eval "\$list =~ s/$v1/$v2/"; print STDERR "Match '$list'\n" if $debug; $l =~ s/{.*}/$list/; print STDERR "Final $l\n" if $debug; } print STDERR "$l\n" if $debug; $output .= "### $l\n"; } $line = ""; } } close CONF; print STDERR "OUTPUT ". $output if $debug; $skip = 0; print STDERR "XX START\n" if $debug; while( <> ){ print STDERR "INPUT $_" if $debug; if( /SUPPORTED START/ ){ print; print $output; print STDERR "YY $_" if $debug; print STDERR "ZZ $output" if $debug; $skip = 1; } elsif( $skip ){ $skip = 0 if( /SUPPORTED END/ ); } print if( not $skip ); if( $debug ){ print STDERR "XX $_" if( not $skip ); } } ifhp-3.5.20/UTILS/one.ps0100644000175100017510000000022110130541266015000 0ustar papowellpapowell%!PS-Adobe-3.0 %% one page (i.e. - a page with a 1 on it) %%/Times-Roman /Courier findfont 200 scalefont setfont 72 300 moveto (1) show showpage ifhp-3.5.20/UTILS/stopstr.c0100644000175100017510000000013410130541266015540 0ustar papowellpapowell#include #include int main() { write(1,"\031\001", 2); return(0); } ifhp-3.5.20/UTILS/one.pdf0100644000175100017510000000207710130541266015142 0ustar papowellpapowell%PDF-1.2 %Çì¢ 6 0 obj <> stream xœ+T0Ð3T0A(œËUÈ¥d¢^ÌU¨`–‚Qɹ N!@IK#…4.ˆCs#cH.—†¡fH—kˆB ­•Nendstream endobj 7 0 obj 77 endobj 5 0 obj <> /Contents 6 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 5 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 4 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 9 0 obj <> endobj 8 0 obj <> endobj 2 0 obj <>endobj xref 0 12 0000000000 65535 f 0000000399 00000 n 0000000688 00000 n 0000000340 00000 n 0000000447 00000 n 0000000180 00000 n 0000000015 00000 n 0000000162 00000 n 0000000631 00000 n 0000000562 00000 n 0000000502 00000 n 0000000532 00000 n trailer << /Size 12 /Root 1 0 R /Info 2 0 R >> startxref 770 %%EOF ifhp-3.5.20/UTILS/one.pcl0100644000175100017510000000007710130541265015144 0ustar papowellpapowellE&u600D&l2A&l0O&l0E(0N(s1p0s0b4101T(s24V*p655x942Y1 Eifhp-3.5.20/UTILS/one.pjl0100644000175100017510000000104010130541266015143 0ustar papowellpapowell%-12345X@PJL @PJL RDYMSG DISPLAY = ":" @PJL USTATUSOFF @PJL USTATUS JOB = ON @PJL USTATUS DEVICE = ON @PJL USTATUS PAGE = ON @PJL USTATUS TIMED = 10 @PJL ENTER LANGUAGE = POSTSCRIPT %! %!PS-Adobe-3.0 %% one page (i.e. - a page with a 1 on it) %%/Times-Roman /Courier findfont 200 scalefont setfont 72 300 moveto (1) show showpage %-12345X@PJL @PJL RDYMSG DISPLAY = ":" @PJL EOJ NAME = ":" @PJL USTATUSOFF @PJL USTATUS JOB = ON @PJL USTATUS DEVICE = ON @PJL USTATUS PAGE = ON @PJL USTATUS TIMED = 10 @PJL RDYMSG DISPLAY = "Done: :" %-12345Xifhp-3.5.20/UTILS/test10100644000175100017510000000465410130541266014654 0ustar papowellpapowell*PPD-Adobe: "4.3" *Include: "H<50>2500CJ.PPD" *% Adobe Systems PostScript(R) Printer Description File *% Copyright 1987-1995 Adobe Systems Incorporated. *% All Rights Reserved. *% Permission is granted for redistribution of this file as *% long as this copyright notice is intact and the contents *% of the file is not altered in any way from its original form. *% End of Copyright statement *FormatVersion: "4.3" *FileVersion: "1.1" *LanguageEncoding: JIS83-RKSJ *LanguageVersion: Japanese *PCFileName: "HP2500CJ.PPD" *Product: "(HP DesignJet 2500CP)" *PSVersion: "(2016.104) 1" *ModelName: "HP DesignJet 2500CP" *ShortNickName: "HP DesignJet 2500CP" *NickName: "HP DesignJet 2500CP v2016.104" *Manufacturer:"HP" *Manufacturer.fr:"HP FR" *% ==== Device Capabilities =============== *LanguageLevel: "2" *Protocols:PJL TBCP *FreeVM: "7051144"/xlate this value *VMOption standard/•W€: "7051144" *VMOption 8MB: "14880600" *VMOption 16MB: "22747016" *VMOption 32MB: "38418312" *VMOption 48MB: "54138760" *FCacheSize standard/•W€: 5466830 *FCacheSize 8MB: 10340212 *FCacheSize 16MB: 15218587 *FCacheSize 32MB: 24970344 *FCacheSize 48MB: 34722100 *OpenGroup: InstallableOptions *OpenUI *InstalledMemory/ƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚郃‚ƒŠ: PickOne *DefaultInstalledMemory: standard *InstalledMemory standard/•W€: " " *InstalledMemory 8MB/24 MB ‡Œvƒƒ‚ƒŠ: " " *InstalledMemory 16MB/32 MB ‡Œvƒƒ‚ƒŠ: " " *InstalledMemory 32MB/48 MB ‡Œvƒƒ‚ƒŠ: " " *InstalledMemory 48MB/64 MB ‡Œvƒƒ‚ƒŠ: " " *?InstalledMemory: " save currentsystemparams /RamSize get 524288 div ceiling cvi 2 div /size exch def size 60 ge {(48MB)} { size 44 ge {(32MB)} { size 28 ge {(16MB)} { size 20 ge {(8MB)} { size 12 ge {(standard)} {(Unknown)} ifelse } ifelse } ifelse } ifelse } ifelse = flush restore " *End *CloseUI: *InstalledMemory *CloseGroup: InstallableOptions *Status: "PrinterError: needs attention"/Help help help *Alias legal/Legal Size Paper: *PageSize Legal *Alias.fr sous/Desous Imprimante: *InputSlot Lower *Message: "idle"/testing the idle *Message Idle: "idle option"/testing the idle option ifhp-3.5.20/UTILS/mkinstalldirs0100755000175100017510000000121110130541265016460 0ustar papowellpapowell#!/bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Last modified: 1994-03-25 # Public domain errstatus=0 for file in ${1+"$@"} ; do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d in ${1+"$@"} ; do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" 1>&2 mkdir "$pathcomp" || errstatus=$? fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here ifhp-3.5.20/UTILS/install-sh0100755000175100017510000001124310130541265015664 0ustar papowellpapowell#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. # # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" tranformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 ifhp-3.5.20/UTILS/fixupdate.in0100644000175100017510000000230610130541265016201 0ustar papowellpapowell#!@PERL@ use strict; for (@ARGV){ my($hfile,$cfile,$s,$t,$h); #print "arg '$_'\n"; $hfile = $_; ($cfile = $hfile) =~ s/.*\///; $cfile =~ s/\.h$/.c/; if( not -f $cfile ){ my @files = glob( "*/$cfile" ); if( @files > 1 ){ warn "too many matching sourc3 files - @files\n"; exit 1; } if( @files == 0 ){ warn "no matching source files\n"; next; } $cfile = $files[0]; } #print "cfile '$cfile', hfile '$hfile'\n"; if( !open( CFILE, "<$cfile") ){ warn "cannot open '$cfile'"; next; } while () { chomp; # strip record separator if (/^[A-Za-z]/ .. /^{/) { chomp; if( /{/ ){ $s .= ";\n"; $t .= $s; $s = ""; } elsif( $s ){ $s .= "\n" . $_; } else { $s = $_; } } if (/VARARGS/ .. /^{/) { chomp; if( /{/ ){ $s .= "\n;\n"; $t .= $s; $s = ""; } elsif( $s ){ $s .= "\n" . $_; } else { $s = $_; } } } close CFILE ; $t .= "\n#endif\n"; #print $t; open( HFILE, "<$hfile") or die "cannot open '$hfile'"; while( ){ $h .= $_; if( /PROTOTYPE/ ) { $h .= $t; last; } } # print $h; `cp $hfile $hfile.bak`; open( HFILE,">$hfile") or die "cannot open '$hfile'"; print HFILE $h; close HFILE; } ifhp-3.5.20/UTILS/phaser5400_snmp_mib_query0100644000175100017510000000322510130541266020511 0ustar papowellpapowell#!/usr/bin/perl -w # # usage: # check_xerox_printer lprng_device # # # Do SNMP query of Xerox printer; return necessary codes based on what we find # #BEGIN { # if ($0 =~ m/^(.*?)[\/\\]([^\/\\]+)$/) { # $runtimedir = $1; # $PROGNAME = $2; # } #} use strict; use Getopt::Long; use Net::SNMP; my $community="CSL"; $community="public"; my $timeout=5; my $retries=3; my $status_oid=".1.3.6.1.4.1.253.8.59.6.1.1.9"; $status_oid=".1.3.6.1.4.1.11.2.4.3.8"; my $error; my $response; my $session; my $status; my $complete=0; my $verbose=1; my $host; my $key; $host = $ARGV[0]; $host =~ s/\%.*//; print "Host: $host\n" if $verbose; #create the SNMP session print "Opening session to $host with PW $community, timeout $timeout and retries $retries\n" if $verbose; print "Entering while loop" if $verbose; print "Running get_table $status_oid\n" if $verbose; ($session, $error) = Net::SNMP->session(-hostname=>$host, -community=>$community, -timeout=>$timeout, -retries=>$retries); if( $error ){ print "Error: $error\n" if $verbose; exit 1; } my $attempt = 0; while(!($complete)) { print "attempt $attempt\n" if $verbose; $response = $session->get_table(($status_oid)); if ($response) { $complete=1; foreach $key (sort keys (%$response)) { print "response for $key: $response->{$key}\n" if $verbose; if ($response->{$key} ne 17) { $complete=0; } } if (!$complete) { print "Sleeping 1\n" if $verbose; sleep 1; } } else { print "No reponse, Sleeping 5\n" if $verbose; sleep 5; } } $session->close; # exit with JSUCC $status = 0; print "Exit status: 0\n" if $verbose; exit $status; ifhp-3.5.20/UTILS/sendhp.sh.in0100644000175100017510000000430110130541266016100 0ustar papowellpapowell#!/bin/sh # test script for testing ifhp.conf # variables: # ifhp - location of the ifhp file to use # - if you are testing an INSTALLED version, set this # to the location of ifhp # ifhp=@FILTER_DIR@/ifhp # installed # ifhp=./ifhp # current directory # # out - output is sent here # this can be a file or a network connection, i.e. - # port 9100 on most jetdirect or other boxes. It can even # be a bidirectional printer port. # out=10.0.0.14%9100 # network printer connection # out=/tmp/out # output to a file # # config - configuration file # this can be blank to use the @IFHP_CONF@ file # or you can specify a test configuration file. # Note that you can set the test file up with # # include /path.to.default.ifhp.conf # [ testentry ] # .... # # debug - set debug level and options # debug=0 or 1 or 2 or 3 or 4 ... you get the idea # 0 is NO debugging, 4 is extremely verboese # debug="1 database" # note the SPACE separator and quotes # debug="1 database+2" # The database flag controls debug traceing of reading # the ifhp.conf database. VERY verbose, and gets REALLY # verbose. I kinda went overboard here... # # file - input file # I usually use the UTILS/one.ps or UTILS/one.pcl file # or do 'echo hi >/tmp/hi' for a test file. # model - set the model information # yeah yeah, I know... but you have to have # model=ps # model=hp5si # # options - you set the options you want to add here # options=info=variables # options="duplex,a4" # you must have commas and quotes here # ### configure information prefix=@prefix@ exec_prefix=@exec_prefix@ sysconfdir=@sysconfdir@ mandir=@mandir@ libexecdir=@libexecdir@ FILTER_DIR=@FILTER_DIR@ ### options here #### ifhp=@FILTER_DIR@/ifhp ifhp=./ifhp out=10.0.0.14%9100 out=/tmp/out debug=0 # no debugging debug="1 database" # example of database debug=1 # simple debugging config=@IFHP_CONF@ file=/tmp/hi file=@FILTER_DIR@/UTILS/one.ps file=@FILTER_DIR@/UTILS/one.pcl options="" #model=ps model= if [ -f "$out" ] ; then cp /dev/null $out ; fi $ifhp "-Tdev=$out,trace,config=$config,debug=$debug,model=$model,$options" <$file 2>&1 | tee /tmp/log ifhp-3.5.20/UTILS/use_snmp_for_status0100644000175100017510000003077410130541266017720 0ustar papowellpapowellFrom lprng@astart2.astart.com Mon May 6 15:26:55 2002 Return-Path: Received: from astart2.astart.com (fw.private [10.0.0.1]) by h110.private (8.11.6/8.11.6) with ESMTP id g46MQt937597 for ; Mon, 6 May 2002 15:26:55 -0700 (PDT) (envelope-from lprng@astart2.astart.com) Received: (from majordom@localhost) by astart2.astart.com (8.11.6/8.11.6) id g46LgnH32721; Mon, 6 May 2002 14:42:49 -0700 (PDT) (envelope-from owner-lprng@lprng.com) Received: from thugbert.cs.wisc.edu (thugbert.cs.wisc.edu [128.105.175.114]) by astart2.astart.com (8.11.6/8.11.6) with ESMTP id g46LglJ32716 for ; Mon, 6 May 2002 14:42:47 -0700 (PDT) (envelope-from john@thugbert.cs.wisc.edu) Received: from thugbert.cs.wisc.edu (localhost [127.0.0.1]) by thugbert.cs.wisc.edu (8.9.2/8.9.2) with ESMTP id QAA23563 for ; Mon, 6 May 2002 16:42:45 -0500 (CDT) Message-Id: <200205062142.QAA23563@thugbert.cs.wisc.edu> X-Mailer: exmh version 2.5 07/13/2001 with nmh-1.0.4 To: lprng@lprng.com Subject: LPRng: Xerox Phaser 5400 and ifhp-3.5.8 Mime-Version: 1.0 Content-Type: multipart/mixed ; boundary="==_Exmh_-5061626320" Date: Mon, 06 May 2002 16:42:45 -0500 From: John Perkins Sender: owner-lprng@lprng.com Precedence: bulk Reply-To: lprng@lprng.com This is a multipart MIME message. --==_Exmh_-5061626320 Content-Type: text/plain; charset=us-ascii Now that Patrick has so kindly added hooks for calling external programs to get sync/waitend/pagecount information from a printer, I've found it's not that bad to deal with a Xerox Phaser 5400 printer. From what I've been told about the geneology of the Phaser 5400 by some of the more friendly Xerox support personel, this likely will work with the DocuPrint N??25 series printers, too. Attached is a perl script check_printer_status.pl, along with a config file check_printer_status.xml containing printer-specific information. I only use this program with a Phaser 5400; your mileage may vary with a DocuPrint. To use this program, do the following: 0. you need perl with Net::SNMP installed; go get if if you don't have it already 1. install check_printer_status.pl and config file somewhere 2. create symbolic links to it titled "check_printer_waitend.pl" and "check_printer_pagecount.pl", likely in the same directory 3. edit check_printer_status.pl: - change perl path to your perl installation path - change path to default XML config file to wherever you put yours 4. the entry for "phaser5400" in ifhp.conf should look like this: [ phaser5400 ] tc=hp4000_pcl appsocket sync=|/s/lprng-3.8/sbin/check_printer_status.pl #sync pagecount=|/s/lprng-3.8/sbin/check_printer_pagecount.pl #pagecount waitend=|/s/lprng-3.8/sbin/check_printer_waitend.pl #waitend (Again, change paths to your installation path for this script.) For large jobs, you may need to increase the lpd timeout for the printer; I haven't been able to stress-test this printer with lots of large jobs yet. If anyone uses this program for other printer models, please report back any config file changes you needed to make to get it to work... My first impression of this printer, despite Xerox support staff that won't talk to you if you have questions about anything beyond how to use their Windows printer driver, is this is a nice printer. Supports PS version 3. Looks like it is a PostScript engine with PCL 5e/6 emulator, not the other way around. Renders pages fast, too. Documents that would not print on our HP LaserJet 8000/8100's print on this printer. Time will tell how it holds up. The duplexing mechanism is interesting on this printer, much like that of the Tektronix Phaser 850: the printer will print one side of the page, send it to the output tray, then pull it back in after the paper was pushed half-way out. If the printer can render pages fast enough, it will keep 2 pages moving through the paper mechanism (two half-printed pages followed by two completed pages when in duplex mode). -- ============================================================================ John Perkins | University of Wisconsin-Madison Associate Researcher | Department of Computer Science john@cs.wisc.edu | 1210 W. Dayton St. 608-262-0438/608-262-9997 FAX | Madison, WI 53706-1685 ============================================================================ --==_Exmh_-5061626320 Content-Type: text/plain ; name="check_printer_status.xml"; charset=us-ascii Content-Description: check_printer_status.xml Content-Disposition: attachment; filename="check_printer_status.xml" --==_Exmh_-5061626320 Content-Type: text/plain ; name="check_printer_status.pl"; charset=us-ascii Content-Description: check_printer_status.pl Content-Disposition: attachment; filename="check_printer_status.pl" #! /s/perl-5.6.1/bin/perl -w # # usage: # check_printer_status # # # Do SNMP query of printer; return PJL-style information for ifhp # (must have ifhp-3.5.8a3 or newer) # # Originally written to deal with Xerox appsocket printers, but could # easily work with other printers, too. # # Symlink this printer as 3 separate names. I've used the following: # check_printer_status (status check) # check_printer_waitend (EOJ check--will spin until EOJ comes back) # check_printer_pagecount (pagecount query) # #BEGIN { # if ($0 =~ m/^(.*?)[\/\\]([^\/\\]+)$/) { # $runtimedir = $1; # $PROGNAME = $2; # } #} use strict; use Net::SNMP; use XML::Simple; use Data::Dumper; # XML config file containing printer-specific information my $xml_config="/s/lprng-3.8/common/sbin/check_printer_status.xml"; # other variables my $printcap; my $host; my $model; my $ifhp; my $error; my $response; my $status; my $pagecount; my $complete=0; my $verbose=0; my $pjl_status_code; my $display; if ($ENV{PRINTCAP_ENTRY}) { # get PRINTCAP_ENTRY $printcap = $ENV{PRINTCAP_ENTRY}; # get host from :lp PRINTCAP_ENTRY foreach (split (/:/, $printcap)) { if (/^lp=/) { $host = $_; $host =~ s/lp=//; $host =~ s/\%\S*\s*//; } if (/^ifhp=/) { $ifhp = $_; $ifhp =~ s/ifhp=//; foreach (split(/,\s/, $ifhp)) { if (/model=/) { $model = $_; $model =~ s/model=//; } } $model =~ s/\s*//g; } } } else { die("No host or model defined!\n"); } print "Host: $host\tModel: $model\n" if $verbose; # parse XML config file # slurp in all printer-specific OID info, my $ref = XMLin($xml_config, forcearray => 0); # SNMP parameters # Not sure why the following line doesn't work...I suspect something # strange in XML::Simple...Nate thinks it's in XML::Parser called from # XML::Simple. #my $community=$ref->{snmp_params}->{community}; my $community=substr($ref->{snmp_params}->{community}, 0); my $timeout=$ref->{snmp_params}->{timeout}; my $retries=$ref->{snmp_params}->{retries}; my $session; if ( $host eq "" ) { die "No printer name defined or \$PRINTER set\n"; } #print "progname: $0\n"; print Dumper($ref) if $verbose; print "SNMP params: host $host, community $community, timeout $timeout, retries $retries\n" if $verbose; ($session, $error) = Net::SNMP->session(-hostname => $host, -community => $community, -timeout => $timeout, -retries => $retries); # check status if ($0 =~ /waitend/) { if ($ref->{printerdata}->{$model}->{jobstatus_oid}) { my $jobstatus_oid=$ref->{printerdata}->{$model}->{jobstatus_oid}; my $status_ok=$ref->{printerdata}->{$model}->{status_ok}; do { if ($response) { # be nice to the network sleep 3; } print "Running get_table ($jobstatus_oid)\n" if $verbose; ($response) = $session->get_table(($jobstatus_oid)); print "jobstatus response: $response\n" if $verbose; # if we get an answer back, assume the printer job is complete and change # the flag if it is still printing; otherwise, assume the job is not done if ($response) { $complete=1; foreach (sort keys (%$response)) { print "response for $_: $response->{$_}\n" if $verbose; # Get "ok" status from XML config file if ($response->{$_} != $status_ok) { $complete=0; } } } } until ($complete); print "RESULT=OK\n"; print "waitend=1\n"; } } # check pagecount if ($0 =~ /pagecount/) { print "Running pagecount\n" if $verbose; if ($ref->{printerdata}->{$model}->{pagecount_oid} && $ref->{printerdata}->{$model}->{jobstatus_oid} ) { my $pagecount_oid=$ref->{printerdata}->{$model}->{pagecount_oid}; print "Running get_request $pagecount_oid\n" if $verbose; ($response) = $session->get_request(($pagecount_oid)); $pagecount = $response->{$pagecount_oid}; print "pagecount response: $response\tpagecount: $pagecount\n" if $verbose; print "Error: $error\n" if $verbose; if ($pagecount) { print "PAGECOUNT=$pagecount\n"; } } } # check display status if ($0 =~ /status/ && $ref->{printerdata}->{$model}->{display_oid}) { my $display_oid=$ref->{printerdata}->{$model}->{display_oid}; print "Running get_table $display_oid\n" if $verbose; $display = $session->get_request($display_oid); print "Display status fetched: $display->{$display_oid}" if $verbose; my $status = $ref->{printerdata}->{$model}->{status}; if ($status) { foreach (keys %$status) { print "Checking for $_\n" if $verbose; if ($display->{$display_oid} =~ /$_/) { $pjl_status_code = $status->{$_}; print "CODE=$pjl_status_code\n"; last; } } print "sync=1\n"; } else { print "sync=0\n"; } } # all done $session->close; # exit with JSUCC $status = 0; print "Exit status: 0\n" if $verbose; exit $status; --==_Exmh_-5061626320-- ----------------------------------------------------------------------------- YOU MUST BE A LIST MEMBER IN ORDER TO POST TO THE LPRNG MAILING LIST The address you post from MUST be your subscription address If you need help, send email to majordomo@lprng.com (or lprng-requests or lprng-digest-requests) with the word 'help' in the body. For the impatient, to subscribe to a list with name LIST, send mail to majordomo@lprng.com with: | example: subscribe LIST | subscribe lprng-digest myname@host.org unsubscribe LIST | unsubscribe lprng myname@host.org If you have major problems, send email to papowell@astart.com with the word LPRNGLIST in the SUBJECT line. ----------------------------------------------------------------------------- ifhp-3.5.20/UTILS/extract_pjl0100644000175100017510000001217310130541265016125 0ustar papowellpapowell#!/usr/bin/perl use strict; use FileHandle; use Getopt::Std; use IO::Select; use IO::Socket::INET; sub usage(){ print <{d}; $debug = 2 if $opt->{D}; $host = $opt->{h} if $opt->{h}; $port = $opt->{p} if $opt->{p}; $timeout = $opt->{t} if $opt->{t}; $verbose = 1 if $opt->{v}; if( $host ){ my $socket = IO::Socket::INET->new( PeerAddr=>$host, PeerPort=>$port, Proto=>"tcp", Type=>SOCK_STREAM) or die "could not connect to $host, port $port"; print $socket "\033%-12345X" . "\@PJL\r\n" . "\@PJL INFO VARIABLES\r\n" . "\@PJL INFO ID\r\n" . "\@PJL INFO CONFIG\r\n" . "\033%-12345X" or die "write to socket failed"; my $s = IO::Select->new(); my $in = ""; my $input; while(1){ $s->add($socket); print "starting wait, timeout $timeout\n" if $debug; my @ready = $s->can_read($timeout); print "ready '" . scalar @ready . "'\n" if $debug; last if( @ready == 0 ); my $len = sysread $socket, $input, 1024; print "Read $len\n" if $debug > 1; last if not $len; $input =~ s/[\015\014]//g; print " INPUT '$input'\n" if $debug > 1; $in .= $input; } close($socket); @lines = map( "$_\n", split("\n",$in )); } else { @lines = <> or die "No input"; } print "Input " . join("", @lines) . "\n" if $debug; if( $verbose ){ print join("", @lines); exit(0); } $inbody = 0; $outputline = ""; foreach (@lines){ chomp; s/\015//; $line = $_; print "# INPUT $_ \n" if $debug; if( /^\@PJL/ ){ if( /^\@PJL\s+INFO\s+VARIABLES/ ){ $inbody = 1; } else { $inbody = 0; } } if( not $inbody and $outputline ){ print STDERR "# Unexpected end of information\n"; print $outputline . "\n"; exit(1); } next if( not $inbody ); if ($line =~ m/^\s*([\w\s:]*)\s*=\"?([\w\.]*)\"?\s*\[([0-9]*)\s*(\w*)\s*(\w*)\]/) { # Option header if( $outputline ){ print STDERR "# Incomplete option '$outputline'\n"; exit(1); } my $typestr; my $modifierstr; ($option, $default, $numchoices, $typestr, $modifierstr) = ($1, $2, $3, $4, $5); print "# Option: '$option', Default '$default', Numchoices '$numchoices', Typestr '$typestr', Modifier '$modifierstr'\n" if $debug; if ($modifierstr eq "READONLY") { # Ignore READONLY options $numchoices = -2; print "# WARNING: Read-only option '$option', ignored!\n"; next; } $choicesfound = 0; @choices = (); my $optstr = $option; $optstr =~ s/\W/_/g; $outputline = $optstr . "="; if( $optstr ne $option ){ $optstr = "($option)"; $optstr =~ s/\s/+/g; $outputline .= $optstr; } if (($modifierstr eq "STRING") || ($typestr eq "STRING")) { $outputline .= "STRING;"; print $outputline . "\n"; $outputline = ""; $numchoices = -2; next; } if ($numchoices == 1 && $typestr eq "ENUMERATED") { # Ignore enumerated with 1 choice $numchoices = -2; print "# WARNING: enumerated option '$option' with one choice, ignored!\n"; $outputline = ""; $numchoices = -2; next; } $outputline .= "$typestr;"; } else { $choicesfound = @choices; print "# option: '$line', numchoices '$numchoices', found '$choicesfound'\n" if $debug>1; next if( $numchoices < 0 ); $line =~ s/\s//g; next if( $line eq "" ); if( not $numchoices or ($numchoices <= $choicesfound) ){ print "# Unexpected option '$line'\n"; next; } push @choices, $line; if( @choices == $numchoices ){ print $outputline . join(",",@choices). "\n"; $outputline = ""; } } } if( $outputline ){ print STDERR "# Unexpected EOF\n"; print $outputline . "\n"; exit(1); } ifhp-3.5.20/UTILS/ellipse.ps0100644000175100017510000000645410130541265015671 0ustar papowellpapowell%!PS-Adobe % Cookbook Example Program from First Printing, Revised 7 Jan 1985 % Program: Drawing an Ellipse Number: 4 %----------------------------------------------------------------------------- % /mtrx matrix def % Allocate a matrix for the save % matrix operation below. /ellipse % ellipse adds a counter-clockwise { /endangle exch def % segment of an elliptical arc to /startangle exch def % the current path. The ellipse /yrad exch def % procedure takes six operands: /xrad exch def % the x and y coordinates of the /y exch def % center of the ellipse (the /x exch def % center is defined as the point % of intersection of the major and % minor axes), the ``radius'' of % the ellipse in the x direction, % the ``radius'' of the ellipse in % the y direction, the starting % angle of the elliptical arc and % the ending angle of the % elliptical arc. % The basic strategy used in % drawing the ellipse is to % translate to the center of the % ellipse, scale the user % coordinate system by the x and y % radius values, and then add a % circular arc, centered at the % origin with a 1 unit radius to % the current path. We will be % transforming the user coordinate % system with the translate and % rotate operators to add the % elliptical arc segment but we % don't want these transformations % to affect other parts of the % program. In other words, we % would like to localize the % effect of the transformations. % Usually the gsave and grestore % operators would be ideal % candidates for this task. % Unfortunately gsave and grestore % are inappropriate for this % situation because we cannot save % the arc segment that we have % added to the path. Instead we % will localize the effect of the % transformations by saving the % current transformation matrix % and restoring it explicitly % after we have added the % elliptical arc to the path. /savematrix mtrx currentmatrix def % Save the current transformation. x y translate % Translate to the center of the % ellipse. xrad yrad scale % Scale by the x and y radius % values. 0 0 1 startangle endangle arc % Add the arc segment to the path. savematrix setmatrix % Restore the transformation. } def newpath 144 400 72 144 0 360 ellipse stroke % Full ellipse, stroked. Note that % the y-axis is longer than the % x-axis. newpath 400 400 144 36 0 360 ellipse fill % Full ellipse, filled. Note that % the y-axis is shorter than the % x-axis. newpath 300 180 144 72 30 150 ellipse % Elliptical arc, stroked. stroke newpath 480 150 30 50 270 90 ellipse fill % Elliptical arc, filled. showpage ifhp-3.5.20/UTILS/accounting.sh.in0100644000175100017510000000326510130541265016760 0ustar papowellpapowell#!@SHELL@ # Patrick Powell Sun Sep 3 11:23:22 PDT 1995 # LPRng #= File: = #= accounting.sh = #= = #= Synopsis: = #This program is called at the completion of printing a job by the OF #filter. The accounting file will hold information about the #completion of a job. The accounting file will have the following #format: # #start -qpid -kcontrolfile -nlogin -hhost -Pprinter \ # -ppagecounter -Fformt -Ttime #end -bpages -qpid -kcontrolfile -nlogin -hhost -Pprinter \ # -ppagecounter -Ffmt -Ttime # #The accounting program will be called with the following parameters # #program -bpages -qpid -kcontrolfile \ # -nlogin -hhost -Pprinter -ppagecounter -Fformt '-Ttime' accoutingfile PATH=/bin:/usr/bin:/usr/local/bin export PATH pages= pid= controlfile= login= host= printer= pagecounter= format= elapsed= time= accountingfile= echo $0 $* 1>&2 while [ $# != 0 ]; do case "$1" in -b* ) pages=`echo "$1" | sed s/..//` ;; -q* ) pid=`echo "$1" | sed s/..//` ;; -k* ) controlfile=`echo "$1" | sed s/..//` ;; -n* ) login=`echo "$1" | sed s/..//` ;; -h* ) host=`echo "$1" | sed s/..//` ;; -P* ) printer=`echo "$1" | sed s/..//` ;; -p* ) pagecounter=`echo "$1" | sed s/..//` ;; -F* ) format=`echo "$1" | sed s/..//` ;; -Z* ) zoption=`echo "$1" | sed s/..//'`;; -T* ) time=`echo "$1" | sed 's/..//'` ;; -* ) ;; * ) accountingfile=$1;; esac; shift; done echo Dummy Accounting Script pagecount=\'$pages\' pagecounter=\'$pagecounter\' 1>&2 ifhp-3.5.20/UTILS/Watermarks0100644000175100017510000001737110130541265015733 0ustar papowellpapowell-------- VERSION 1 Date: Mon, 11 Mar 2002 22:02:06 -0800 From: Stuart Marshall Subject: Re: LPRng: Inserting a watermark Hi, I have the following in a .tex file: %-------- specials to put DRAFT across the page \special{!userdict begin /bop-hook{gsave 200 30 translate 65 rotate /Times-Roman findfont 216 scalefont setfont 0 0 moveto 0.9 setgray (DRAFT) show grestore}def end} As long as you are sending postscript to the printer, I think some variant on that will do what you want. Obviously you'll want to do something smaller than a bit "DRAFT" diagonally across the page. hope that helps, Stuart ----------- VERSION2 From: Rick Cochran [mailto:rcc2@cornell.edu] Sent: Friday, November 07, 2003 2:26 PM To: Darin Stephenson Cc: Michael Q. Hojnowski Subject: Cornell LPRng needs Darin and Patrick, As promised, I have attached the relevant code for the watermark. The code snippit at the begining is what determines where the PostScript gets inserted (depends on printer model). This code is part of my final "if". Not pretty, but that's life. Saves us printing about a million banner pages per year. Yours, -Rick -- |Rick Cochran phone: 607-255-7618| |Cornell CIT - Systems & Operations - Net-Print FAX: 607-255-8521| |730 Rhodes Hall, Ithaca, N.Y. 14853 email: rcc2@cornell.edu| ############################################################################ # Copyright (c) 2003 by Cornell University. All rights reserved. # # Permission to use and redistribute this software is granted with the # following two conditions: # # This Copyright notice must be retained in the code. # # The user or redistributor understands that this software is being # provided "as is," without any express or implied warranties, including, # without limitation, the implied warranties of merchantability and # fitness for a particular purpose. ############################################################################ ... # Print watermark or banner page if required my($banner_printed) = 0; if ( $qinfo->{banner} eq 'Y' ) { if ( $ainfo->{banner} eq 'W' ) { if ( not ($qinfo->{model} =~ /^Lexmark/) ) { $line = find_line('^%%EndSetup', $PRINT); sockwrite($line); my_log_line($qname, $lineno, $line); } print_watermark($ainfo, $jobinfo); } else { print_banner($dbh, $qinfo, $ainfo, $jobinfo, { 'errno' => 0 }, undef); $banner_printed++; } } ... ############################################################################ # Print a watermark prolog sub print_watermark { my($ainfo, $jobinfo) = @_; my($netid) = psclean($ainfo->{usernetid}); my($queued_time_display) = psclean($jobinfo->{queued_time_display}); my($jobname) = psclean($jobinfo->{name}); # start ps file my($b) = ''; $b .= "%%BeginNetPrintWatermark\n"; # EndPage is called at the begining of showpage, copypage and setpagedevice. # It is also called at a few other times. For complete details see pages # 251-255 of the Red Book 2nd edition. # # It is passed two integers on the the stack (which it is expected to consume): # # of executions of 'showpage' (starting with 0) # who called: 0 => showpage; 1 => copypage; 2 => setpagedevice # It should generate a boolean which indictaes whether the current page should # be rasterized (true) or erased (false). # The Bad News: The Lexmark EndPage operator _doesn't check for # setpagedevice_. Therefore, if we define our EndPage while theirs is # defined, the 'setpagedevice' causes the Lexmark EndPage to execute once, # creating a blank page. # The Worse News: 'EndPage' is a _special_ name in the currentpagedevice # dictionary. If we try renaming the definition to 'OldEndPage', it disappears # without a trace when 'setpagedevice' is executed. # Even Worse News: The Lexmark EndPage operator seems to need to be called even # if the caller code is neither 0 nor 1. # Sad News: Because of its poor design, the 'setpagedevice' which defines the # Lexmark EndPage operator must be the very last 'setpagedevice' in the code. # Therefore, it may occur in the page 1 preamble instead of the document # preamble. # There is similar Bad News for HP - especially using the Adobe driver. If our # EndPage code is placed after a particular piece of driver code, it will # cause a blank page to be printed. Also, HP has its own watermark code which # is implemented as a 'Feature' in its PPD files. This will supersede our # watermark. # Conclusions: # We put the watermark code at the begining for Lexmark queues and after # '%%EndSetup' for HP (and other) queues. # It is simply too complicated to try to fix the Lexmark driver N-up/watermark # problem. If people _must_ use the Lexmark driver, then they will not get # watermarks on N-up output. $b .= "<<\n"; $b .= " /EndPage\n"; $b .= " {\n"; # On stack: (#showpages) (code) # Duplicate EndPage arguments $b .= " 2 copy\n"; $b .= " dup 0 eq exch 1 eq or exch 0 eq and\n"; # (showpage or copypage) and (page == 0) $b .= " {\n"; $b .= " save\n"; # Create a dictionary large enough to hold our operators $b .= " 10 dict begin\n"; $b .= " /rvideo { currentpoint 1 sub 2 index stringwidth pop 6 0 setgray rectfill 1 setgray show 0 setgray } bind def\n"; $b .= " initmatrix\n"; # Get printable area $b .= " initclip clippath pathbbox /ymax exch def /xmax exch def /ymin exch def /xmin exch def\n"; $b .= " /fontsize 6 def\n"; # Next line moves to top of page $b .= " /ymin ymax fontsize sub 1 sub def\n"; $b .= " /ybase ymin 2 add def\n"; $b .= " initclip\n"; $b .= " 1 setgray xmin ymin xmax fontsize 1 add rectfill 0 setgray\n"; $b .= " xmin ybase moveto\n"; $b .= " /TimesNewRoman-BoldItalic findfont [8 0 0 6 0 0] makefont setfont\n"; $b .= " ( Net-Print ) rvideo\n"; $b .= " xmax ( Net-Print ) stringwidth pop sub ybase moveto\n"; $b .= " ( Net-Print ) rvideo\n"; $b .= " 64 ybase moveto\n"; $b .= " /Helvetica-Bold findfont fontsize scalefont setfont \n"; $b .= " ( $netid ) rvideo\n"; $b .= " 100 ybase moveto\n"; $b .= " ( $jobname) show\n"; $b .= " 527 ybase moveto\n"; $b .= " ( $queued_time_display) show\n"; $b .= " end\n"; $b .= " restore\n"; $b .= " } if\n"; # A simple EndPage operator. $b .= " exch pop dup 0 eq exch 1 eq or\n"; $b .= " }\n"; $b .= ">> setpagedevice\n"; $b .= "%%EndNetPrintWatermark\n"; sockwrite($b); } --------------- VERSION 3 This goes in a PPD file so you can use the Watermark with Foomatic-RIP See the notes about StartPage and EndPage *DefaultWatermark: True *OrderDependency: 99 PaeeSetup *Watermark *Watermark True: " << /EndPage { 2 copy dup 0 eq exch 1 eq or exch 0 eq and { save 10 dict begin /rvideo { currentpoint 1 sub 2 index stringwidth pop 6 0 setgray rectfill 1 setgray show 0 setgray } bind def initmatrix initclip clippath pathbbox /ymax exch def /xmax exch def /ymin exch def /xmin exch def /fontsize 6 def /ymin ymax fontsize sub 1 sub def /ybase ymin 2 add def initclip 1 setgray xmin ymin xmax fontsize 1 add rectfill 0 setgray xmin ybase moveto /TimesNewRoman-BoldItalic findfont [8 0 0 6 0 0] makefont setfont ( Net-Print ) rvideo xmax ( Net-Print ) stringwidth pop sub ybase moveto ( Net-Print ) rvideo 64 ybase moveto /Helvetica-Bold findfont fontsize scalefont setfont ( \%s{cmd.P} \%s{cmd.L} ) rvideo 100 ybase moveto ( \%s{cmd.J} ) show 527 ybase moveto ( \%s{DATE} ) show end restore } if exch pop dup 0 eq exch 1 eq or } >> setpagedevice *End ifhp-3.5.20/UTILS/400095.ppd0100644000175100017510000010153010130541265015125 0ustar papowellpapowell*PPD-Adobe: "4.3" *% ========================================= *% Disclaimer: The above statement indicates *% that this PPD was written using the Adobe PPD *% File Format Specification 4.3, but does not *% intend to imply approval and acceptance by *% Adobe Systems, Inc. *% ========================================= *% Copyright 1992-97 Hewlett-Packard Company *% PPD for HP LaserJet 4000 *% For Windows 95 only *% August 8, 1997 *% Release Candidate 1 *% ========================================= *% Version 0.92 *% 1. Updated query code from Mac PPDs. *% 2. Copied Adobe disclaimer from Mac PPDs. *% 3. Changed throughput back to 17. *% 4. Added more Installed Memory options. *% 5. Updated JCLEnd code. *% 6. Updated font version numbers for Bookman fonts. *% Version 0.94 (skipped 0.93 to synch up with Win3.1) *% 1. Updated Memory and FreeVM numbers from NT PPDs. *% 2. Updated Halftone code from NT PPDs. *% Version 0.95 *% 1. Added DeferredMediaSelection true to custom page size code. *%=== PPD File Version Information ========= *FileVersion: "0.95" *FormatVersion: "4.3" *LanguageEncoding: ISOLatin1 *LanguageVersion: English *PCFileName: "HP4000_4.PPD" *%=== Product Information ================== *ModelName: "HP LaserJet 4000 Series" *ShortNickName: "HP LaserJet 4000 Series PS" *NickName: "HP LaserJet 4000 Series PS" *Product: "(HP LaserJet 4000 Series)" *Manufacturer: "HP" *PSVersion: "(2014.108) 1" *%=== Device Capabilities ================== *ColorDevice: False *DefaultColorSpace: Gray/translate Gray to Grey *FileSystem: True *?FileSystem: " save false (%disk?%) { currentdevparams dup /Writeable known { /Writeable get {pop true} if } { pop } ifelse } 100 string /IODevice resourceforall {(True)}{(False)} ifelse = flush restore " *End *LanguageLevel: "2" *Throughput: "17" *TTRasterizer: Type42 *?TTRasterizer: " save 42 /FontType resourcestatus { pop pop (Type42)} {pop pop (None)} ifelse = flush restore " *End *Protocols: PJL TBCP *VariablePaperSize: True *SuggestedJobTimeout: "0" *SuggestedWaitTimeout: "120" *PrintPSErrors: True *% This is added to fix Pagemaker and Quark Xpress bugs. *DefaultResolution: 600x600dpi *%=== JCL Features ========================== *JCLBegin: "<1B>%-12345X@PJL JOB<0A>" *JCLToPSInterpreter: "@PJL ENTER LANGUAGE = POSTSCRIPT <0A>" *JCLEnd: "<1B>%-12345X@PJL EOJ<0A>" *JCLOpenUI *JCLResolution/Resolution: PickOne *OrderDependency: 10 JCLSetup *JCLResolution *DefaultJCLResolution: 600x600dpi *JCLResolution 300x300dpi/300 dpi: "@PJL SET RESOLUTION = 300<0A>" *JCLResolution 600x600dpi/600 dpi: "@PJL SET RESOLUTION = 600<0A>" *JCLResolution 1200x1200dpi/ProRes 1200: "@PJL SET RESOLUTION = 1200<0A>" *JCLCloseUI: *JCLResolution *JCLOpenUI *JCLEconomode/EconoMode: PickOne *OrderDependency: 10 JCLSetup *JCLEconomode *DefaultJCLEconomode: PrinterDefault *JCLEconomode PrinterDefault/Printer's Current Setting: "" *JCLEconomode Off/Highest Quality: "@PJL SET ECONOMODE = OFF<0A>" *JCLEconomode On/Save Toner: "@PJL SET ECONOMODE = ON<0A>" *JCLCloseUI: *JCLEconomode *%=== Installable Options ========================== *OpenGroup: InstallableOptions/Installed Options *OpenUI *Option1/Tray 3: Boolean *DefaultOption1: False *Option1 True/Installed: "" *Option1 False/Not Installed: "" *?Option1: " save currentpagedevice /InputAttributes get dup 1 known {1 get null ne {(True)}{(False)} ifelse} {pop (False)} ifelse = flush restore " *End *CloseUI: *Option1 *OpenUI *Option2/Tray 4: Boolean *DefaultOption2: False *Option2 True/Installed: "" *Option2 False/Not Installed: "" *?Option2: " save currentpagedevice /InputAttributes get dup 4 known {4 get null ne {(True)}{(False)} ifelse} {pop (False)} ifelse = flush restore " *End *CloseUI: *Option2 *OpenUI *Option3/Duplex Unit: Boolean *DefaultOption3: False *Option3 True/Installed: "" *Option3 False/Not Installed: "" *?Option3: " save currentpagedevice /Duplex known {(True)}{(False)}ifelse = flush restore " *End *CloseUI: *Option3 *OpenUI *Option4/Printer Hard Disk: Boolean *DefaultOption4: False *Option4 True/Installed: "" *Option4 False/Not Installed: "" *?Option4: " save false (%disk?%) { currentdevparams dup /Writeable known { /Writeable get {pop true} if } { pop } ifelse } 100 string /IODevice resourceforall {(True)}{(False)} ifelse = flush restore " *End *CloseUI: *Option4 *OpenUI *Option5/Envelope Feeder: Boolean *DefaultOption5: False *Option5 True/Installed: "" *Option5 False/Not Installed: "" *?Option5: " save currentpagedevice /InputAttributes get 2 get null ne {(True)}{(False)} ifelse = flush restore " *End *CloseUI: *Option5 *OpenUI *InstalledMemory/Total Memory: PickOne *DefaultInstalledMemory: 4MB *InstalledMemory 4MB/4 - 7 MB: "" *InstalledMemory 8MB/8 - 11 MB: "" *InstalledMemory 12MB/12 - 19 MB: "" *InstalledMemory 20MB/20 - 27 MB: "" *InstalledMemory 28MB/28 - 35 MB: "" *InstalledMemory 36MB/36 MB or more: "" *?InstalledMemory: " save currentsystemparams /RamSize get 524288 div ceiling cvi 2 div /size exch def size 36 ge {(36MB)} {size 28 ge {(28MB)} {size 20 ge {(20MB)} {size 12 ge {(12MB)} {size 8 ge {(8MB)} {(4MB)} ifelse } ifelse } ifelse } ifelse } ifelse = flush restore " *End *CloseUI: *InstalledMemory *CloseGroup: InstallableOptions *FreeVM: "2200000" *VMOption 4MB/4 - 7 MB: "2200000" *VMOption 8MB/8 - 11 MB: "6000000" *VMOption 12MB/12 - 19 MB: "9400000" *VMOption 20MB/20 - 27 MB: "17000000" *VMOption 28MB/28 - 35 MB: "24500000" *VMOption 36MB/36 MB or more: "32000000" *%=== UI Constraints ============================= *% If A than not B *UIConstraints: *Option1 False *InputSlot Lower *UIConstraints: *Option2 False *InputSlot LargeCapacity *UIConstraints: *Option3 False *Duplex DuplexNoTumble *UIConstraints: *Option3 False *Duplex DuplexTumble *UIConstraints: *Option4 False *Collate True *UIConstraints: *Option5 False *InputSlot Envelope *UIConstraints: *JCLResolution 1200dpi *HPHalftone Standard *% Don't allow these paper sizes/types in the Envelope Feeder *UIConstraints: *PageSize Letter *InputSlot Envelope *UIConstraints: *PageSize Legal *InputSlot Envelope *UIConstraints: *PageSize Executive *InputSlot Envelope *UIConstraints: *PageSize A4 *InputSlot Envelope *UIConstraints: *PageSize A5 *InputSlot Envelope *UIConstraints: *PageSize B5 *InputSlot Envelope *UIConstraints: *MediaType Transparency *InputSlot Envelope *UIConstraints: *PageRegion Letter *InputSlot Envelope *UIConstraints: *PageRegion Legal *InputSlot Envelope *UIConstraints: *PageRegion Executive *InputSlot Envelope *UIConstraints: *PageRegion A4 *InputSlot Envelope *UIConstraints: *PageRegion A5 *InputSlot Envelope *UIConstraints: *PageRegion B5 *InputSlot Envelope *% Don't allow envelopes or transparencies in Tray 2 *UIConstraints: *PageSize Env10 *InputSlot Middle *UIConstraints: *PageSize EnvMonarch *InputSlot Middle *UIConstraints: *PageSize EnvDL *InputSlot Middle *UIConstraints: *PageSize EnvC5 *InputSlot Middle *UIConstraints: *MediaType Transparency *InputSlot Middle *UIConstraints: *PageRegion Env10 *InputSlot Middle *UIConstraints: *PageRegion EnvMonarch *InputSlot Middle *UIConstraints: *PageRegion EnvDL *InputSlot Middle *UIConstraints: *PageRegion EnvC5 *InputSlot Middle *% Don't allow envelopes or transparencies in Tray 3 *UIConstraints: *PageSize Env10 *InputSlot Lower *UIConstraints: *PageSize EnvMonarch *InputSlot Lower *UIConstraints: *PageSize EnvDL *InputSlot Lower *UIConstraints: *PageSize EnvC5 *InputSlot Lower *UIConstraints: *MediaType Transparency *InputSlot Lower *UIConstraints: *PageRegion Env10 *InputSlot Lower *UIConstraints: *PageRegion EnvMonarch *InputSlot Lower *UIConstraints: *PageRegion EnvDL *InputSlot Lower *UIConstraints: *PageRegion EnvC5 *InputSlot Lower *% Don't allow envelopes or transparencies in Tray 4 *UIConstraints: *PageSize Env10 *InputSlot LargeCapacity *UIConstraints: *PageSize EnvMonarch *InputSlot LargeCapacity *UIConstraints: *PageSize EnvDL *InputSlot LargeCapacity *UIConstraints: *PageSize EnvC5 *InputSlot LargeCapacity *UIConstraints: *MediaType Transparency *InputSlot LargeCapacity *UIConstraints: *PageRegion Env10 *InputSlot LargeCapacity *UIConstraints: *PageRegion EnvMonarch *InputSlot LargeCapacity *UIConstraints: *PageRegion EnvDL *InputSlot LargeCapacity *UIConstraints: *PageRegion EnvC5 *InputSlot LargeCapacity *% Don't allow A5, envelopes, transparencies or labels to be duplexed *UIConstraints: *PageSize A5 *Duplex DuplexNoTumble *UIConstraints: *PageSize Env10 *Duplex DuplexNoTumble *UIConstraints: *PageSize EnvMonarch *Duplex DuplexNoTumble *UIConstraints: *PageSize EnvDL *Duplex DuplexNoTumble *UIConstraints: *PageSize EnvC5 *Duplex DuplexNoTumble *UIConstraints: *PageSize EnvISOB5 *Duplex DuplexNoTumble *UIConstraints: *MediaType Transparency *Duplex DuplexNoTumble *UIConstraints: *MediaType Labels *Duplex DuplexNoTumble *UIConstraints: *PageRegion A5 *Duplex DuplexNoTumble *UIConstraints: *PageRegion Env10 *Duplex DuplexNoTumble *UIConstraints: *PageRegion EnvMonarch *Duplex DuplexNoTumble *UIConstraints: *PageRegion EnvDL *Duplex DuplexNoTumble *UIConstraints: *PageRegion EnvC5 *Duplex DuplexNoTumble *UIConstraints: *PageRegion EnvISOB5 *Duplex DuplexNoTumble *UIConstraints: *PageSize A5 *Duplex DuplexTumble *UIConstraints: *PageSize Env10 *Duplex DuplexTumble *UIConstraints: *PageSize EnvMonarch *Duplex DuplexTumble *UIConstraints: *PageSize EnvDL *Duplex DuplexTumble *UIConstraints: *PageSize EnvC5 *Duplex DuplexTumble *UIConstraints: *PageSize EnvISOB5 *Duplex DuplexTumble *UIConstraints: *MediaType Transparency *Duplex DuplexTumble *UIConstraints: *MediaType Labels *Duplex DuplexTumble *UIConstraints: *PageRegion A5 *Duplex DuplexTumble *UIConstraints: *PageRegion Env10 *Duplex DuplexTumble *UIConstraints: *PageRegion EnvMonarch *Duplex DuplexTumble *UIConstraints: *PageRegion EnvDL *Duplex DuplexTumble *UIConstraints: *PageRegion EnvC5 *Duplex DuplexTumble *UIConstraints: *PageRegion EnvISOB5 *Duplex DuplexTumble *% These don't work with the 4.0 driver. *% Duplicate UIConstraints are provided for backwards compatibility. *NonUIConstraints: *CustomPageSize True *Duplex DuplexNoTumble *NonUIConstraints: *CustomPageSize True *Duplex DuplexTumble *NonUIConstraints: *CustomPageSize True *InputSlot Envelope *UIConstraints: *CustomPageSize True *DuplexNoTumble *UIConstraints: *CustomPageSize True *DuplexTumble *UIConstraints: *CustomPageSize True *InputSlot Envelope *%=== Fit to Page ========================== *OpenUI *HPPaperPolicy/Fit to Page: PickOne *OrderDependency: 10 AnySetup *HPPaperPolicy *DefaultHPPaperPolicy: PromptUser *HPPaperPolicy PromptUser/Prompt User: " <> setpagedevice" *End *HPPaperPolicy NearestSizeAdjust/Nearest Size and Scale: " <> >> setpagedevice" *End *HPPaperPolicy NearestSizeNoAdjust/Nearest Size and Crop: " <> >> setpagedevice" *End *CloseUI: *HPPaperPolicy *%=== Paper Sizes ================= *OpenUI *PageSize: PickOne *OrderDependency: 30 AnySetup *PageSize *DefaultPageSize: Letter *PageSize Letter/Letter: " <> setpagedevice" *End *PageSize Legal/Legal: " <> setpagedevice" *End *PageSize Executive/Executive: " <> setpagedevice" *End *PageSize A4/A4: " <> setpagedevice" *End *PageSize A5/A5: " <> setpagedevice" *End *PageSize B5/B5 (JIS): " <> setpagedevice" *End *PageSize Env10/Com-10: " <> setpagedevice" *End *PageSize EnvMonarch/Monarch: " <> setpagedevice" *End *PageSize EnvDL/DL: " <> setpagedevice" *End *PageSize EnvC5/C5: " <> setpagedevice" *End *PageSize EnvISOB5/B5 (ISO): " <> setpagedevice" *End *?PageSize: " save currentpagedevice /PageSize get aload pop 2 copy gt {exch} if (Unknown) 11 dict dup [499 709] (EnvISOB5) put dup [312 624] (EnvDL) put dup [459 649] (EnvC5) put dup [279 540] (EnvMonarch) put dup [297 684] (Env10) put dup [516 729] (B5) put dup [420 595] (A5) put dup [595 842] (A4) put dup [522 756] (Executive) put dup [612 1008] (Legal) put dup [612 792] (Letter) put { exch aload pop 4 index sub abs 5 le exch 5 index sub abs 5 le and {exch pop exit} {pop} ifelse } bind forall = flush pop pop restore " *End *CloseUI: *PageSize *OpenUI *PageRegion: PickOne *OrderDependency: 40 AnySetup *PageRegion *DefaultPageRegion: Letter *PageRegion Letter/Letter: " <> setpagedevice" *End *PageRegion Legal/Legal: " <> setpagedevice" *End *PageRegion Executive/Executive: " <> setpagedevice" *End *PageRegion A4/A4: " <> setpagedevice" *End *PageRegion A5/A5: " <> setpagedevice" *End *PageRegion B5/B5 (JIS): " <> setpagedevice" *End *PageRegion Env10/Com-10: " <> setpagedevice" *End *PageRegion EnvMonarch/Monarch: " <> setpagedevice" *End *PageRegion EnvDL/DL: " <> setpagedevice" *End *PageRegion EnvC5/C5: " <> setpagedevice" *End *PageRegion EnvISOB5/B5 (ISO): " <> setpagedevice" *End *CloseUI: *PageRegion *DefaultImageableArea: Letter *ImageableArea Letter/Letter: "12.24 12.06 599.76 780.06" *ImageableArea Legal/Legal: "12.24 12.06 599.76 996.06" *ImageableArea Executive/Executive: "13.32 12.06 508.68 744.06" *ImageableArea A4/A4: "13.44 12.06 581.76 829.74" *ImageableArea A5/A5: "12.00 12.00 408.00 583.00" *ImageableArea B5/B5 (JIS): "12.50 12.50 503.50 716.50" *ImageableArea Env10/Com-10: "12.12 12.06 284.76 672.06" *ImageableArea EnvMonarch/Monarch: "12.72 12.06 266.16 528.06" *ImageableArea EnvDL/DL: "13.80 12.06 297.96 611.58" *ImageableArea EnvC5/C5: "12.60 12.06 446.52 637.02" *ImageableArea EnvISOB5/B5 (ISO): "13.20 12.06 485.52 696.54" *?ImageableArea: " save /cvp { ( ) cvs print ( ) print } bind def /upperright {10000 mul floor 10000 div} bind def /lowerleft {10000 mul ceiling 10000 div} bind def newpath clippath pathbbox 4 -2 roll exch 2 {lowerleft cvp} repeat exch 2 {upperright cvp} repeat flush restore " *End *DefaultPaperDimension: Letter *PaperDimension Letter/Letter: "612 792" *PaperDimension Legal/Legal: "612 1008" *PaperDimension Executive/Executive: "522 756" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension B5/B5 (JIS): "516 729" *PaperDimension Env10/Com-10: "297 684" *PaperDimension EnvMonarch/Monarch: "279 540" *PaperDimension EnvDL/DL: "312 624" *PaperDimension EnvC5/C5: "459 649" *PaperDimension EnvISOB5/B5 (ISO): "499 709" *LandscapeOrientation: Plus90 *%=== Media Type =========================== *OpenUI *MediaType/Media Type: PickOne *OrderDependency: 20 AnySetup *MediaType *DefaultMediaType: None *MediaType None/None: " <> setpagedevice" *End *MediaType Plain/Plain: " <> setpagedevice" *End *MediaType Preprinted/Preprinted: " <> setpagedevice" *End *MediaType Letterhead/Letterhead: " <> setpagedevice" *End *MediaType Transparency/Transparency: " <> setpagedevice" *End *MediaType Prepunched/Prepunched: " <> setpagedevice" *End *MediaType Labels/Labels: " <> setpagedevice" *End *MediaType Bond/Bond: " <> setpagedevice" *End *MediaType Recycled/Recycled: " <> setpagedevice" *End *MediaType Color/Color: " <> setpagedevice" *End *MediaType Cardstock/Card Stock: " <> setpagedevice" *End *MediaType Rough/Rough: " <> setpagedevice" *End *?MediaType: " save currentpagedevice /InputAttributes get dup /Priority get 0 get get /MediaType get (Rough) anchorsearch {pop pop (Rough)} if = flush restore " *End *CloseUI: *MediaType *%=== Custom Paper Support ================= *%Orientation and Margin (offsets) values are not utilized *MaxMediaWidth: "612" *MaxMediaHeight: "1008" *HWMargins: 16 16 16 16 *CustomPageSize True: " pop pop pop <> setpagedevice " *End *ParamCustomPageSize Width: 1 points 216 612 *ParamCustomPageSize Height: 2 points 360 1008 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *RequiresPageRegion All: True *%=== Paper Sources ==================== *OpenUI *InputSlot: PickOne *OrderDependency: 20 AnySetup *InputSlot *DefaultInputSlot: Middle *InputSlot Upper/Tray 1: " <> setpagedevice" *End *InputSlot ManualFeed/Tray 1 (Manual): " <> setpagedevice" *End *InputSlot Middle/Tray 2: " <> setpagedevice" *End *InputSlot Lower/Tray 3: " <> setpagedevice" *End *InputSlot LargeCapacity/Tray 4: " <> setpagedevice" *End *InputSlot Envelope/Envelope Feeder: " <> setpagedevice" *End *?InputSlot: " save currentpagedevice /InputAttributes get /Priority get aload pop pop pop pop [(Middle) (Lower) (Envelope) (Upper) (LargeCapacity)] exch get = flush restore " *End *CloseUI: *InputSlot *%=== Halftone Information ================= *ScreenFreq: "85.0" *ScreenAngle: "45.0" *ResScreenFreq 300x300dpi/300 dpi: "60.0" *ResScreenAngle 300x300dpi/300 dpi: "45.0" *ResScreenFreq 600x600dpi/600 dpi: "85.0" *ResScreenAngle 600x600dpi/600 dpi: "45.0" *DefaultHalftoneType: 9 *AccurateScreensSupport: False *OpenUI *HPHalftone/Levels of Gray: PickOne *OrderDependency: 10 DocumentSetup *HPHalftone *DefaultHPHalftone: PrinterDefault *HPHalftone PrinterDefault/Printer's Current Setting: "" *HPHalftone Enhanced/Enhanced: " << /Install { currentpagedevice /HWResolution get dup 0 get 600 eq exch 1 get 600 eq and { /EnhancedColorRendering600 } { /EnhancedColorRendering } ifelse /ColorRendering findresource setcolorrendering /EnhancedHalftone /Halftone findresource sethalftone { } settransfer false setstrokeadjust } >> setpagedevice currentpagedevice /HWResolution get dup 0 get 600 eq exch 1 get 600 eq and { << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 0 /Type 8 >> >> setpagedevice } if /setscreen { pop pop pop } def /setcolorscreen { pop pop pop pop pop pop pop pop pop pop pop pop } def /sethalftone { pop } def " *End *HPHalftone Standard/Standard: " currentpagedevice /HWResolution get 0 get 1200 ne currentpagedevice /PreRenderingEnhance known {currentpagedevice /PreRenderingEnhance get not and} if { << /Install { currentpagedevice /HWResolution get dup 0 get 600 eq exch 1 get 600 eq and dup currentpagedevice /PostRenderingEnhance get currentpagedevice /PostRenderingEnhanceDetails get /REValue get 0 ne and { {/DefaultColorRenderingRE600} {/DefaultColorRenderingRE} ifelse} { {/DefaultColorRendering600} {/DefaultColorRendering} ifelse} ifelse /ColorRendering findresource setcolorrendering { /DefaultHalftone600 } {/DefaultHalftone} ifelse /Halftone findresource sethalftone {} settransfer false setstrokeadjust } >> setpagedevice currentpagedevice /HWResolution get dup 0 get 600 eq exch 1 get 600 eq and { << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 0 /Type 8 >> >> setpagedevice } if } if " *End *?HPHalftone: " save currenthalftone /HalftoneType get 9 eq {(Enhanced)} {(Standard)} ifelse = flush restore " *End *CloseUI: *HPHalftone *%=== Duplex ==================================== *OpenUI *Duplex/Duplex: PickOne *OrderDependency: 50 AnySetup *Duplex *DefaultDuplex: None *Duplex None/Off (1-Sided): " <> setpagedevice" *End *Duplex DuplexNoTumble/Flip on Long Edge (Standard): " <> setpagedevice" *End *Duplex DuplexTumble/Flip on Short Edge: " <> setpagedevice" *End *?Duplex: " save currentpagedevice /Duplex known false ne { currentpagedevice /Duplex get { currentpagedevice /Tumble get {(DuplexTumble)}{(DuplexNoTumble)}ifelse } { (None)} ifelse }{(None)} ifelse = flush restore " *End *CloseUI: *Duplex *%=== Resolution Enhancement ======================== *OpenUI *Smoothing/Resolution Enhancement: PickOne *OrderDependency: 20 DocumentSetup *Smoothing *DefaultSmoothing: PrinterDefault *Smoothing PrinterDefault/Printer's Current Setting: "" *Smoothing On/On: " << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 2 /Type 8 >> >> setpagedevice" *End *Smoothing Off/Off: " << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 0 /Type 8 >> >> setpagedevice" *End *?Smoothing: " save currentpagedevice /PostRenderingEnhanceDetails get /REValue get [(Off) (On) (On) (On)] exch get print restore " *End *CloseUI: *Smoothing *% === Enable/Disable Collate via PostScript ========== *OpenUI *Collate/Collate: Boolean *OrderDependency: 20 AnySetup *Collate *DefaultCollate: False *Collate True/On (turn off in application): " <> setpagedevice" *End *Collate False/Off: " <> setpagedevice" *End *?Collate: " save currentpagedevice /Collate get {(True)}{(False)}ifelse = flush restore " *End *CloseUI: *Collate *DefaultTransfer: Null *Transfer Null: "{ }" *Transfer Null.Inverse: "{ 1 exch sub }" *%=== Color Control ======================== *DefaultColorSep: ProcessBlack.85lpi.600dpi *InkName: ProcessBlack/Process Black *InkName: CustomColor/Custom Color *InkName: ProcessCyan/Process Cyan *InkName: ProcessMagenta/Process Magenta *InkName: ProcessYellow/Process Yellow *% For 60 lpi / 300 dpi =============================== *ColorSepScreenAngle ProcessBlack.60lpi.300x300dpi/60 lpi / 300 dpi: "45" *ColorSepScreenAngle CustomColor.60lpi.300x300dpi/60 lpi / 300 dpi: "45" *ColorSepScreenAngle ProcessCyan.60lpi.300x300dpi/60 lpi / 300 dpi: "15" *ColorSepScreenAngle ProcessMagenta.60lpi.300x300dpi/60 lpi / 300 dpi: "75" *ColorSepScreenAngle ProcessYellow.60lpi.300x300dpi/60 lpi / 300 dpi: "0" *ColorSepScreenFreq ProcessBlack.60lpi.300x300dpi/60 lpi / 300 dpi: "60" *ColorSepScreenFreq CustomColor.60lpi.300x300dpi/60 lpi / 300 dpi: "60" *ColorSepScreenFreq ProcessCyan.60lpi.300x300dpi/60 lpi / 300 dpi: "60" *ColorSepScreenFreq ProcessMagenta.60lpi.300x300dpi/60 lpi / 300 dpi: "60" *ColorSepScreenFreq ProcessYellow.60lpi.300x300dpi/60 lpi / 300 dpi: "60" *% For 85 lpi / 600 dpi (5,5,2,6,6,2,20/3,0) ===================== *ColorSepScreenAngle ProcessBlack.85lpi.600x600dpi/85 lpi / 600 dpi: "45.0" *ColorSepScreenAngle CustomColor.85lpi.600x600dpi/85 lpi / 600 dpi: "45.0" *ColorSepScreenAngle ProcessCyan.85lpi.600x600dpi/85 lpi / 600 dpi: "71.5651" *ColorSepScreenAngle ProcessMagenta.85lpi.600x600dpi/85 lpi / 600 dpi: "18.4349" *ColorSepScreenAngle ProcessYellow.85lpi.600x600dpi/85 lpi / 600 dpi: "0.0" *ColorSepScreenFreq ProcessBlack.85lpi.600x600dpi/85 lpi / 600 dpi: "84.8528" *ColorSepScreenFreq CustomColor.85lpi.600x600dpi/85 lpi / 600 dpi: "84.8528" *ColorSepScreenFreq ProcessCyan.85lpi.600x600dpi/85 lpi / 600 dpi: "94.8683" *ColorSepScreenFreq ProcessMagenta.85lpi.600x600dpi/85 lpi / 600 dpi: "94.8683" *ColorSepScreenFreq ProcessYellow.85lpi.600x600dpi/85 lpi / 600 dpi: "30.0" *ColorSepScreenProc ProcessYellow.85lpi.600x600dpi/85 lpi / 600 dpi: " {1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub }{dup mul exch dup mul add 1 exch sub }ifelse }" *End *% For 106 lpi /300 dpi =============================== *ColorSepScreenAngle ProcessBlack.106lpi.300x300dpi/106 lpi /300 dpi: "45.0" *ColorSepScreenAngle CustomColor.106lpi.300x300dpi/106 lpi /300 dpi: "45.0" *ColorSepScreenAngle ProcessCyan.106lpi.300x300dpi/106 lpi /300 dpi: "71.5651" *ColorSepScreenAngle ProcessMagenta.106lpi.300x300dpi/106 lpi /300 dpi: "18.4349" *ColorSepScreenAngle ProcessYellow.106lpi.300x300dpi/106 lpi /300 dpi: "0.0" *ColorSepScreenFreq ProcessBlack.106lpi.300x300dpi/106 lpi /300 dpi: "106.066" *ColorSepScreenFreq CustomColor.106lpi.300x300dpi/106 lpi /300 dpi: "106.066" *ColorSepScreenFreq ProcessCyan.106lpi.300x300dpi/106 lpi /300 dpi: "94.8683" *ColorSepScreenFreq ProcessMagenta.106lpi.300x300dpi/106 lpi /300 dpi: "94.8683" *ColorSepScreenFreq ProcessYellow.106lpi.300x300dpi/106 lpi /300 dpi: "100.0" *% For 106 lpi /600 dpi =============================== *ColorSepScreenAngle ProcessBlack.106lpi.600x600dpi/106 lpi /600 dpi: "45.0" *ColorSepScreenAngle CustomColor.106lpi.600x600dpi/106 lpi /600 dpi: "45.0" *ColorSepScreenAngle ProcessCyan.106lpi.600x600dpi/106 lpi /600 dpi: "71.5651" *ColorSepScreenAngle ProcessMagenta.106lpi.600x600dpi/106 lpi /600 dpi: "18.4349" *ColorSepScreenAngle ProcessYellow.106lpi.600x600dpi/106 lpi /600 dpi: "0.0" *ColorSepScreenFreq ProcessBlack.106lpi.600x600dpi/106 lpi /600 dpi: "106.066" *ColorSepScreenFreq CustomColor.106lpi.600x600dpi/106 lpi /600 dpi: "106.066" *ColorSepScreenFreq ProcessCyan.106lpi.600x600dpi/106 lpi /600 dpi: "94.8683" *ColorSepScreenFreq ProcessMagenta.106lpi.600x600dpi/106 lpi /600 dpi: "94.8683" *ColorSepScreenFreq ProcessYellow.106lpi.600x600dpi/106 lpi /600 dpi: "100.0" *%=== Font Information ===================== *DefaultFont: Courier *Font AvantGarde-Book: Standard "(001.006S)" Standard ROM *Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM *Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM *Font Bookman-Demi: Standard "(001.004S)" Standard ROM *Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM *Font Bookman-Light: Standard "(001.004S)" Standard ROM *Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM *Font Courier: Standard "(002.004S)" Standard ROM *Font Courier-Bold: Standard "(002.004S)" Standard ROM *Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM *Font Courier-Oblique: Standard "(002.004S)" Standard ROM *Font Helvetica: Standard "(001.006S)" Standard ROM *Font Helvetica-Bold: Standard "(001.007S)" Standard ROM *Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM *Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM *Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM *Font Palatino-Bold: Standard "(001.005S)" Standard ROM *Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM *Font Palatino-Italic: Standard "(001.005S)" Standard ROM *Font Palatino-Roman: Standard "(001.005S)" Standard ROM *Font Symbol: Special "(001.007S)" Special ROM *Font Times-Bold: Standard "(001.007S)" Standard ROM *Font Times-BoldItalic: Standard "(001.009S)" Standard ROM *Font Times-Italic: Standard "(001.007S)" Standard ROM *Font Times-Roman: Standard "(001.007S)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM *Font ZapfDingbats: Special "(001.004S)" Special ROM *?FontQuery: " save { count 1 gt { exch dup 127 string cvs (/) print print (:) print /Font resourcestatus {pop pop (Yes)} {(No)} ifelse = } { exit } ifelse } bind loop (*) = flush restore " *End *?FontList: " save (*) {cvn ==} 128 string /Font resourceforall (*) = flush restore " *End *%=== Printer Messages (verbatim from printer): ================ *Message: "%%[ exitserver: permanent state may be changed ]%%" *Message: "%%[ Flushing: rest of job (to end-of-file) will be ignored ]%%" *Message: "\FontName\ not found, using Courier" *% Status (format: %%[ status: ] %%) *Status: "warming up"/warming up *Status: "idle"/idle *Status: "busy"/busy *Status: "waiting"/waiting *Status: "printing"/printing *Status: "initializing"/initializing *Status: "printing test page"/printing test page *Status: "PrinterError: cover open or no toner cartridge"/cover open or no toner cartridge *Status: "PrinterError: cover open"/cover open *Status: "PrinterError: needs attention"/needs attention *Status: "PrinterError: no toner cartridge"/no toner cartridge *Status: "PrinterError: warming up"/warming up *Status: "PrinterError: manual feed"/manual feed *Status: "PrinterError: out of paper"/out of paper *Status: "PrinterError: Paper Jam"/Paper Jam *Status: "PrinterError: paper jam"/paper jam *Status: "PrinterError: page protect needed"/page protect needed *Status: "PrinterError: out of memory"/out of memory *Status: "PrinterError: output bin full"/output bin full *Status: "PrinterError: resetting printer"/resetting printer *Status: "PrinterError: toner is low"/toner is low *Status: "PrinterError: off line"/off line *% Printer Error (format: %%[ PrinterError: ]%%) *PrinterError: "cover open or no toner cartridge"/cover open or no toner cartridge *PrinterError: "cover open"/cover open *PrinterError: "needs attention"/needs attention *PrinterError: "no toner cartridge"/no toner cartridge *PrinterError: "warming up"/warming up *PrinterError: "manual feed"/manual feed *PrinterError: "out of paper"/out of paper *PrinterError: "Paper Jam"/Paper Jam *PrinterError: "paper jam"/paper jam *PrinterError: "page protect needed"/page protect needed *PrinterError: "out of memory"/out of memory *PrinterError: "output bin full"/output bin full *PrinterError: "resetting printer"/resetting printer *PrinterError: "toner is low"/toner is low *PrinterError: "off line"/off line *% Input Sources (format: %%[ status: ; source: ]%% ) *Source: "BiTronics"/BiTronics *Source: "other I/O"/other I/O *Source: "AppleTalk"/AppleTalk *Source: "APPLETALK"/AppleTalk *Source: "ATALK"/AppleTalk *Source: "LocalTalk"/LocalTalk *Source: "Parallel"/Parallel *Source: "EtherTalk"/EtherTalk *Source: "NOVELL"/NOVELL *Source: "DLC/LLC"/DLC/LLC *Source: "ETALK"/EtherTalk *Source: "TCP/IP"/TCP/IP *Password: "()" *ExitServer: " count 0 eq { false } { true exch startjob } ifelse not { (WARNING: Cannot modify initial VM.) = (Missing or invalid password.) = (Please contact the author of this software.) = flush quit } if " *End *Reset: " count 0 eq { false } { true exch startjob } ifelse not { (WARNING: Cannot reset printer.) = (Missing or invalid password.) = (Please contact the author of this software.) = flush quit } if systemdict /quit get exec (WARNING : Printer Reset Failed.) = flush " *End *% ================================ *% For "HP LaserJet 4000" version 2014.108 *% ================================ ifhp-3.5.20/UTILS/HP2500CJ.PPD0100644000175100017510000012270210130541265015263 0ustar papowellpapowell*PPD-Adobe: "4.3" *% Adobe Systems PostScript(R) Printer Description File *% Copyright 1987-1995 Adobe Systems Incorporated. *% All Rights Reserved. *% Permission is granted for redistribution of this file as *% long as this copyright notice is intact and the contents *% of the file is not altered in any way from its original form. *% End of Copyright statement *FormatVersion: "4.3" *FileVersion: "1.1" *LanguageEncoding: JIS83-RKSJ *LanguageVersion: Japanese *PCFileName: "HP2500CJ.PPD" *Product: "(HP DesignJet 2500CP)" *PSVersion: "(2016.104) 1" *ModelName: "HP DesignJet 2500CP" *ShortNickName: "HP DesignJet 2500CP" *NickName: "HP DesignJet 2500CP v2016.104" *Manufacturer:"HP" *% ==== Device Capabilities =============== *LanguageLevel: "2" *Protocols:PJL TBCP *FreeVM: "7051144" *VMOption standard/•W€: "7051144" *VMOption 8MB: "14880600" *VMOption 16MB: "22747016" *VMOption 32MB: "38418312" *VMOption 48MB: "54138760" *FCacheSize standard/•W€: 5466830 *FCacheSize 8MB: 10340212 *FCacheSize 16MB: 15218587 *FCacheSize 32MB: 24970344 *FCacheSize 48MB: 34722100 *OpenGroup: InstallableOptions *OpenUI *InstalledMemory/ƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚郃‚ƒŠ: PickOne *DefaultInstalledMemory: standard *InstalledMemory standard/•W€: " " *InstalledMemory 8MB/24 MB ‡Œvƒƒ‚ƒŠ: " " *InstalledMemory 16MB/32 MB ‡Œvƒƒ‚ƒŠ: " " *InstalledMemory 32MB/48 MB ‡Œvƒƒ‚ƒŠ: " " *InstalledMemory 48MB/64 MB ‡Œvƒƒ‚ƒŠ: " " *?InstalledMemory: " save currentsystemparams /RamSize get 524288 div ceiling cvi 2 div /size exch def size 60 ge {(48MB)} { size 44 ge {(32MB)} { size 28 ge {(16MB)} { size 20 ge {(8MB)} { size 12 ge {(standard)} {(Unknown)} ifelse } ifelse } ifelse } ifelse } ifelse = flush restore " *End *CloseUI: *InstalledMemory *CloseGroup: InstallableOptions *ColorDevice: True *DefaultColorSpace: CMYK *VariablePaperSize: True *TTRasterizer: Type42 *?TTRasterizer: " save 42 /FontType resourcestatus { pop pop (Type42)} {pop pop (None)} ifelse = flush restore" *End *Throughput: "1" *Password: "()" *ExitServer: " count 0 eq { false } { true exch startjob } ifelse not { (WARNING: Cannot modify initial VM.) = (Missing or invalid password.) = (Please contact the author of this software.) = flush quit } if " *End *Reset: " count 0 eq { false } { true exch startjob } ifelse not { (WARNING: Cannot reset printer.) = (Missing or invalid password.) = (Please contact the author of this software.) = flush quit } if systemdict /quit get exec (WARNING : Printer Reset Failed.) = flush " *End *DefaultResolution: 600dpi *% PJL Information =============== *JCLBegin: "<1B>%-12345X@PJL JOB<0A>" *JCLToPSInterpreter: "@PJL ENTER LANGUAGE = POSTSCRIPT<0A>" *JCLEnd: "<1B>%-12345X@PJL EOJ<0A><1B>%-12345X" *% Halftone Information =============== *ScreenFreq: "60.0" *ScreenAngle: "0.0" *DefaultScreenProc: Dot *ScreenProc Dot: " {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub } {dup mul exch dup mul add 1 exch sub } ifelse } " *End *ScreenProc Line: "{ pop }" *ScreenProc Ellipse: "{ dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub }" *End *DefaultTransfer: Null *Transfer Null: "{ }" *Transfer Null.Inverse: "{ 1 exch sub }" *DefaultHalftoneType: 100 *%=============== Print Color as Gray ================ *OpenUI *HPColorAsGray/ƒOƒŒ[ŠK’²‚ňóü: PickOne *OrderDependency: 5.0 AnySetup *HPColorAsGray *DefaultHPColorAsGray: No *HPColorAsGray Yes/‚Í‚¢: "<< /ProcessColorModel /DeviceGray >> setpagedevice" *HPColorAsGray No/‚¢‚¢‚¦: "<< /ProcessColorModel /DeviceCMYK >> setpagedevice" *?HPColorAsGray: " save currentpagedevice /ProcessColorModel get /DeviceGray eq {(Yes)}{(No)} ifelse = flush restore " *End *CloseUI: *HPColorAsGray *%=============== Auto-scaling Control ================ *OpenUI *HPAutoScaling/Scale to: PickOne *OrderDependency: 20.0 AnySetup *HPAutoScaling *DefaultHPAutoScaling: Off *HPAutoScaling Off/‚È‚µ:" " *HPAutoScaling Letter/US ƒŒƒ^[: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [612 792 ] exch exec <<>> setpagedevice" *End *HPAutoScaling LetterFullBleed/ƒŒƒ^[ ƒmƒr: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [777 1009 ] exch exec <<>> setpagedevice" *End *HPAutoScaling Tabloid/ƒ^ƒuƒƒCƒh: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [792 1224] exch exec <<>> setpagedevice" *End *HPAutoScaling TabloidFullBleed/ƒ^ƒuƒƒCƒh ƒmƒr: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [957 1441] exch exec <<>> setpagedevice" *End *HPAutoScaling AnsiC/ANSI C: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1224 1584] exch exec <<>> setpagedevice" *End *HPAutoScaling AnsiD/ANSI D: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1584 2448] exch exec <<>> setpagedevice" *End *HPAutoScaling AnsiE/ANSI E: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2448 3168] exch exec <<>> setpagedevice" *End *HPAutoScaling ARCHA/ARCH A: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [648 864] exch exec <<>> setpagedevice" *End *HPAutoScaling ARCHB/ARCH B: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [864 1296] exch exec <<>> setpagedevice" *End *HPAutoScaling ARCHC/ARCH C: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1296 1728] exch exec <<>> setpagedevice" *End *HPAutoScaling ARCHD/ARCH D: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1728 2592] exch exec <<>> setpagedevice" *End *HPAutoScaling ARCHE/ARCH E: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2592 3456] exch exec <<>> setpagedevice" *End *HPAutoScaling A4/ISO A4: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [595 842] exch exec <<>> setpagedevice" *End *HPAutoScaling A4FullBleed/ISO A4 ƒmƒr: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [760 1059] exch exec <<>> setpagedevice" *End *HPAutoScaling A3/ISO A3: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [842 1191] exch exec <<>> setpagedevice" *End *HPAutoScaling A3FullBleed/ISO A3 ƒmƒr: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1007 1408] exch exec <<>> setpagedevice" *End *HPAutoScaling A2/ISO A2: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1191 1684] exch exec <<>> setpagedevice" *End *HPAutoScaling A1/ISO A1: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1684 2384] exch exec <<>> setpagedevice" *End *HPAutoScaling A0/ISO A0: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2384 3370] exch exec <<>> setpagedevice" *End *HPAutoScaling OVERSIZEA2/ƒI[ƒo[ƒTƒCƒY A2: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1377 1772] exch exec <<>> setpagedevice" *End *HPAutoScaling OVERSIZEA1/ƒI[ƒo[ƒTƒCƒY A1: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1788 2551] exch exec <<>> setpagedevice" *End *HPAutoScaling OVERSIZEA0/ƒI[ƒo[ƒTƒCƒY A0: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2567 3529] exch exec <<>> setpagedevice" *End *HPAutoScaling B4/JIS B4: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [729 1032] exch exec <<>> setpagedevice" *End *HPAutoScaling B3/JIS B3: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1032 1460] exch exec <<>> setpagedevice" *End *HPAutoScaling B2/JIS B2: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1460 2064] exch exec <<>> setpagedevice" *End *HPAutoScaling B1/JIS B1: " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2064 2920] exch exec <<>> setpagedevice" *End *HPAutoScaling P24x48/24" x 48": " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1728 3456] exch exec <<>> setpagedevice" *End *HPAutoScaling P24x60/24" x 60": " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1728 4320] exch exec <<>> setpagedevice" *End *HPAutoScaling P24x72/24" x 72": " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1728 5184] exch exec <<>> setpagedevice" *End *HPAutoScaling P24x84/24" x 84": " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1728 6048] exch exec <<>> setpagedevice" *End *HPAutoScaling P24x96/24" x 96": " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1728 6912] exch exec <<>> setpagedevice" *End *HPAutoScaling P24x108/24" x 108": " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1728 7776] exch exec <<>> setpagedevice" *End *HPAutoScaling P36x60/36" x 60": " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2592 4320] exch exec <<>> setpagedevice" *End *HPAutoScaling P36x72/36" x 72": " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2592 5184] exch exec <<>> setpagedevice" *End *HPAutoScaling P36x84/36" x 84": " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2592 6048] exch exec <<>> setpagedevice" *End *HPAutoScaling P36x96/36" x 96": " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2592 6912] exch exec <<>> setpagedevice" *End *HPAutoScaling P36x108/36" x 108": " /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2592 7776] exch exec <<>> setpagedevice" *End *CloseUI: *HPAutoScaling *%=============== Print Quality ================ *OpenUI *OutputMode/ˆóü•iŽ¿: PickOne *OrderDependency: 50.0 AnySetup *OutputMode *DefaultOutputMode: Best *OutputMode Best/‚•iŽ¿ - 600 dpi: " << /HWResolution [600 600] /PostRenderingEnhance true /PostRenderingEnhanceDetails << /PrintQuality 3 /Type 11 >> >> setpagedevice " *End *OutputMode Normal/•W€: " << /HWResolution [300 300] /PostRenderingEnhance true /PostRenderingEnhanceDetails << /PrintQuality 2 /Type 11 >> >> setpagedevice " *End *OutputMode Fast/‚‘¬: " << /HWResolution [300 300] /PostRenderingEnhance true /PostRenderingEnhanceDetails << /PrintQuality 1 /Type 11 >> >> setpagedevice " *End *?OutputMode: " save 3 dict dup 1 (Fast) put dup 2 (Normal) put dup 3 (Best) put currentpagedevice /PostRenderingEnhanceDetails get /PrintQuality get get = flush restore" *End *CloseUI: *OutputMode *% Mirror Print ====================== *OpenUI *MirrorPrint/ƒ~ƒ‰[ˆóü: Boolean *OrderDependency: 50.0 AnySetup *MirrorPrint *DefaultMirrorPrint: False *MirrorPrint True/‚Í‚¢: "<>setpagedevice" *MirrorPrint False/‚¢‚¢‚¦: "<>setpagedevice" *?MirrorPrint: " save currentpagedevice /MirrorPrint get {(True)}{(False)}ifelse = flush restore " *End *CloseUI: *MirrorPrint *%=============== Transverse ================ *OpenUI *HPTransverse/‰ñ“]: Boolean *OrderDependency: 50.0 AnySetup *HPTransverse *DefaultHPTransverse: False *HPTransverse True/‚Í‚¢: "<< /Orientation 1 >> setpagedevice" *HPTransverse False/‚¢‚¢‚¦: "<< /Orientation 0 >> setpagedevice" *?HPTransverse: " save currentpagedevice /Orientation get 0 eq { (False) } { currentpagedevice /Orientation get 1 eq { (True) } { (Unknown) } ifelse } ifelse = flush restore " *End *CloseUI: *HPTransverse *%=============== HP Color Management ================ *OpenUI *HPColorMan/Color management: PickOne *OrderDependency: 60.0 AnySetup *HPColorMan *DefaultHPColorMan: EuroScale *HPColorMan EuroScale/EuroScale:" globaldict /ColorSmartColorMatching known { /EuroOffset ColorSmartColorMatching <<>> setpagedevice } if " *End *HPColorMan SWOP/SWOP:" globaldict /ColorSmartColorMatching known { /SWOP ColorSmartColorMatching <<>> setpagedevice } if " *End *HPColorMan Toyo/“Œ—mƒCƒ“ƒN:" globaldict /ColorSmartColorMatching known { /JapanOffset ColorSmartColorMatching <<>> setpagedevice } if " *End *HPColorMan ColorSmart/ColorSmart Vivid Business Graphics:" globaldict /ColorSmartColorMatching known { true ColorSmartColorMatching <<>> setpagedevice } if " *End *HPColorMan None/ƒJƒ‰[’²®‚È‚µ-ŒoŒ±‚Ì‚ ‚郆[ƒU[‚Ì‚Ý:" globaldict /ColorSmartColorMatching known {false ColorSmartColorMatching <<>> setpagedevice} if " *End *?HPColorMan: " save userdict /ColorSmartOn known { userdict /ColorSmartOn get {(ColorSmart)} { userdict /ColorEmulationMode known { userdict /ColorEmulationMode get dup 0 eq {(None)} { dup 1 eq {(SWOP)} { dup 2 eq {(EuroScale)} { dup 3 eq {(Toyo)} {(Unknown)} ifelse } ifelse } ifelse } ifelse exch pop } {(None)} ifelse } ifelse } { userdict /ColorEmulationMode known { userdict /ColorEmulationMode get dup 0 eq {(None)} { dup 1 eq {(SWOP)} { dup 2 eq {(EuroScale)} { dup 3 eq {(Toyo)} {(Unknown)} ifelse } ifelse } ifelse } ifelse exch pop } {(None)} ifelse } ifelse = flush restore " *End *CloseUI: *HPColorMan *%=============== Brightness Control ================ *OpenUI *HPBrightness/–¾‚邳: PickOne *OrderDependency: 70.0 AnySetup *HPBrightness *DefaultHPBrightness: leveleven *HPBrightness levelm25/- 25% –¾‚é‚­:" 25 dup dup 50 lt exch -50 gt and { 0.01 mul 0.5 add ln 0.5 ln exch div } { pop 1 } ifelse 1 exch div { 0 exp } dup 0 4 -1 roll put settransfer" *End *HPBrightness levelm20/- 20%:" 20 dup dup 50 lt exch -50 gt and { 0.01 mul 0.5 add ln 0.5 ln exch div } { pop 1 } ifelse 1 exch div { 0 exp } dup 0 4 -1 roll put settransfer" *End *HPBrightness levelm15/- 15%:" 15 dup dup 50 lt exch -50 gt and { 0.01 mul 0.5 add ln 0.5 ln exch div } { pop 1 } ifelse 1 exch div { 0 exp } dup 0 4 -1 roll put settransfer" *End *HPBrightness levelm10/- 10%:" 10 dup dup 50 lt exch -50 gt and { 0.01 mul 0.5 add ln 0.5 ln exch div } { pop 1 } ifelse 1 exch div { 0 exp } dup 0 4 -1 roll put settransfer" *End *HPBrightness levelm5/- 5%:" 5 dup dup 50 lt exch -50 gt and { 0.01 mul 0.5 add ln 0.5 ln exch div } { pop 1 } ifelse 1 exch div { 0 exp } dup 0 4 -1 roll put settransfer" *End *HPBrightness leveleven/0% •ÏX‚È‚µ:" " *HPBrightness levelp5/+ 5%:" -5 dup dup 50 lt exch -50 gt and { 0.01 mul 0.5 add ln 0.5 ln exch div } { pop 1 } ifelse 1 exch div { 0 exp } dup 0 4 -1 roll put settransfer" *End *HPBrightness levelp10/+ 10%:" -10 dup dup 50 lt exch -50 gt and { 0.01 mul 0.5 add ln 0.5 ln exch div } { pop 1 } ifelse 1 exch div { 0 exp } dup 0 4 -1 roll put settransfer" *End *HPBrightness levelp15/+ 15%:" -15 dup dup 50 lt exch -50 gt and { 0.01 mul 0.5 add ln 0.5 ln exch div } { pop 1 } ifelse 1 exch div { 0 exp } dup 0 4 -1 roll put settransfer" *End *HPBrightness levelp20/+ 20%:" -20 dup dup 50 lt exch -50 gt and { 0.01 mul 0.5 add ln 0.5 ln exch div } { pop 1 } ifelse 1 exch div { 0 exp } dup 0 4 -1 roll put settransfer" *End *HPBrightness levelp25/+ 25% ˆÃ‚­:" -25 dup dup 50 lt exch -50 gt and { 0.01 mul 0.5 add ln 0.5 ln exch div } { pop 1 } ifelse 1 exch div { 0 exp } dup 0 4 -1 roll put settransfer" *End *?HPBrightness: " save 11 dict dup 0.415038 (levelm25) put dup 0.514573 (levelm20) put dup 0.621488 (levelm15) put dup 0.736966 (levelm10) put dup 0.862496 (levelm5) put dup 1.0 (leveleven) put dup 1.152 (levelp5) put dup 1.32193 (levelp10) put dup 1.51457 (levelp15) put dup 1.73697 (levelp20) put dup 2.0 (levelp25) put dup currenttransfer dup length 0 eq {pop pop pop (Unknown)} {0 get dup 1 lt {1000000 mul round 1000000 div} {100000 mul round 100000 div} ifelse dup 3 1 roll known { get } { pop pop (Unknown)} ifelse } ifelse = flush restore " *End *CloseUI: *HPBrightness *%=============== Allow Application Halftoning ================ *OpenUI *HPAppHalftoning/ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃n[ƒtƒg[ƒ“Žg—p: Boolean *OrderDependency: 80.0 AnySetup *HPAppHalftoning *DefaultHPAppHalftoning: False *HPAppHalftoning True/Žg—p: "" *HPAppHalftoning False/•sŽg—p: " userdict /setscreen { pop pop pop } put userdict /setcolorscreen { pop pop pop pop pop pop pop pop pop pop pop pop } put userdict /sethalftone{pop} put <<>> setpagedevice" *End *?HPAppHalftoning: " save 2 dict begin /AllSamePop { dup 0 get exch true exch { 2 index ne {pop false exit} if } forall exch dup /pop eq exch /pop load eq or and } def /Lenchk { dup type /arraytype eq {dup length 3 -1 roll eq {true}{pop false}ifelse} {pop pop false} ifelse } def 3 /setscreen load Lenchk {AllSamePop}{false}ifelse 12 /setcolorscreen load Lenchk {AllSamePop}{false}ifelse 1 /sethalftone load Lenchk {AllSamePop}{false}ifelse end and and not {(True)} {(False)} ifelse = flush restore " *End *CloseUI: *HPAppHalftoning *% Paper Handling =================== *OpenUI *PageSize: PickOne *OrderDependency: 30.0 AnySetup *PageSize *DefaultPageSize: Unknown *PageSize Letter/US ƒŒƒ^[: "<>setpagedevice" *PageSize LetterFullBleed/US ƒŒƒ^[ ƒmƒr: "<>setpagedevice" *PageSize Tabloid/ƒ^ƒuƒƒCƒh: "<>setpagedevice" *PageSize TabloidFullBleed/ƒ^ƒuƒƒCƒh ƒmƒr: "<>setpagedevice" *PageSize AnsiC/ANSI C: "<>setpagedevice" *PageSize AnsiD/ANSI D: "<>setpagedevice" *PageSize AnsiE/ANSI E: "<>setpagedevice" *PageSize ARCHA/ARCH A: "<>setpagedevice" *PageSize ARCHB/ARCH B: "<>setpagedevice" *PageSize ARCHC/ARCH C: "<>setpagedevice" *PageSize ARCHD/ARCH D: "<>setpagedevice" *PageSize ARCHE/ARCH E: "<>setpagedevice" *PageSize A4/ISO A4: "<>setpagedevice" *PageSize A4FullBleed/ISO A4 ƒmƒr: "<>setpagedevice" *PageSize A3/ISO A3: "<>setpagedevice" *PageSize A3FullBleed/ISO A3 ƒmƒr: "<>setpagedevice" *PageSize A2/ISO A2: "<>setpagedevice" *PageSize A1/ISO A1: "<>setpagedevice" *PageSize A0/ISO A0: "<>setpagedevice" *PageSize OVERSIZEA2/ƒI[ƒo[ƒTƒCƒY A2: "<>setpagedevice" *PageSize OVERSIZEA1/ƒI[ƒo[ƒTƒCƒY A1: "<>setpagedevice" *PageSize OVERSIZEA0/ƒI[ƒo[ƒTƒCƒY A0: "<>setpagedevice" *PageSize B4/JIS B4: "<>setpagedevice" *PageSize B3/JIS B3: "<>setpagedevice" *PageSize B2/JIS B2: "<>setpagedevice" *PageSize B1/JIS B1: "<>setpagedevice" *PageSize P24x48/24" x 48": "<>setpagedevice" *PageSize P24x60/24" x 60": "<>setpagedevice" *PageSize P24x72/24" x 72": "<>setpagedevice" *PageSize P24x84/24" x 84": "<>setpagedevice" *PageSize P24x96/24" x 96": "<>setpagedevice" *PageSize P24x108/24" x 108": "<>setpagedevice" *PageSize P36x60/36" x 60": "<>setpagedevice" *PageSize P36x72/36" x 72": "<>setpagedevice" *PageSize P36x84/36" x 84": "<>setpagedevice" *PageSize P36x96/36" x 96": "<>setpagedevice" *PageSize P36x108/36" x 108": "<>setpagedevice" *?PageSize: " save currentpagedevice /PageSize get aload pop 2 copy gt {exch} if (Unknown) 33 dict dup [612 792] (Letter) put dup [777 1009] (LetterFullBleed) put dup [792 1224] (Tabloid) put dup [957 1441] (TabloidFullBleed) put dup [1224 1584] (AnsiC) put dup [1584 2448] (AnsiD) put dup [2448 3168] (AnsiE) put dup [648 864] (ARCHA) put dup [864 1296] (ARCHB) put dup [1296 1728] (ARCHC) put dup [1728 2592] (ARCHD) put dup [2592 3456] (ARCHE) put dup [595 842] (A4) put dup [760 1059] (A4FullBleed) put dup [842 1191] (A3) put dup [1007 1408] (A3FullBleed) put dup [1191 1684] (A2) put dup [1684 2384] (A1) put dup [2384 3370] (A0) put dup [1377 1772] (OVERSIZEA2) put dup [1788 2551] (OVERSIZEA1) put dup [2567 3529] (OVERSIZEA0) put dup [729 1032] (B4) put dup [1032 1460] (B3) put dup [1460 2064] (B2) put dup [2064 2920] (B1) put dup [1728 3456] (P24x48) put dup [1728 4320] (P24x60) put dup [1728 5184] (P24x72) put dup [1728 6048] (P24x84) put dup [1728 6912] (P24x96) put dup [1728 7776] (P24x108) put dup [2592 4320] (P36x60) put dup [2592 5184] (P36x72) put dup [2592 6048] (P36x84) put dup [2592 6912] (P36x96) put dup [2592 7776] (P36x108) put { exch aload pop 4 index sub abs 5 le exch 5 index sub abs 5 le and {exch pop exit} {pop} ifelse } bind forall = flush pop pop restore" *End *CloseUI: *PageSize *OpenUI *PageRegion: PickOne *OrderDependency: 40.0 AnySetup *PageRegion *DefaultPageRegion: Unknown *PageRegion Letter/US ƒŒƒ^[: "<>setpagedevice" *PageRegion LetterFullBleed/US ƒŒƒ^[ ƒmƒr: "<>setpagedevice" *PageRegion Tabloid/ƒ^ƒuƒƒCƒh: "<>setpagedevice" *PageRegion TabloidFullBleed/ƒ^ƒuƒƒCƒh ƒmƒr: "<>setpagedevice" *PageRegion AnsiC/ANSI C: "<>setpagedevice" *PageRegion AnsiD/ANSI D: "<>setpagedevice" *PageRegion AnsiE/ANSI E: "<>setpagedevice" *PageRegion ARCHA/ARCH A: "<>setpagedevice" *PageRegion ARCHB/ARCH B: "<>setpagedevice" *PageRegion ARCHC/ARCH C: "<>setpagedevice" *PageRegion ARCHD/ARCH D: "<>setpagedevice" *PageRegion ARCHE/ARCH E: "<>setpagedevice" *PageRegion A4/ISO A4: "<>setpagedevice" *PageRegion A4FullBleed/ISO A4 ƒmƒr: "<>setpagedevice" *PageRegion A3/ISO A3: "<>setpagedevice" *PageRegion A3FullBleed/ISO A3 ƒmƒr: "<>setpagedevice" *PageRegion A2/ISO A2: "<>setpagedevice" *PageRegion A1/ISO A1: "<>setpagedevice" *PageRegion A0/ISO A0: "<>setpagedevice" *PageRegion OVERSIZEA2/ƒI[ƒo[ƒTƒCƒY A2: "<>setpagedevice" *PageRegion OVERSIZEA1/ƒI[ƒo[ƒTƒCƒY A1: "<>setpagedevice" *PageRegion OVERSIZEA0/ƒI[ƒo[ƒTƒCƒY A0: "<>setpagedevice" *PageRegion B4/JIS B4: "<>setpagedevice" *PageRegion B3/JIS B3: "<>setpagedevice" *PageRegion B2/JIS B2: "<>setpagedevice" *PageRegion B1/JIS B1: "<>setpagedevice" *PageRegion P24x48/24" x 48": "<>setpagedevice" *PageRegion P24x60/24" x 60": "<>setpagedevice" *PageRegion P24x72/24" x 72": "<>setpagedevice" *PageRegion P24x84/24" x 84": "<>setpagedevice" *PageRegion P24x96/24" x 96": "<>setpagedevice" *PageRegion P24x108/24" x 108": "<>setpagedevice" *PageRegion P36x60/36" x 60": "<>setpagedevice" *PageRegion P36x72/36" x 72": "<>setpagedevice" *PageRegion P36x84/36" x 84": "<>setpagedevice" *PageRegion P36x96/36" x 96": "<>setpagedevice" *PageRegion P36x108/36" x 108": "<>setpagedevice" *CloseUI: *PageRegion *% The following entries provide information about specific paper keywords. *DefaultImageableArea: Unknown *ImageableArea Letter/US ƒŒƒ^[: "51 77 561 715" *ImageableArea LetterFullBleed/US ƒŒƒ^[ ƒmƒr: "51 77 726 932" *ImageableArea Tabloid/ƒ^ƒuƒƒCƒh: "51 77 741 1147" *ImageableArea TabloidFullBleed/ƒ^ƒuƒƒCƒh ƒmƒr: "51 77 906 1364" *ImageableArea AnsiC/ANSI C: "51 77 1173 1507" *ImageableArea AnsiD/ANSI D: "51 77 1533 2371" *ImageableArea AnsiE/ANSI E: "51 77 2397 3091" *ImageableArea ARCHA/ARCH A: "51 77 597 787" *ImageableArea ARCHB/ARCH B: "51 77 813 1219" *ImageableArea ARCHC/ARCH C: "51 77 1245 1651" *ImageableArea ARCHD/ARCH D: "51 77 1677 2515" *ImageableArea ARCHE/ARCH E: "51 77 2541 3379" *ImageableArea A4/ISO A4: "51 77 544 765" *ImageableArea A4FullBleed/ISO A4 ƒmƒr: "51 77 709 982" *ImageableArea A3/ISO A3: "51 77 791 1114" *ImageableArea A3FullBleed/ISO A3 ƒmƒr: "51 77 956 1331" *ImageableArea A2/ISO A2: "51 77 1140 1607" *ImageableArea A1/ISO A1: "51 77 1633 2307" *ImageableArea A0/ISO A0: "51 77 2333 3293" *ImageableArea OVERSIZEA2/ƒI[ƒo[ƒTƒCƒY A2: "51 77 1326 1695" *ImageableArea OVERSIZEA1/ƒI[ƒo[ƒTƒCƒY A1: "51 77 1737 2474" *ImageableArea OVERSIZEA0/ƒI[ƒo[ƒTƒCƒY A0: "51 77 2516 3452" *ImageableArea B4/JIS B4: "51 77 678 955" *ImageableArea B3/JIS B3: "51 77 981 1383" *ImageableArea B2/JIS B2: "51 77 1409 1987" *ImageableArea B1/JIS B1: "51 77 2013 2843" *ImageableArea P24x48/24" x 48": "51 77 1677 3379" *ImageableArea P24x60/24" x 60": "51 77 1677 4243" *ImageableArea P24x72/24" x 72": "51 77 1677 5107" *ImageableArea P24x84/24" x 84": "51 77 1677 5971" *ImageableArea P24x96/24" x 96": "51 77 1677 6835" *ImageableArea P24x108/24" x 108": "51 77 1677 7699" *ImageableArea P36x60/36" x 60": "51 77 2541 4243" *ImageableArea P36x72/36" x 72": "51 77 2541 5107" *ImageableArea P36x84/36" x 84": "51 77 2541 5971" *ImageableArea P36x96/36" x 96": "51 77 2541 6835" *ImageableArea P36x108/36" x 108": "51 77 2541 7699" *?ImageableArea: " save /cvp {cvi ( ) cvs print ( ) print} bind def newpath clippath pathbbox 4 -2 roll exch 2 {ceiling cvp} repeat exch 2 {floor cvp} repeat flush restore" *End *% These provide the physical dimensions of the paper (by keyword) *DefaultPaperDimension:Unknown *PaperDimension Letter/US ƒŒƒ^[: "612 792" *PaperDimension LetterFullBleed/US ƒŒƒ^[ ƒmƒr: "777 1009" *PaperDimension Tabloid/ƒ^ƒuƒƒCƒh: "792 1224" *PaperDimension TabloidFullBleed/ƒ^ƒuƒƒCƒh ƒmƒr: "957 1441" *PaperDimension AnsiC/ANSI C: "1224 1584" *PaperDimension AnsiD/ANSI D: "1584 2448" *PaperDimension AnsiE/ANSI E: "2448 3168" *PaperDimension ARCHA/ARCH A: "648 864" *PaperDimension ARCHB/ARCH B: "864 1296" *PaperDimension ARCHC/ARCH C: "1296 1728" *PaperDimension ARCHD/ARCH D: "1728 2592" *PaperDimension ARCHE/ARCH E: "2592 3456" *PaperDimension A4/ISO A4: "595 842" *PaperDimension A4FullBleed/ISO A4 ƒmƒr: "760 1059" *PaperDimension A3/ISO A3: "842 1191" *PaperDimension A3FullBleed/ISO A3 ƒmƒr: "1007 1408" *PaperDimension A2/ISO A2: "1191 1684" *PaperDimension A1/ISO A1: "1684 2384" *PaperDimension A0/ISO A0: "2384 3370" *PaperDimension OVERSIZEA2/ƒI[ƒo[ƒTƒCƒY A2: "1377 1772" *PaperDimension OVERSIZEA1/ƒI[ƒo[ƒTƒCƒY A1: "1788 2551" *PaperDimension OVERSIZEA0/ƒI[ƒo[ƒTƒCƒY A0: "2567 3529" *PaperDimension B4/JIS B4: "729 1032" *PaperDimension B3/JIS B3: "1032 1460" *PaperDimension B2/JIS B2: "1460 2064" *PaperDimension B1/JIS B1: "2064 2920" *PaperDimension P24x48/24" x 48": "1728 3456" *PaperDimension P24x60/24" x 60": "1728 4320" *PaperDimension P24x72/24" x 72": "1728 5184" *PaperDimension P24x84/24" x 84": "1728 6048" *PaperDimension P24x96/24" x 96": "1728 6912" *PaperDimension P24x108/24" x 108": "1728 7776" *PaperDimension P36x60/36" x 60": "2592 4320" *PaperDimension P36x72/36" x 72": "2592 5184" *PaperDimension P36x84/36" x 84": "2592 6048" *PaperDimension P36x96/36" x 96": "2592 6912" *PaperDimension P36x108/36" x 108": "2592 7776" *RequiresPageRegion All: True *OpenUI *InputSlot: PickOne *DefaultInputSlot: OnlyOne *InputSlot OnlyOne/Šù’è’lionly onej: "" *?InputSlot: "save (OnlyOne) = flush restore " *CloseUI: *InputSlot *% Custom Page Sizes =================== *MaxMediaWidth: "2642" *MaxMediaHeight: "9288" *HWMargins: 51 77 51 77 *ParamCustomPageSize Width/•: 1 points 200 2642 *ParamCustomPageSize Height/‚‚³: 2 points 200 9288 *ParamCustomPageSize WidthOffset/•ƒIƒtƒZƒbƒg: 3 points 0 2642 *ParamCustomPageSize HeightOffset/‚‚³ƒIƒtƒZƒbƒg: 4 points 0 9288 *ParamCustomPageSize Orientation/ˆóü‚ÌŒü‚«: 5 int 0 3 *NonUIOrderDependency: 30.0 AnySetup *CustomPageSize *CustomPageSize True: " pop pop pop % discard orientation & offsets 2 dict begin /PageSize [ 4 -2 roll ] def /ImagingBBox null def currentdict end setpagedevice " *End *% Font Information ===================== *DefaultFont: Ryumin-Light-90ms-RKSJ-H *Font Ryumin-Light-90ms-RKSJ-H: 90ms-RKSJ-H "(3.003)" Adobe-Japan1-2 ROM *Font Ryumin-Light-90ms-RKSJ-V: 90ms-RKSJ-V "(3.003)" Adobe-Japan1-2 ROM *Font Ryumin-Light-Ext-H: Ext-H "(3.003)" Adobe-Japan1-2 ROM *Font Ryumin-Light-Ext-RKSJ-H: Ext-RKSJ-H "(3.003)" Adobe-Japan1-2 ROM *Font Ryumin-Light-78-EUC-H: 78-EUC-H "(3.003)" Adobe-Japan1-0 ROM *Font Ryumin-Light-78-EUC-V: 78-EUC-V "(3.003)" Adobe-Japan1-0 ROM *Font Ryumin-Light-78-H: 78-H "(3.003)" Adobe-Japan1-0 ROM *Font Ryumin-Light-78-RKSJ-H: 78-RKSJ-H "(3.003)" Adobe-Japan1-0 ROM *Font Ryumin-Light-78-RKSJ-V: 78-RKSJ-V "(3.003)" Adobe-Japan1-0 ROM *Font Ryumin-Light-EUC-V: EUC-V "(3.003)" Adobe-Japan1-0 ROM *Font Ryumin-Light-Ext-RKSJ-V: Ext-RKSJ-V "(3.003)" Adobe-Japan1-0 ROM *Font Ryumin-Light-Ext-V: Ext-V "(3.003)" Adobe-Japan1-0 ROM *Font Ryumin-Light-NWP-H: NWP-H "(3.003)" Adobe-Japan1-0 ROM *Font Ryumin-Light-NWP-V: NWP-V "(3.003)" Adobe-Japan1-0 ROM *Font Ryumin-Light-RKSJ-V: RKSJ-V "(3.003)" Adobe-Japan1-0 ROM *Font Ryumin-Light-V: V "(3.003)" Adobe-Japan1-0 ROM *Font Ryumin-Light-78-V: 78-V "(3.003)" Adobe-Japan1-0 ROM *Font Ryumin-Light-83pv-RKSJ-H: 83pv-RKSJ-H "(3.003)" Adobe-Japan1-1 ROM *Font Ryumin-Light-Add-H: Add-H "(3.003)" Adobe-Japan1-1 ROM *Font Ryumin-Light-Add-RKSJ-H: Add-RKSJ-H "(3.003)" Adobe-Japan1-1 ROM *Font Ryumin-Light-Add-RKSJ-V: Add-RKSJ-V "(3.003)" Adobe-Japan1-1 ROM *Font Ryumin-Light-Add-V: Add-V "(3.003)" Adobe-Japan1-1 ROM *Font Ryumin-Light-EUC-H: EUC-H "(3.003)" Adobe-Japan1-1 ROM *Font Ryumin-Light-H: H "(3.003)" Adobe-Japan1-1 ROM *Font Ryumin-Light-RKSJ-H: RKSJ-H "(3.003)" Adobe-Japan1-1 ROM *Font Ryumin-Light-90pv-RKSJ-H: 90pv-RKSJ-H "(3.003)" Adobe-Japan1-1 ROM *Font Ryumin-Light-90pv-RKSJ-V: 90pv-RKSJ-V "(3.003)" Adobe-Japan1-1 ROM *Font GothicBBB-Medium-90ms-RKSJ-H: 90ms-RKSJ-H "(3.003)" Adobe-Japan1-2 ROM *Font GothicBBB-Medium-90ms-RKSJ-V: 90ms-RKSJ-V "(3.003)" Adobe-Japan1-2 ROM *Font GothicBBB-Medium-Ext-H: Ext-H "(3.003)" Adobe-Japan1-2 ROM *Font GothicBBB-Medium-Ext-RKSJ-H: Ext-RKSJ-H "(3.003)" Adobe-Japan1-2 ROM *Font GothicBBB-Medium-78-EUC-H: 78-EUC-H "(3.003)" Adobe-Japan1-0 ROM *Font GothicBBB-Medium-78-EUC-V: 78-EUC-V "(3.003)" Adobe-Japan1-0 ROM *Font GothicBBB-Medium-78-H: 78-H "(3.003)" Adobe-Japan1-0 ROM *Font GothicBBB-Medium-78-RKSJ-H: 78-RKSJ-H "(3.003)" Adobe-Japan1-0 ROM *Font GothicBBB-Medium-78-RKSJ-V: 78-RKSJ-V "(3.003)" Adobe-Japan1-0 ROM *Font GothicBBB-Medium-EUC-V: EUC-V "(3.003)" Adobe-Japan1-0 ROM *Font GothicBBB-Medium-Ext-RKSJ-V: Ext-RKSJ-V "(3.003)" Adobe-Japan1-0 ROM *Font GothicBBB-Medium-Ext-V: Ext-V "(3.003)" Adobe-Japan1-0 ROM *Font GothicBBB-Medium-NWP-H: NWP-H "(3.003)" Adobe-Japan1-0 ROM *Font GothicBBB-Medium-NWP-V: NWP-V "(3.003)" Adobe-Japan1-0 ROM *Font GothicBBB-Medium-RKSJ-V: RKSJ-V "(3.003)" Adobe-Japan1-0 ROM *Font GothicBBB-Medium-V: V "(3.003)" Adobe-Japan1-0 ROM *Font GothicBBB-Medium-78-V: 78-V "(3.003)" Adobe-Japan1-0 ROM *Font GothicBBB-Medium-83pv-RKSJ-H: 83pv-RKSJ-H "(3.003)" Adobe-Japan1-1 ROM *Font GothicBBB-Medium-Add-H: Add-H "(3.003)" Adobe-Japan1-1 ROM *Font GothicBBB-Medium-Add-RKSJ-H: Add-RKSJ-H "(3.003)" Adobe-Japan1-1 ROM *Font GothicBBB-Medium-Add-RKSJ-V: Add-RKSJ-V "(3.003)" Adobe-Japan1-1 ROM *Font GothicBBB-Medium-Add-V: Add-V "(3.003)" Adobe-Japan1-1 ROM *Font GothicBBB-Medium-EUC-H: EUC-H "(3.003)" Adobe-Japan1-1 ROM *Font GothicBBB-Medium-H: H "(3.003)" Adobe-Japan1-1 ROM *Font GothicBBB-Medium-RKSJ-H: RKSJ-H "(3.003)" Adobe-Japan1-1 ROM *Font GothicBBB-Medium-90pv-RKSJ-H: 90pv-RKSJ-H "(3.003)" Adobe-Japan1-1 ROM *Font GothicBBB-Medium-90pv-RKSJ-V: 90pv-RKSJ-V "(3.003)" Adobe-Japan1-1 ROM *Font AvantGarde-Book: Standard "(001.006S)" Standard ROM *Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM *Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM *Font Bookman-Demi: Standard "(001.004S)" Standard ROM *Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM *Font Bookman-Light: Standard "(001.004S)" Standard ROM *Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM *Font Courier: Standard "(002.004S)" Standard ROM *Font Courier-Bold: Standard "(002.004S)" Standard ROM *Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM *Font Courier-Oblique: Standard "(002.004S)" Standard ROM *Font Helvetica: Standard "(001.006S)" Standard ROM *Font Helvetica-Bold: Standard "(001.007S)" Standard ROM *Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM *Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM *Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM *Font Palatino-Bold: Standard "(001.005S)" Standard ROM *Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM *Font Palatino-Italic: Standard "(001.005S)" Standard ROM *Font Palatino-Roman: Standard "(001.005S)" Standard ROM *Font Symbol: Special "(001.007S)" Special ROM *Font Times-Bold: Standard "(001.007S)" Standard ROM *Font Times-BoldItalic: Standard "(001.009S)" Standard ROM *Font Times-Italic: Standard "(001.007S)" Standard ROM *Font Times-Roman: Standard "(001.007S)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM *Font ZapfDingbats: Special "(001.004S)" Special ROM *?FontQuery: " save { count 1 gt { exch dup 127 string cvs (/) print print (:) print /Font resourcestatus {pop pop (Yes)} {(No)} ifelse = } { exit } ifelse } bind loop (*) = flush restore" *End *?FontList: " save (*) {cvn ==} 128 string /Font resourceforall (*) = flush restore" *End *% Printer Messages (verbatim from printer): *Message: "%%[ exitserver: permanent state may be changed ]%%" *Message: "%%[ Flushing: rest of job (to end-of-file) will be ignored ]%%" *Message: "\FontName\ not found, using Courier" *% Status (format: %%[ status: ] %%) *Status: "idle" *Status: "busy" *Status: "waiting" *Status: "printing" *Status: "intializing" *Status: "printing test page" *Status: "PrinterError: needs attention" *Status: "PrinterError: cover open" *Status: "PrinterError: warming up" *Status: "PrinterError: resetting printer" *Status: "PrinterError: output bin full" *Status: "PrinterError: Paper Jam" *Status: "PrinterError: no toner cartridge" *Status: "PrinterError: manual feed" *Status: "PrinterError: out of paper" *Status: "PrinterError: page protect needed" *Status: "PrinterError: out of memory" *Status: "PrinterError: off line" *% Input Sources (format: %%[ status: ; source: ]%% ) *Source: "Parallel" *Source: "OptionalIO" *% Printer Error (format: %%[ PrinterError: ]%%) *PrinterError: "needs attention" *PrinterError: "cover open" *PrinterError: "warming up" *PrinterError: "resetting printer" *PrinterError: "output bin full" *PrinterError: "Paper Jam" *PrinterError: "no toner cartridge" *PrinterError: "manual feed" *PrinterError: "out of paper" *PrinterError: "page protect needed" *PrinterError: "out of memory" *PrinterError: "off line" *%DeviceAdjustMatrix: "[1 0 0 1 0 0]" *% Color Separation Information ===================== *DefaultColorSep: ProcessBlack.60lpi.600dpi/60 lpi / 600 dpi *InkName: ProcessBlack/Process Black *InkName: CustomColor/Custom Color *InkName: ProcessCyan/Process Cyan *InkName: ProcessMagenta/Process Magenta *InkName: ProcessYellow/Process Yellow *% For 60 lpi / 600 dpi =============================== *ColorSepScreenAngle ProcessBlack.60lpi.600dpi/60 lpi / 600 dpi: "45" *ColorSepScreenAngle CustomColor.60lpi.600dpi/60 lpi / 600 dpi: "45" *ColorSepScreenAngle ProcessCyan.60lpi.600dpi/60 lpi / 600 dpi: "15" *ColorSepScreenAngle ProcessMagenta.60lpi.600dpi/60 lpi / 600 dpi: "75" *ColorSepScreenAngle ProcessYellow.60lpi.600dpi/60 lpi / 600 dpi: "0" *ColorSepScreenFreq ProcessBlack.60lpi.600dpi/60 lpi / 600 dpi: "60" *ColorSepScreenFreq CustomColor.60lpi.600dpi/60 lpi / 600 dpi: "60" *ColorSepScreenFreq ProcessCyan.60lpi.600dpi/60 lpi / 600 dpi: "60" *ColorSepScreenFreq ProcessMagenta.60lpi.600dpi/60 lpi / 600 dpi: "60" *ColorSepScreenFreq ProcessYellow.60lpi.600dpi/60 lpi / 600 dpi: "60" *% For 53 lpi / 600 dpi =============================== *ColorSepScreenAngle ProcessBlack.53lpi.600dpi/53 lpi / 600 dpi: "45.0" *ColorSepScreenAngle CustomColor.53lpi.600dpi/53 lpi / 600 dpi: "45.0" *ColorSepScreenAngle ProcessCyan.53lpi.600dpi/53 lpi / 600 dpi: "71.5651" *ColorSepScreenAngle ProcessMagenta.53lpi.600dpi/53 lpi / 600 dpi: "18.4349" *ColorSepScreenAngle ProcessYellow.53lpi.600dpi/53 lpi / 600 dpi: "0.0" *ColorSepScreenFreq ProcessBlack.53lpi.600dpi/53 lpi / 600 dpi: "53.033" *ColorSepScreenFreq CustomColor.53lpi.600dpi/53 lpi / 600 dpi: "53.033" *ColorSepScreenFreq ProcessCyan.53lpi.600dpi/53 lpi / 600 dpi: "47.4342" *ColorSepScreenFreq ProcessMagenta.53lpi.600dpi/53 lpi / 600 dpi: "47.4342" *ColorSepScreenFreq ProcessYellow.53lpi.600dpi/53 lpi / 600 dpi: "50.0" *% Last Edit Date: May 9 1997 *% End of PPD file for Canguro *% The byte count of this file should be exactly 042434 or 043590 *% depending on the filesystem it resides in. *% end of PPD file for HP DesignJet 2500CP ifhp-3.5.20/fonts/0040755000175100017510000000000010130541267014115 5ustar papowellpapowellifhp-3.5.20/fonts/c1201b.100100644000175100017510000007041606020106243015146 0ustar papowellpapowell)s257W@0-@‡xÈ øØxCLRDCOUR (C) Copyright Computer Logic R & D S.A. - 1988 IBM old Greek CH. set : Esc(12G *c33E(s78W  x>>>>>>>>>>>>>>>>>>>ÿ€ÿ€ÿ€ÿ€>*c34E(s40W xü~ü~ü~ü~ü~ü~ü~x<ü~x?Àøþÿ€ÀààððpðððøðüàÿàÿÿÀÿ€qþààààààà*c37E(s109WxÀð?øx<ðàààðx<?øðxÃøà€üð?€þðÀÿààðÀx€8€8€8ÀxàðÿàÀ*c38E(s97Wxàüþ €€Ààð?ñð}ñðxùÀð}Àð?Àð?Àð€ø€ø€|?Àÿð?ùðàà*c39E(s42W  x€€??>>||xøðð`*c40E(s96W  (x€€€<<<xxxxððððððððððððxxxx<<<€€€*c41E(s56W (xÀààppx8<<<<8xppààÀ*c42E(s73Wxððððð`ð`xñàþgðÿÿð?ÿÀüøüžž€€*c43E(s120Wx ÿÿ€ÿÿÿÀÿÿÿÀÿÿ€ *c44E(s48W  xààÀÀ?€?€??~~||øøðp*c45E(s31W xÿÿüÿÿüÿÿüÿÿüÿÿü*c46E(s34W  x€€ÿÀÿÀÿÀ€€*c47E(s130W"&xÀààÀÀ€€€<8xxððààÀÀ€€<<xxpðà`*c48E(s112W xøþÿ€>À<À|àxàxàxàððððððððððððððððððððððððxàxàxà|à<À>À€ÿþø*c49E(s109WxàààÿàqààààààààààààààààààààààààÿÿÀÿÿÀÿÿÀ*c50E(s112W xüÿÿÀ?À|àxàxð0ðððððàààÀ€€>|øðàÀ€>p|pÿÿðÿÿðÿð*c51E(s112W xüÿÿ€?À<À0ààààààÀÀ€ÿþÿ€Àààðððððð@àðàþÀÿ€?ÿø*c52E(s112W x??ïïÏÏ<8xpà0ÿÿðÿÿðÿÿðÿÿàÿàÿðÿà*c53E(s109Wx?ÿÀ?ÿà?ÿà?ÿÀ<<<<<<<<ü?ÿ€?ÿÀ?à<ðððxxxxxxðð`àþàÿÿÀ?ÿü*c54E(s112W xàðÿàøÀ€><|xxøüóÿÿÿ€ÿÀþàüàøàøðøðøðøðøðxðxð<à>àÀÿ€ÿü*c55E(s109WxÿàÿÿàÿÿàÿÿààààÀÀÀ€€€<<8xxðððàààÀÀ*c56E(s112W xøÿÿ€?À|àxàxàððððððxàxà|à>Àÿ€þÿ€?À|àxàððððððððððøðxà|à>Àÿ€ÿü*c57E(s112W xøþÿ>€|ÀxÀøàðàðàððððððððøðxð|ð?ðÿðüðñààààÀÀ€?þøÿð€*c58E(s62W  x€€ÿÀÿÀÿÀ€€€€ÿÀÿÀÿÀ€€*c59E(s78W  x?À?Àààà?À?ÀàÀÀ?€?€??>~|||øøðp*c60E(s112Wx€€?€ÿüà€þøà€þþ€àøþ€àüÿ?€€€*c61E(s64W xÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€*c62E(s112WxàøþÀðüÿ?Àðüÿ?€?€ÿüð?ÀÿüðÀþøà*c63E(s109Wxð?üÿü€ð€ðÀ`ÀÀÀÀÀ€€~üðÀ€€€€ÀàðððàÀ*c64E(s124W $xðüþ<<8€x€p€p€p€ð?€àÿ€áÿ€ãÀダç€ç€ç€ç€çƒ€ãÀãÿÀñÿÀpù€ppxx8<ƒÿÿü*c65E(s132WxÿÀÿÀÿààð<ð<ð8xxxxxp<ð<ðàààÀÿÿÿÿ€ÿÿ€€ÀÀÀàààÿðüÿðüÿðü*c66E(s132Wxÿàÿÿøÿü~~ÿüÿüÿÿ€€ÀÀÀÀÀÀ€€ÿÿÿÿÿþÿÿð*c67E(s136Wx†ÿÿÿÿàÿ€?<<xxðððððððððøxx|<>€€àÿÿþÿð€*c68E(s132WxÿÀÿÿðÿøü>€€ÀÀÀÀÀÀÀÀÀÀ€€€>üÿøÿÿðÿ€*c69E(s103WxÿÿÿÿÿÿÿÿÿÇÇÀÀÿÀÿÀÿÀÀÀÀ€ÿÿÿÿÿÿÿÿÿ*c70E(s132WxÿÿÀÿÿÿÀÿÿÀ€À€À€À€À€À€áÀ€áÀ€à€àÿàÿàÿà€à€à€à€@€€€€€€€ÿÿÿ€ÿ*c71E(s136Wx?Ãÿÿ€ÿÿ€àÿ€€?€?€>€|€x€xøðððððððÿàðÿàøÿàx€x€|€>€?€€€à?€ÿÿ€ÿþ?ð*c72E(s132WxÁÿÿãÿ€Áÿ<<<<<<<<<ÿüÿüÿü<<<<<<<<<<<Áÿ€ÿãÿ€Áÿ€*c73E(s103Wxÿÿðÿÿðÿÿððððððððððððððððððððððððÿÿðÿÿðÿÿð*c74E(s132Wxÿÿ€ÿÿÀÿÿ€ððððððððððððððððððððððððððððàøàþÀÿ€?ÿü*c75E(s132Wxÿñÿ€ÿñÿ€ÿñÿ€|øðàÀ€<xððø|>€Ààðø|>ÿðÿÀÿðÿÀÿðÿÀ*c76E(s132Wxÿÿ€ÿÿ€ÿÿ€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÿÿÀÿÿÿÀÿÿÿÀ*c77E(s132Wxð€ðÀðÀÀÀÀàÀà;Àà;Àð;ÀpsÀpsÀxsÀ8ãÀ8ãÀÃÀÃÀÃÀƒÀƒÀƒÀÀÀÀÀÀÀÿÀøÿà?øÿÀø*c78E(s132Wxÿ€àÿÀÿàÿÀàà€à€ð€p€x€8€<€€€€€€‡€‡€Ç€ç€ç€÷€w€€?€?€€ø€ø€ø€*c79E(s136Wx€ÿðÿøÀü>><|€x€x€ðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀx€x€|€<>>Àüÿøÿð€*c80E(s132WxÿÿÀÿÿøÿÿþ€€€€€€€€€€€€€€€€€€~ÿüÿøÿÀ€€€€€€€€ÿÿÿÿÿ*c81E(s164W%x€ÿàÿøÀü>><|€x€x€ð€ðÀðÀðÀðÀðÀðÀðÀðÀpÀx€x€|€<>>Àüÿøÿð€àÀ¿Ã€ÿÿ€ÿÿ€Àÿ*c82E(s132WxÿÿÀÿÿøÿÿü~>~ÿüÿøÿÀàððøx|<>ÿðàÿðàÿðà*c83E(s106Wxþ8ÿüÿüƒü>ü<|x?Àÿÿàÿð?øü<>pðøøü<þ|ÿøÿðÿàpÿ*c84E(s132Wxÿÿ€ÿÿÿÀÿÿÿÀðÀðÀðÀðÀðÀðÀðÀðÀðÀ`€ÿøÿüÿø*c85E(s132WxÿàÿÀÿàÿàÿàÿÀ€€>àüÿøÿð?€*c86E(s132Wxð?øÿø?üð?øààÀ€À€€€€À€Ààààððxx<x8ÿ€÷€çÀãàÁàð€øx|>>ÿÁÿ€ÿÁÿ€ÿÁÿ€*c89E(s132WxÿàÿÀÿàÿÀÿÀÿÀ€<€xÀxÀðàðáàñÀóÀ{€€??ÿøÿøÿø*c90E(s103WxÿüÿüÿüxøxðxðxàxÀx€x€0><xøðà àÀ€€>|ÿþÿþÿþ*c91E(s92W  &xÿÀÿÀÿÀððððððððððððððððððððððððððððððððÿÀÿÀÿÀ*c92E(s160W$0xààpp888€€€ÀÀàààpp888 €€ÀÀÀàààpp88*c93E(s92W  &xÿÀÿÀÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÀÿÀÿÀ*c94E(s49W! xÀàððx<<xpà€À€*c95E(s32Wÿÿÿô xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*c96E(s42W  x€€€>>~~üü*c97E(s104WxÿÿÀÿàƒððøxxÿxÿø?ÿøø|xøxðxðxðøøø|øÿÿ€?þ€ø?€*c98E(s144W xþþþÀøÿüð~À€€€€ÀÀÀÀÀÀ€€€€Àðþÿþþøþ?à*c99E(s82WxÿÿÿÿÿÁÿ>|?xøððððððxx|>?þÿüÿðÿ*c100E(s144W xþþþþÿžÿþƒþ>þ|~x>ø>ðððððø>x>|~~þ?ƒþÿßÀÿŸàþÀ*c101E(s82Wxÿ€ÿàÿðü>||>xxðÿÿÿÿÿÿÿÿþððøx|>€ÿÿþÿðÿ€*c102E(s112W xðøÿøð0àÀÀÀÀÀÿÿðÿÿðÿÿðÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÿàÿÿðÿÿà*c103E(s144W xü?€ÿ?€ÿÿ€?‡ü>ü||x|ø<ð<ð<ð<ð<ð<ø<x|||~ü?üÿüÿ<ü<<<<<||øøÿðÿÀþ*c104E(s144W xþþþ€àÿðáø€||<<<<<<<<<<<<<ÿÁÿ€ÿÁÿ€ÿÁÿ€*c105E(s118W!"xxøøøøøxøøøxxxxxxxxxxxxxxxxÿÿþÿÿþÿÿþ*c106E(s148W!,x>>>>>ÿÿ€ÿÿ€ÿÿ€€€€€€€€€€€€€€€€€€€€€€€€€ÿþÿøÀ*c107E(s144W xÿÿÿÿÿÿðÀ€<xøüÞŸ€ÀàðøxÿÿÀÿÿÀÿÿÀ*c108E(s112W x?ø?ø?øxxxxxxxxxxxxxxxxxxxxxxxxxxÿüÿÿüÿü*c109E(s104Wxÿ~€ÿÿàÿÿà‡ñðàðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðãðüÿãøþÿãð|*c110E(s104Wxþ?ÀþÿðÿÿøÀø€|<<<<<<<<<<<<<<ÿÁÿ€ÿÁÿ€ÿÁÿ€*c111E(s104Wxÿ€ÿàÿø€ü>>|xxð€ð€ð€ð€ð€ð€xx|>>€üÿøÿàÿ€*c112E(s144W xþÀþøþÿüð~À€€€€ÀÀÀÀÀÀÀ€€€Àðÿþøàÿüÿþÿü*c113E(s144W xþÀÿŸÀÿßÀÇþ>þ|~x>x>ððððððø>x>|~>þ?ƒþÿÞÿžüÿÀÿÀÿÀ*c114E(s104WxÁÿÇÿ€Ïÿ€ßüøðàÀÀÀÀÀÀÀÀÀÀÀÿÿðÿÿðÿÿð*c115E(s82Wxø`ÿð?ÿð|ðøððððàðüÿ?ÿÀÿðÿðøàxðxðxüðÿðÿÿàÿÿÀaþ*c116E(s136Wx€ÀÀÀÀÀÀÀÿøÿÿüÿÿøÀÀÀÀÀÀÀÀÀÀÀÀÀÀà€ð€ÿÿüÀ*c117E(s104Wxþüþüþü<<<<<<<<<<<<<|üüÿÿ€ÿ¿Àþ?€*c118E(s104Wxÿàÿðÿàÿðÿàÿð€€À<À<Àxàxàðððñàyà{À;À?€€*c119E(s104WxÿÀüÿÀüÿÀü<p<ð<à€ààÁÀÁÀÃÀ ãÀ〜〜÷€¸wøwøø>ð>ð>à*c120E(s104WxÀÿ€áÿÀÀÿ€€<ÀxàðñàûÀ€??€ûÀñààðÀx€<ÀÿÀÿàÿÀÿÀÿÀ*c121E(s144W xÿààÿààÿàà€€ÀÀ<à8àxðpððøðyàyà?À?À€€<<xxðÿÿÿ*c122E(s82Wx?ÿàÿðÿðpðpàpÀp€ >|xðàÀ€ pp<pxpÿðÿÿðÿà*c123E(s92W&xÿþðàààààààààààÀ€ÿÿ€ÀÀààààààààààðþÿ*c124E(s68W &4xðððððððððððððððððððððððððððððððððððððððððððððððððððð*c125E(s92W&xxþÿ€€€€€€€€€€€ÀàþÿÿþàÀ€€€€€€€€€€€ÿþx*c126E(s37W x ð?ÿüÿøÿÿðà?àÀ*c127E(s128Wxø>€ø>€ø>€ø>€Áð|Áð|Áð|Áð|ø>€ø>€ø>€ø>€Áð|Áð|Áð|Áð|ø>€ø>€ø>€ø>€Áð|Áð|Áð|Áð|ø>€ø>€ø>€ø>€*c128E(s132WxÿÀÿÀÿààð<ð<ð8xxxxxp<ð<ðàààÀÿÿÿÿ€ÿÿ€€ÀÀÀàààÿðüÿðüÿðü*c129E(s132Wxÿàÿÿøÿü~~ÿüÿüÿÿ€€ÀÀÀÀÀÀ€€ÿÿÿÿÿþÿÿð*c130E(s132Wxÿÿ€ÿÿÿ€ÿÿ€À€À€À€À€À€À€À€À€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÿÿ€ÿ*c131E(s132WxÿÀÿÀÿààð<ð<ð8xxxxxp<ð<ðàààÀÀÀ€€€€ÀÀÀàààÿÿÿüÿÿÿüÿÿÿü*c132E(s103WxÿÿÿÿÿÿÿÿÿÇÇÀÀÿÀÿÀÿÀÀÀÀ€ÿÿÿÿÿÿÿÿÿ*c133E(s103WxÿüÿüÿüxøxðxðxàxÀx€x€0><xøðà àÀ€€>|ÿþÿþÿþ*c134E(s132WxÁÿÿãÿ€Áÿ<<<<<<<<<ÿüÿüÿü<<<<<<<<<<<Áÿ€ÿãÿ€Áÿ€*c135E(s136Wx€ÿðÿøÀü>><|€x€x€ðÀñ#Àñ€cÀñÿãÀñÿãÀñÿãÀñ€cÀñ#ÀðÀðÀx€x€|€<>>Àüÿøÿð€*c136E(s103Wxÿÿðÿÿðÿÿððððððððððððððððððððððððÿÿðÿÿðÿÿð*c137E(s132Wxÿñÿ€ÿñÿ€ÿñÿ€|øðàÀ€<xððø|>€Ààðø|>ÿðÿÀÿðÿÀÿðÿÀ*c138E(s132WxÿÀÿÀÿààð<ð<ð8xxxxxp<ð<ðàààÀÀÀ€€€€ÀÀÀàààÿðüÿðüÿðü*c139E(s132Wxð€ðÀðÀÀÀÀàÀà;Àà;Àð;ÀpsÀpsÀxsÀ8ãÀ8ãÀÃÀÃÀÃÀƒÀƒÀƒÀÀÀÀÀÀÀÿÀøÿà?øÿÀø*c140E(s132Wxÿ€àÿÀÿàÿÀàà€à€ð€p€x€8€<€€€€€€‡€‡€Ç€ç€ç€÷€w€€?€?€€ø€ø€ø€*c141E(s132Wxÿÿÿ€ÿÿÿ€ÿÿÿ€à€à€à€à€à€à€à€ `ÿàÿàÿà` à€à€à€à€à€à€à€ÿÿÿ€ÿÿÿ€ÿÿÿ€*c142E(s136Wx€ÿðÿøÀü>><|€x€x€ðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀx€x€|€<>>Àüÿøÿð€*c143E(s132Wxÿÿÿ€ÿÿÿ€ÿÿÿ€<<<<<<<<<<<<<<<<<<<<<<<ÿáÿ€ÿáÿ€ÿáÿ€*c144E(s132WxÿÿÀÿÿøÿÿþ€€€€€€€€€€€€€€€€€€~ÿüÿøÿÀ€€€€€€€€ÿÿÿÿÿ*c145E(s103Wxÿÿÿÿÿÿx|>€Ààðø|>>|øðàÀ€>|øÿÿÿÿÿÿÿÿÿ*c146E(s132Wxÿÿ€ÿÿÿÀÿÿÿÀðÀðÀðÀðÀðÀðÀðÀðÀðÀ`€ÿøÿüÿø*c147E(s132WxÿàÿÀÿàÿÀÿÀÿÀ€<€xÀxÀðàðáàñÀóÀ{€€??ÿøÿøÿø*c148E(s132WxÿðÿðÿðÿÀÿøÿþ?ž?|€x€øÀðÀðÀðÀðÀøÀx€|€?ž?ÿþÿøÿÀÿðÿðÿð*c149E(s132WxÀÿÁÿ€ÿ<x€x€ðÁàãàãÀ÷€ÿ€~>ÿ€÷€çÀãàÁàð€øx|>>ÿÁÿ€ÿÁÿ€ÿÁÿ€*c150E(s132Wxü?Ãðü?Ãðü?Ãðxàxàxàxàxàxàxà|à<À>À€Ï?ÿþÿøàÿøÿøÿø*c151E(s136Wxÿ€ÿðÿøÁü?~>?|xø€ð€ð€ð€ð€ð€ð€ø€x|>>?|€øÁðÁàÁÀáÁÀáÁÀáÁÀÿÁÿ€ÿÁÿ€ÿÁÿ€*c152E(s108WxþàÿàÿÁà‡ãÀ>ãÀ|÷€xw€øð?ð>ðððð<ð<ð|øüxþ|þ`?ÎàÿàþàøÀ*c153E(s142W*xþÿ€ÿÀ?à|àxðøððððððððàðàðÿÀñÿÀðÿððøð|ð<ððððððøø<ü<þxÿø÷ÿðóÿàðÿ€ðððððððððð*c154E(s144W x>À€ÀÿÀ€óà>ñà|ñðø`ñðñà{à{À?€?€? *c155E(s144W xÿÿÀÿà?à<à<<>€üÿ€ÿàÿø€ü>>|xø€ð€ð€ð€ð€ð€ð€ø€x|>>€üÿøÿàÿ€*c156E(s82Wxÿ€ÿàÿø?ü|||?øÿðÿÀÿ*c157E(s145W+xÿÿÿÿÿÿÿÿÿ>üðÀ~øðÀ€><xxxðððððððxx|>€ÿðÿüÿþ~?ü?ð?À*c158E(s112W x|Àþð~ÿøÀø€|<<<<<<<<<<<<<<<< <<<<<<<<<<*c159E(s112W xøþÿ€>À<À|àxàxàøðððððððððÿÿðÿÿðÿÿðððððððððððððxàxà|à<À>À€ÿþø*c160E(s60W  xððððððððððððððððððÀñàyàÀ€*c161E(s104Wx<À€ÿç€>ç€|ç€üGüƒü‡¸<ž8<8xxðpàxÀp€pÀqàyà<Àx?€ð*c162E(s112W xÿÿÀÿÀààðððxxx<<<>~~ÿïçǀǀƒ€ƒÀÀààö<ö<~x~x<*c163E(s144W x|<þ<~<<<<<<<<<<<<<||üüÿþÿ¿ÀþÀÀ*c164E(s104Wxøüþ€€€€€€€€À€Àààðð>ø|xø}ð?à?À€*c165E(s145W+xÿÿþÿÿþÿÿþøÿÀüÀ?<xxxx<?øÿ€ÿ€ÿ€øà€>|xðððððø~ÿàÿøÿü><üøà€*c166E(s104Wxÿ€ÿàÿø€ü>>|xø€ð€ð€ð€ð€ð€ð€ø€x|>>€üÿøÿàÿ€*c167E(s104Wxÿÿøÿÿøÿÿÿøàð<Àð<ð<ð<ð<ð<ð<ð<ð<ð<ð<ð<ð<ð<ð<0ð>|xx€ð€ð€ð€ð€ð€ð€ø€øüþ>ÿ€üÿÿøóÿàðÿ€ðððððððððð*c169E(s104Wxÿÿðÿÿðÿÿà€ü>>|xx€ð€ð€ð€ð€ð€ð€x€x|>>€üÿøÿàÿ€*c170E(s100Wxÿ€ÿàÿø?€ü|ÿÀÀÀÀÀÀÀÀÀÀ€€€à?ÿþÿø?à*c173E(s144W xðÇüþ>|x€ø€ð€ðÀðÀðÀðÀðÀðÀðÀø€x€|€>ž~ÿüÿðÿÀ*c174E(s112W x€ÿÀ>à<à|ðxððñðùà{à{À€?€??>>ÿ÷€ç€ç€ÃÀÃÀÀààö>ö<þ|~ø|*c175E(s184W*x€€€€€€€€€|þ€ÿ‡ÀïƒÀƒààð€ð€ð€ð€ð€ð€ð€ððàƒà‡‡À矀ÿÿÿüð€€€€€€€€€€*c176E(s184W%*xø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€¸>€ø>€ø>€ø>€*c177E(s216W%2xø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€Áð|Áð|Áð|Áð|Áð|Áð|Áð|Áð|Áð|ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€Áð|Áð|Áð|Áð|Áð|Áð|Áð|Áð|Áð|ø>€ø>€ø>€ø>€¸>€ø>€ø>€ø>€Áð|Áð|Áð|Áð|Áð|Áð|Áð|Áð|*c178E(s216W%2xÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€ÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüø>€ø>€ø>€ø>€ø>€ø>€ø>€ø>€*c179E(s66W%2xàààààààààààààààààààààààààààààààààààààààààààààààààà*c180E(s166W%2x€€€€€€€€€€€€€€€€€€€€€€€€ÿÿ€ÿÿ€ÿÿ€€€€€€€€€€€€€€€€€€€€€€€€*c181E(s166W%2x€€€€€€€€€€€€€€€€€€€ÿÿ€ÿÿ€ÿÿ€€€€€€€ÿÿ€ÿÿ€ÿÿ€€€€€€€€€€€€€€€€€€€€*c182E(s166W%2xp8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8ÿð8ÿð8ÿð8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8*c183E(s94W xÿÿøÿÿøÿÿøp8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8*c184E(s109Wxÿÿ€ÿÿ€ÿÿ€€€€€€€ÿÿ€ÿÿ€ÿÿ€€€€€€€€€€€€€€€€€€€€*c185E(s166W%2xp8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8ÿð8ÿð8ÿð8888888ÿð8ÿð8ÿð8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8*c186E(s116W % 2xàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàp*c187E(s109Wxÿÿøÿÿøÿÿø888888ÿð8ÿð8ÿð8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8*c188E(s109W%xp8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8ÿð8ÿð8ÿð8888888ÿÿøÿÿøÿÿø*c189E(s97W%xp8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8ÿÿøÿÿøÿÿø*c190E(s109W%x€€€€€€€€€€€€€€€€€€€ÿÿ€ÿÿ€ÿÿ€€€€€€€ÿÿ€ÿÿ€ÿÿ€*c191E(s94W xÿÿ€ÿÿ€ÿÿ€€€€€€€€€€€€€€€€€€€€€€€€*c192E(s70W%xààààààààààààààààààààààààÿÿÿÿÿÿ*c193E(s124W%x€€€€€€€€€€€€€€€€€€€€€€€€ÿÿÿüÿÿÿüÿÿÿü*c194E(s120W xÿÿÿüÿÿÿüÿÿÿü€€€€€€€€€€€€€€€€€€€€€€€*c195E(s116W%2xààààààààààààààààààààààààÿÿÿÿÿÿààààààààààààààààààààààà*c196E(s28W xÿÿÿüÿÿÿüÿÿÿü*c197E(s216W%2x€€€€€€€€€€€€€€€€€€€€€€€€ÿÿÿüÿÿÿüÿÿÿü€€€€€€€€€€€€€€€€€€€€€€€*c198E(s116W%2xàààààààààààààààààààÿÿÿÿÿÿààààààÿÿÿÿÿÿààààààààààààààààààà*c199E(s166W %2xàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàøàøàøàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàp*c200E(s109W %xàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàøàøàøààààààÿÿøÿÿøÿÿø*c201E(s109W xÿÿøÿÿøÿÿøàààààààøàøàøàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàp*c202E(s140W%xp8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8ÿð?üÿð?üÿð?üÿÿÿüÿÿÿüÿÿÿü*c203E(s140Wxÿÿÿüÿÿÿüÿÿÿüÿð?üÿð?üÿð?üp8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8*c204E(s166W %2xàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàøàøàøàààààààøàøàøàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàp*c205E(s64W xÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿü*c206E(s216W%2xp8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8ÿð?üÿð?üÿð?üÿð?üÿð?üÿð?üp8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8*c207E(s140W%x€€€€€€€€€€€€€€€€€€€ÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿü*c208E(s124W%xp8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8ÿÿÿüÿÿÿüÿÿÿü*c209E(s140Wxÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿü€€€€€€€€€€€€€€€€€€€*c210E(s120W xÿÿÿüÿÿÿüÿÿÿüp8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8*c211E(s97W %xàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpÿÿøÿÿøÿÿø*c212E(s78W%xàààààààààààààààààààÿÿÿÿÿÿààààààÿÿÿÿÿÿ*c213E(s78Wxÿÿÿÿÿÿààààààÿÿÿÿÿÿààààààààààààààààààà*c214E(s94W xÿÿøÿÿøÿÿøàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàpàp*c215E(s216W%2xp8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8ÿÿÿüÿÿÿüÿÿÿüp8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8p8*c216E(s216W%2x€€€€€€€€€€€€€€€€€€€ÿÿÿüÿÿÿüÿÿÿü€€€€€€ÿÿÿüÿÿÿüÿÿÿü€€€€€€€€€€€€€€€€€€€*c217E(s97W%x€€€€€€€€€€€€€€€€€€€€€€€€ÿÿ€ÿÿ€ÿÿ€*c218E(s68W xÿÿÿÿÿÿààààààààààààààààààààààà*c219E(s216W%2xÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿü*c220E(s116W xÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿü*c221E(s116W%2xÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþ*c222E(s116W%2xÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþ*c223E(s116W%xÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿü*c224E(s104Wx€>À|àxàxðððððððððððððððððððxàxà|?ÃÀ?ûÿÀñÿ€àÿ€<*c225E(s144W xþüðàÀþàÿàÿÁà‡ãÀ>ãÀ|÷€xw€øð?ð>ðððð<ð<ð|øüxþ|þ`?ÎàÿàþàøÀ*c226E(s112W xþüøàÀ€ÿ€ÿàÿø?ü|||?øÿðÿÀÿ*c227E(s142W*xüøðÀ€?<|Àþð~ÿøÀø€|<<<<<<<<<<<<<<<< <<<<<<<<<<*c228E(s112W xüðüðüðüðððððððððððððððððððÀñàyàÀ€*c229E(s80W  xøðà€?~xððððððððððððððððððÀñàyàÀ€*c230E(s144W xþüðàÀ€ÿ€ÿàÿø€ü>>|xø€ð€ð€ð€ð€ð€ð€ø€x|>>€üÿøÿàÿ€*c231E(s144W xþüøàÀ€|<þ>ÿÀÀÀÀÀÀÀÀÀÀ€€€à?ÿþÿø?à*c232E(s144W x?~?~?~?~|<þ>ÿÀÀÀÀÀÀÀÀÀÀ€€€à?ÿþÿø?à*c233E(s144W xÀ?€üøðÀ€>À|àxàxðððððððððððððððððððøàxà|?ÃÀ?ûÿÀñÿ€àÿ€<*c234E(s133W!'x?ð~ÿñüóðÀ?üñðÏø?üüð@<|øðÀ€þþþ*c235E(s133W!'x?ð~ÿñü÷ðÀ~øààð~ðøðàppp>>ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€>>>*c247E(s58WxÀ?øÿÿÿÿþðü@ðÀ?øÿÿÿÿþðü@ð*c248E(s44WxÀ?ðxx`8àÀ À À À àp8xx?ðÀ*c249E(s82W!xÀ?ðxxð<à<àpx<À?ðxx`8àÀ À À À àp8xx?ðÀàðx8ð8ðxxð?à€*c250E(s104Wxÿ€ÿàÿøÿü?ÿþÿÿÿÿÿÿÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿÿÿÿ?ÿþÿüÿøÿàÿ€*c251E(s221Wÿÿ%!)x€?€?<xxxððàààÀÀÀ€€€ÿ€ûÀÀÀààà<ð<ðxpxxxxð<ð<à=ààÀÀ€€€*c252E(s124Wxÿÿÿàÿÿÿàÿÿÿàààààààààààààààààààààààààààààààààààààààààààÿÿÿàÿÿÿàÿÿÿà*c253E(s56WxÀ?ðøxx`<<<<xxðàÀ€>|ðÿþÿþü*c254E(s124Wxÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàÿÿÿàifhp-3.5.20/fonts/cp12.fnt0100644000175100017510000005100006020106243015356 0ustar papowellpapowell)s257W@0-@‡xÈ øØxCLRDCOUR (C) Copyright Computer Logic R & D S.A. - 1988 IBM old Greek CH. set : Esc(12G *c33E(s78W  x>>>>>>>>>>>>>>>>>>>ÿ€ÿ€ÿ€ÿ€>*c34E(s40W xü~ü~ü~ü~ü~ü~ü~x<ü~x?Àøþÿ€ÀààððpðððøðüàÿàÿÿÀÿ€qþààààààà*c37E(s109WxÀð?øx<ðàààðx<?øðxÃøà€üð?€þðÀÿààðÀx€8€8€8ÀxàðÿàÀ*c38E(s97Wxàüþ €€Ààð?ñð}ñðxùÀð}Àð?Àð?Àð€ø€ø€|?Àÿð?ùðàà*c39E(s42W  x€€??>>||xøðð`*c40E(s96W  (x€€€<<<xxxxððððððððððððxxxx<<<€€€*c41E(s56W (xÀààppx8<<<<8xppààÀ*c42E(s73Wxððððð`ð`xñàþgðÿÿð?ÿÀüøüžž€€*c43E(s120Wx ÿÿ€ÿÿÿÀÿÿÿÀÿÿ€ *c44E(s48W  xààÀÀ?€?€??~~||øøðp*c45E(s31W xÿÿüÿÿüÿÿüÿÿüÿÿü*c46E(s34W  x€€ÿÀÿÀÿÀ€€*c47E(s130W"&xÀààÀÀ€€€<8xxððààÀÀ€€<<xxpðà`*c48E(s112W xøþÿ€>À<À|àxàxàxàððððððððððððððððððððððððxàxàxà|à<À>À€ÿþø*c49E(s109WxàààÿàqààààààààààààààààààààààààÿÿÀÿÿÀÿÿÀ*c50E(s112W xüÿÿÀ?À|àxàxð0ðððððàààÀ€€>|øðàÀ€>p|pÿÿðÿÿðÿð*c51E(s112W xüÿÿ€?À<À0ààààààÀÀ€ÿþÿ€Àààðððððð@àðàþÀÿ€?ÿø*c52E(s112W x??ïïÏÏ<8xpà0ÿÿðÿÿðÿÿðÿÿàÿàÿðÿà*c53E(s109Wx?ÿÀ?ÿà?ÿà?ÿÀ<<<<<<<<ü?ÿ€?ÿÀ?à<ðððxxxxxxðð`àþàÿÿÀ?ÿü*c54E(s112W xàðÿàøÀ€><|xxøüóÿÿÿ€ÿÀþàüàøàøðøðøðøðøðxðxð<à>àÀÿ€ÿü*c55E(s109WxÿàÿÿàÿÿàÿÿààààÀÀÀ€€€<<8xxðððàààÀÀ*c56E(s112W xøÿÿ€?À|àxàxàððððððxàxà|à>Àÿ€þÿ€?À|àxàððððððððððøðxà|à>Àÿ€ÿü*c57E(s112W xøþÿ>€|ÀxÀøàðàðàððððððððøðxð|ð?ðÿðüðñààààÀÀ€?þøÿð€*c58E(s62W  x€€ÿÀÿÀÿÀ€€€€ÿÀÿÀÿÀ€€*c59E(s78W  x?À?Àààà?À?ÀàÀÀ?€?€??>~|||øøðp*c60E(s112Wx€€?€ÿüà€þøà€þþ€àøþ€àüÿ?€€€*c61E(s64W xÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€*c62E(s112WxàøþÀðüÿ?Àðüÿ?€?€ÿüð?ÀÿüðÀþøà*c63E(s109Wxð?üÿü€ð€ðÀ`ÀÀÀÀÀ€€~üðÀ€€€€ÀàðððàÀ*c64E(s124W $xðüþ<<8€x€p€p€p€ð?€àÿ€áÿ€ãÀダç€ç€ç€ç€çƒ€ãÀãÿÀñÿÀpù€ppxx8<ƒÿÿü*c65E(s132WxÿÀÿÀÿààð<ð<ð8xxxxxp<ð<ðàààÀÿÿÿÿ€ÿÿ€€ÀÀÀàààÿðüÿðüÿðü*c66E(s132Wxÿàÿÿøÿü~~ÿüÿüÿÿ€€ÀÀÀÀÀÀ€€ÿÿÿÿÿþÿÿð*c67E(s136Wx†ÿÿÿÿàÿ€?<<xxðððððððððøxx|<>€€àÿÿþÿð€*c68E(s132WxÿÀÿÿðÿøü>€€ÀÀÀÀÀÀÀÀÀÀ€€€>üÿøÿÿðÿ€*c69E(s103WxÿÿÿÿÿÿÿÿÿÇÇÀÀÿÀÿÀÿÀÀÀÀ€ÿÿÿÿÿÿÿÿÿ*c70E(s132WxÿÿÀÿÿÿÀÿÿÀ€À€À€À€À€À€áÀ€áÀ€à€àÿàÿàÿà€à€à€à€@€€€€€€€ÿÿÿ€ÿ*c71E(s136Wx?Ãÿÿ€ÿÿ€àÿ€€?€?€>€|€x€xøðððððððÿàðÿàøÿàx€x€|€>€?€€€à?€ÿÿ€ÿþ?ð*c72E(s132WxÁÿÿãÿ€Áÿ<<<<<<<<<ÿüÿüÿü<<<<<<<<<<<Áÿ€ÿãÿ€Áÿ€*c73E(s103Wxÿÿðÿÿðÿÿððððððððððððððððððððððððÿÿðÿÿðÿÿð*c74E(s132Wxÿÿ€ÿÿÀÿÿ€ððððððððððððððððððððððððððððàøàþÀÿ€?ÿü*c75E(s132Wxÿñÿ€ÿñÿ€ÿñÿ€|øðàÀ€<xððø|>€Ààðø|>ÿðÿÀÿðÿÀÿðÿÀ*c76E(s132Wxÿÿ€ÿÿ€ÿÿ€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÿÿÀÿÿÿÀÿÿÿÀ*c77E(s132Wxð€ðÀðÀÀÀÀàÀà;Àà;Àð;ÀpsÀpsÀxsÀ8ãÀ8ãÀÃÀÃÀÃÀƒÀƒÀƒÀÀÀÀÀÀÀÿÀøÿà?øÿÀø*c78E(s132Wxÿ€àÿÀÿàÿÀàà€à€ð€p€x€8€<€€€€€€‡€‡€Ç€ç€ç€÷€w€€?€?€€ø€ø€ø€*c79E(s136Wx€ÿðÿøÀü>><|€x€x€ðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀx€x€|€<>>Àüÿøÿð€*c80E(s132WxÿÿÀÿÿøÿÿþ€€€€€€€€€€€€€€€€€€~ÿüÿøÿÀ€€€€€€€€ÿÿÿÿÿ*c81E(s164W%x€ÿàÿøÀü>><|€x€x€ð€ðÀðÀðÀðÀðÀðÀðÀðÀpÀx€x€|€<>>Àüÿøÿð€àÀ¿Ã€ÿÿ€ÿÿ€Àÿ*c82E(s132WxÿÿÀÿÿøÿÿü~>~ÿüÿøÿÀàððøx|<>ÿðàÿðàÿðà*c83E(s106Wxþ8ÿüÿüƒü>ü<|x?Àÿÿàÿð?øü<>pðøøü<þ|ÿøÿðÿàpÿ*c84E(s132Wxÿÿ€ÿÿÿÀÿÿÿÀðÀðÀðÀðÀðÀðÀðÀðÀðÀ`€ÿøÿüÿø*c85E(s132WxÿàÿÀÿàÿàÿàÿÀ€€>àüÿøÿð?€*c86E(s132Wxð?øÿø?üð?øààÀ€À€€€€À€Ààààððxx<x8ÿ€÷€çÀãàÁàð€øx|>>ÿÁÿ€ÿÁÿ€ÿÁÿ€*c89E(s132WxÿàÿÀÿàÿÀÿÀÿÀ€<€xÀxÀðàðáàñÀóÀ{€€??ÿøÿøÿø*c90E(s103WxÿüÿüÿüxøxðxðxàxÀx€x€0><xøðà àÀ€€>|ÿþÿþÿþ*c91E(s92W  &xÿÀÿÀÿÀððððððððððððððððððððððððððððððððÿÀÿÀÿÀ*c92E(s160W$0xààpp888€€€ÀÀàààpp888 €€ÀÀÀàààpp88*c93E(s92W  &xÿÀÿÀÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÀÿÀÿÀ*c94E(s49W! xÀàððx<<xpà€À€*c95E(s32Wÿÿÿô xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*c96E(s42W  x€€€>>~~üü*c97E(s104WxÿÿÀÿàƒððøxxÿxÿø?ÿøø|xøxðxðxðøøø|øÿÿ€?þ€ø?€*c98E(s144W xþþþÀøÿüð~À€€€€ÀÀÀÀÀÀ€€€€Àðþÿþþøþ?à*c99E(s82WxÿÿÿÿÿÁÿ>|?xøððððððxx|>?þÿüÿðÿ*c100E(s144W xþþþþÿžÿþƒþ>þ|~x>ø>ðððððø>x>|~~þ?ƒþÿßÀÿŸàþÀ*c101E(s82Wxÿ€ÿàÿðü>||>xxðÿÿÿÿÿÿÿÿþððøx|>€ÿÿþÿðÿ€*c102E(s112W xðøÿøð0àÀÀÀÀÀÿÿðÿÿðÿÿðÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÿàÿÿðÿÿà*c103E(s144W xü?€ÿ?€ÿÿ€?‡ü>ü||x|ø<ð<ð<ð<ð<ð<ø<x|||~ü?üÿüÿ<ü<<<<<||øøÿðÿÀþ*c104E(s144W xþþþ€àÿðáø€||<<<<<<<<<<<<<ÿÁÿ€ÿÁÿ€ÿÁÿ€*c105E(s118W!"xxøøøøøxøøøxxxxxxxxxxxxxxxxÿÿþÿÿþÿÿþ*c106E(s148W!,x>>>>>ÿÿ€ÿÿ€ÿÿ€€€€€€€€€€€€€€€€€€€€€€€€€ÿþÿøÀ*c107E(s144W xÿÿÿÿÿÿðÀ€<xøüÞŸ€ÀàðøxÿÿÀÿÿÀÿÿÀ*c108E(s112W x?ø?ø?øxxxxxxxxxxxxxxxxxxxxxxxxxxÿüÿÿüÿü*c109E(s104Wxÿ~€ÿÿàÿÿà‡ñðàðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðãðüÿãøþÿãð|*c110E(s104Wxþ?ÀþÿðÿÿøÀø€|<<<<<<<<<<<<<<ÿÁÿ€ÿÁÿ€ÿÁÿ€*c111E(s104Wxÿ€ÿàÿø€ü>>|xxð€ð€ð€ð€ð€ð€xx|>>€üÿøÿàÿ€*c112E(s144W xþÀþøþÿüð~À€€€€ÀÀÀÀÀÀÀ€€€Àðÿþøàÿüÿþÿü*c113E(s144W xþÀÿŸÀÿßÀÇþ>þ|~x>x>ððððððø>x>|~>þ?ƒþÿÞÿžüÿÀÿÀÿÀ*c114E(s104WxÁÿÇÿ€Ïÿ€ßüøðàÀÀÀÀÀÀÀÀÀÀÀÿÿðÿÿðÿÿð*c115E(s82Wxø`ÿð?ÿð|ðøððððàðüÿ?ÿÀÿðÿðøàxðxðxüðÿðÿÿàÿÿÀaþ*c116E(s136Wx€ÀÀÀÀÀÀÀÿøÿÿüÿÿøÀÀÀÀÀÀÀÀÀÀÀÀÀÀà€ð€ÿÿüÀ*c117E(s104Wxþüþüþü<<<<<<<<<<<<<|üüÿÿ€ÿ¿Àþ?€*c118E(s104Wxÿàÿðÿàÿðÿàÿð€€À<À<Àxàxàðððñàyà{À;À?€€*c119E(s104WxÿÀüÿÀüÿÀü<p<ð<à€ààÁÀÁÀÃÀ ãÀ〜〜÷€¸wøwøø>ð>ð>à*c120E(s104WxÀÿ€áÿÀÀÿ€€<ÀxàðñàûÀ€??€ûÀñààðÀx€<ÀÿÀÿàÿÀÿÀÿÀ*c121E(s144W xÿààÿààÿàà€€ÀÀ<à8àxðpððøðyàyà?À?À€€<<xxðÿÿÿ*c122E(s82Wx?ÿàÿðÿðpðpàpÀp€ >|xðàÀ€ pp<pxpÿðÿÿðÿà*c123E(s92W&xÿþðàààààààààààÀ€ÿÿ€ÀÀààààààààààðþÿ*c124E(s68W &4xðððððððððððððððððððððððððððððððððððððððððððððððððððð*c125E(s92W&xxþÿ€€€€€€€€€€€ÀàþÿÿþàÀ€€€€€€€€€€€ÿþx*c126E(s37W x ð?ÿüÿøÿÿðà?àÀ*c127E(s128Wxø>€ø>€ø>€ø>€Áð|Áð|Áð|Áð|ø>€ø>€ø>€ø>€Áð|Áð|Áð|Áð|ø>€ø>€ø>€ø>€Áð|Áð|Áð|Áð|ø>€ø>€ø>€ø>€*c128E(s0W*c129E(s0W*c130E(s0W*c131E(s0W*c132E(s0W*c133E(s0W*c134E(s0W*c135E(s0W*c136E(s0W*c137E(s0W*c138E(s0W*c139E(s0W*c140E(s0W*c141E(s0W*c142E(s0W*c143E(s0W*c144E(s0W*c145E(s0W*c146E(s0W*c147E(s0W*c148E(s0W*c149E(s0W*c150E(s0W*c151E(s0W*c152E(s0W*c153E(s0W*c154E(s0W*c155E(s0W*c156E(s0W*c157E(s0W*c158E(s0W*c159E(s0W*c160E(s0W*c161E(s0W*c162E(s0W*c163E(s0W*c164E(s0W*c165E(s0W*c166E(s0W*c167E(s0W*c168E(s0W*c169E(s0W*c170E(s0W*c171E(s0W*c172E(s0W*c173E(s0W*c174E(s0W*c175E(s0W*c176E(s0W*c177E(s0W*c178E(s0W*c179E(s0W*c180E(s0W*c181E(s0W*c182E(s0W*c183E(s0W*c184E(s0W*c185E(s0W*c186E(s0W*c187E(s0W*c188E(s0W*c189E(s0W*c190E(s0W*c191E(s0W*c192E(s112W xüðüðüðüðððððððððððððððððððÀñàyàÀ€*c193E(s132WxÿÀÿÀÿààð<ð<ð8xxxxxp<ð<ðàààÀÿÿÿÿ€ÿÿ€€ÀÀÀàààÿðüÿðüÿðü*c194E(s132Wxÿàÿÿøÿü~~ÿüÿüÿÿ€€ÀÀÀÀÀÀ€€ÿÿÿÿÿþÿÿð*c195E(s132Wxÿÿ€ÿÿÿ€ÿÿ€À€À€À€À€À€À€À€À€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÿÿ€ÿ*c196E(s132WxÿÀÿÀÿààð<ð<ð8xxxxxp<ð<ðàààÀÀÀ€€€€ÀÀÀàààÿÿÿüÿÿÿüÿÿÿü*c197E(s103WxÿÿÿÿÿÿÿÿÿÇÇÀÀÿÀÿÀÿÀÀÀÀ€ÿÿÿÿÿÿÿÿÿ*c198E(s103WxÿüÿüÿüxøxðxðxàxÀx€x€0><xøðà àÀ€€>|ÿþÿþÿþ*c199E(s132WxÁÿÿãÿ€Áÿ<<<<<<<<<ÿüÿüÿü<<<<<<<<<<<Áÿ€ÿãÿ€Áÿ€*c200E(s136Wx€ÿðÿøÀü>><|€x€x€ðÀñ#Àñ€cÀñÿãÀñÿãÀñÿãÀñ€cÀñ#ÀðÀðÀx€x€|€<>>Àüÿøÿð€*c201E(s103Wxÿÿðÿÿðÿÿððððððððððððððððððððððððÿÿðÿÿðÿÿð*c202E(s132Wxÿñÿ€ÿñÿ€ÿñÿ€|øðàÀ€<xððø|>€Ààðø|>ÿðÿÀÿðÿÀÿðÿÀ*c203E(s132WxÿÀÿÀÿààð<ð<ð8xxxxxp<ð<ðàààÀÀÀ€€€€ÀÀÀàààÿðüÿðüÿðü*c204E(s132Wxð€ðÀðÀÀÀÀàÀà;Àà;Àð;ÀpsÀpsÀxsÀ8ãÀ8ãÀÃÀÃÀÃÀƒÀƒÀƒÀÀÀÀÀÀÀÿÀøÿà?øÿÀø*c205E(s132Wxÿ€àÿÀÿàÿÀàà€à€ð€p€x€8€<€€€€€€‡€‡€Ç€ç€ç€÷€w€€?€?€€ø€ø€ø€*c206E(s132Wxÿÿÿ€ÿÿÿ€ÿÿÿ€à€à€à€à€à€à€à€ `ÿàÿàÿà` à€à€à€à€à€à€à€ÿÿÿ€ÿÿÿ€ÿÿÿ€*c207E(s136Wx€ÿðÿøÀü>><|€x€x€ðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀx€x€|€<>>Àüÿøÿð€*c208E(s0W*c209E(s132Wxÿÿÿ€ÿÿÿ€ÿÿÿ€<<<<<<<<<<<<<<<<<<<<<<<ÿáÿ€ÿáÿ€ÿáÿ€*c210E(s132WxÿÿÀÿÿøÿÿþ€€€€€€€€€€€€€€€€€€~ÿüÿøÿÀ€€€€€€€€ÿÿÿÿÿ*c211E(s103Wxÿÿÿÿÿÿx|>€Ààðø|>>|øðàÀ€>|øÿÿÿÿÿÿÿÿÿ*c212E(s132Wxÿÿ€ÿÿÿÀÿÿÿÀðÀðÀðÀðÀðÀðÀðÀðÀðÀ`€ÿøÿüÿø*c213E(s132WxÿàÿÀÿàÿÀÿÀÿÀ€<€xÀxÀðàðáàñÀóÀ{€€??ÿøÿøÿø*c214E(s132WxÿðÿðÿðÿÀÿøÿþ?ž?|€x€øÀðÀðÀðÀðÀøÀx€|€?ž?ÿþÿøÿÀÿðÿðÿð*c215E(s132WxÀÿÁÿ€ÿ<x€x€ðÁàãàãÀ÷€ÿ€~>ÿ€÷€çÀãàÁàð€øx|>>ÿÁÿ€ÿÁÿ€ÿÁÿ€*c216E(s132Wxü?Ãðü?Ãðü?Ãðxàxàxàxàxàxàxà|à<À>À€Ï?ÿþÿøàÿøÿøÿø*c217E(s136Wxÿ€ÿðÿøÁü?~>?|xø€ð€ð€ð€ð€ð€ð€ø€x|>>?|€øÁðÁàÁÀáÁÀáÁÀáÁÀÿÁÿ€ÿÁÿ€ÿÁÿ€*c218E(s144W xþüðàÀþàÿàÿÁà‡ãÀ>ãÀ|÷€xw€øð?ð>ðððð<ð<ð|øüxþ|þ`?ÎàÿàþàøÀ*c219E(s112W xþüøàÀ€ÿ€ÿàÿø?ü|||?øÿðÿÀÿ*c220E(s142W*xüøðÀ€?<|Àþð~ÿøÀø€|<<<<<<<<<<<<<<<< <<<<<<<<<<*c221E(s80W  xøðà€?~xððððððððððððððððððÀñàyàÀ€*c222E(s0W*c223E(s144W xþüðàÀ€ÿ€ÿàÿø€ü>>|xø€ð€ð€ð€ð€ð€ð€ø€x|>>€üÿøÿàÿ€*c224E(s144W x?~?~?~?~|<þ>ÿÀÀÀÀÀÀÀÀÀÀ€€€à?ÿþÿø?à*c225E(s108WxþàÿàÿÁà‡ãÀ>ãÀ|÷€xw€øð?ð>ðððð<ð<ð|øüxþ|þ`?ÎàÿàþàøÀ*c226E(s142W*xþÿ€ÿÀ?à|àxðøððððððððàðàðÿÀñÿÀðÿððøð|ð<ððððððøø<ü<þxÿø÷ÿðóÿàðÿ€ðððððððððð*c227E(s144W x>À€ÀÿÀ€óà>ñà|ñðø`ñðñà{à{À?€?€? *c228E(s144W xÿÿÀÿà?à<à<<>€üÿ€ÿàÿø€ü>>|xø€ð€ð€ð€ð€ð€ð€ø€x|>>€üÿøÿàÿ€*c229E(s82Wxÿ€ÿàÿø?ü|||?øÿðÿÀÿ*c230E(s145W+xÿÿÿÿÿÿÿÿÿ>üðÀ~øðÀ€><xxxðððððððxx|>€ÿðÿüÿþ~?ü?ð?À*c231E(s112W x|Àþð~ÿøÀø€|<<<<<<<<<<<<<<<< <<<<<<<<<<*c232E(s112W xøþÿ€>À<À|àxàxàøðððððððððÿÿðÿÿðÿÿðððððððððððððxàxà|à<À>À€ÿþø*c233E(s60W  xððððððððððððððððððÀñàyàÀ€*c234E(s104Wx<À€ÿç€>ç€|ç€üGüƒü‡¸<ž8<8xxðpàxÀp€pÀqàyà<Àx?€ð*c235E(s112W xÿÿÀÿÀààðððxxx<<<>~~ÿïçǀǀƒ€ƒÀÀààö<ö<~x~x<*c236E(s144W x|<þ<~<<<<<<<<<<<<<||üüÿþÿ¿ÀþÀÀ*c237E(s104Wxøüþ€€€€€€€€À€Àààðð>ø|xø}ð?à?À€*c238E(s145W+xÿÿþÿÿþÿÿþøÿÀüÀ?<xxxx<?øÿ€ÿ€ÿ€øà€>|xðððððø~ÿàÿøÿü><üøà€*c239E(s104Wxÿ€ÿàÿø€ü>>|xø€ð€ð€ð€ð€ð€ð€ø€x|>>€üÿøÿàÿ€*c240E(s0W*c241E(s104Wxÿÿøÿÿøÿÿÿøàð<Àð<ð<ð<ð<ð<ð<ð<ð<ð<ð<ð<ð<ð<ð<0ð>|xx€ð€ð€ð€ð€ð€ð€ø€øüþ>ÿ€üÿÿøóÿàðÿ€ðððððððððð*c243E(s104Wxÿÿðÿÿðÿÿà€ü>>|xx€ð€ð€ð€ð€ð€ð€x€x|>>€üÿøÿàÿ€*c244E(s82Wxÿÿÿÿÿÿÿà<À<<<<<<<<<<<<<<0ÿÀÀÀÀÀÀÀÀÀÀ€€€à?ÿþÿø?à*c246E(s144W xðÇüþ>|x€ø€ð€ðÀðÀðÀðÀðÀðÀðÀø€x€|€>ž~ÿüÿðÿÀ*c247E(s112W x€ÿÀ>à<à|ðxððñðùà{à{À€?€??>>ÿ÷€ç€ç€ÃÀÃÀÀààö>ö<þ|~ø|*c248E(s184W*x€€€€€€€€€|þ€ÿ‡ÀïƒÀƒààð€ð€ð€ð€ð€ð€ð€ððàƒà‡‡À矀ÿÿÿüð€€€€€€€€€€*c249E(s104Wx€>À|àxàxðððððððððððððððððððxàxà|?ÃÀ?ûÿÀñÿ€àÿ€<*c250E(s100Wxÿ€ÿàÿø?€ü|ÿÀÀÀÀÀÀÀÀÀÀ€€€à?ÿþÿø?à*c252E(s144W xÀ?€üøðÀ€>À|àxàxðððððððððððððððððððøàxà|?ÃÀ?ûÿÀñÿ€àÿ€<*c253E(s0W*c254E(s0W*c255E(s0Wifhp-3.5.20/fonts/c1201c.100100644000175100017510000005345406020106243015152 0ustar papowellpapowell*c963D)s257W@0-@‡mÈ øØxCLRDCOUR (C) Copyright Computer Logic R & D S.A. - 1988 IBM old Greek CH. set : Esc(12G *c33E(s78W  x>>>>>>>>>>>>>>>>>>>ÿ€ÿ€ÿ€ÿ€>*c34E(s40W xü~ü~ü~ü~ü~ü~ü~x<ü~x?Àøþÿ€ÀààððpðððøðüàÿàÿÿÀÿ€qþààààààà*c37E(s109WxÀð?øx<ðàààðx<?øðxÃøà€üð?€þðÀÿààðÀx€8€8€8ÀxàðÿàÀ*c38E(s97Wxàüþ €€Ààð?ñð}ñðxùÀð}Àð?Àð?Àð€ø€ø€|?Àÿð?ùðàà*c180E(s42W  x€€??>>||xøðð`*c162E(s42W  x€€??>>||xøðð`*c39E(s42W  x€€??>>||xøðð`*c40E(s96W  (x€€€<<<xxxxððððððððððððxxxx<<<€€€*c41E(s56W (xÀààppx8<<<<8xppààÀ*c42E(s73Wxððððð`ð`xñàþgðÿÿð?ÿÀüøüžž€€*c43E(s120Wx ÿÿ€ÿÿÿÀÿÿÿÀÿÿ€ *c44E(s48W  xààÀÀ?€?€??~~||øøðp*c175E(s31W xÿÿüÿÿüÿÿüÿÿüÿÿü*c45E(s31W xÿÿüÿÿüÿÿüÿÿüÿÿü*c46E(s34W  x€€ÿÀÿÀÿÀ€€*c47E(s130W"&xÀààÀÀ€€€<8xxððààÀÀ€€<<xxpðà`*c48E(s112W xøþÿ€>À<À|àxàxàxàððððððððððððððððððððððððxàxàxà|à<À>À€ÿþø*c49E(s109WxàààÿàqààààààààààààààààààààààààÿÿÀÿÿÀÿÿÀ*c50E(s112W xüÿÿÀ?À|àxàxð0ðððððàààÀ€€>|øðàÀ€>p|pÿÿðÿÿðÿð*c51E(s112W xüÿÿ€?À<À0ààààààÀÀ€ÿþÿ€Àààðððððð@àðàþÀÿ€?ÿø*c52E(s112W x??ïïÏÏ<8xpà0ÿÿðÿÿðÿÿðÿÿàÿàÿðÿà*c53E(s109Wx?ÿÀ?ÿà?ÿà?ÿÀ<<<<<<<<ü?ÿ€?ÿÀ?à<ðððxxxxxxðð`àþàÿÿÀ?ÿü*c54E(s112W xàðÿàøÀ€><|xxøüóÿÿÿ€ÿÀþàüàøàøðøðøðøðøðxðxð<à>àÀÿ€ÿü*c55E(s109WxÿàÿÿàÿÿàÿÿààààÀÀÀ€€€<<8xxðððàààÀÀ*c56E(s112W xøÿÿ€?À|àxàxàððððððxàxà|à>Àÿ€þÿ€?À|àxàððððððððððøðxà|à>Àÿ€ÿü*c57E(s112W xøþÿ>€|ÀxÀøàðàðàððððððððøðxð|ð?ðÿðüðñààààÀÀ€?þøÿð€*c58E(s62W  x€€ÿÀÿÀÿÀ€€€€ÿÀÿÀÿÀ€€*c59E(s78W  x?À?Àààà?À?ÀàÀÀ?€?€??>~|||øøðp*c60E(s112Wx€€?€ÿüà€þøà€þþ€àøþ€àüÿ?€€€*c61E(s64W xÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€ÿÿÿ€*c62E(s112WxàøþÀðüÿ?Àðüÿ?€?€ÿüð?ÀÿüðÀþøà*c63E(s109Wxð?üÿü€ð€ðÀ`ÀÀÀÀÀ€€~üðÀ€€€€ÀàðððàÀ*c64E(s124W $xðüþ<<8€x€p€p€p€ð?€àÿ€áÿ€ãÀダç€ç€ç€ç€çƒ€ãÀãÿÀñÿÀpù€ppxx8<ƒÿÿü*c65E(s132WxÿÀÿÀÿààð<ð<ð8xxxxxp<ð<ðàààÀÿÿÿÿ€ÿÿ€€ÀÀÀàààÿðüÿðüÿðü*c66E(s132Wxÿàÿÿøÿü~~ÿüÿüÿÿ€€ÀÀÀÀÀÀ€€ÿÿÿÿÿþÿÿð*c67E(s136Wx†ÿÿÿÿàÿ€?<<xxðððððððððøxx|<>€€àÿÿþÿð€*c68E(s132WxÿÀÿÿðÿøü>€€ÀÀÀÀÀÀÀÀÀÀ€€€>üÿøÿÿðÿ€*c69E(s103WxÿÿÿÿÿÿÿÿÿÇÇÀÀÿÀÿÀÿÀÀÀÀ€ÿÿÿÿÿÿÿÿÿ*c70E(s132WxÿÿÀÿÿÿÀÿÿÀ€À€À€À€À€À€áÀ€áÀ€à€àÿàÿàÿà€à€à€à€@€€€€€€€ÿÿÿ€ÿ*c71E(s136Wx?Ãÿÿ€ÿÿ€àÿ€€?€?€>€|€x€xøðððððððÿàðÿàøÿàx€x€|€>€?€€€à?€ÿÿ€ÿþ?ð*c72E(s132WxÁÿÿãÿ€Áÿ<<<<<<<<<ÿüÿüÿü<<<<<<<<<<<Áÿ€ÿãÿ€Áÿ€*c73E(s103Wxÿÿðÿÿðÿÿððððððððððððððððððððððððÿÿðÿÿðÿÿð*c74E(s132Wxÿÿ€ÿÿÀÿÿ€ððððððððððððððððððððððððððððàøàþÀÿ€?ÿü*c75E(s132Wxÿñÿ€ÿñÿ€ÿñÿ€|øðàÀ€<xððø|>€Ààðø|>ÿðÿÀÿðÿÀÿðÿÀ*c76E(s132Wxÿÿ€ÿÿ€ÿÿ€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÿÿÀÿÿÿÀÿÿÿÀ*c77E(s132Wxð€ðÀðÀÀÀÀàÀà;Àà;Àð;ÀpsÀpsÀxsÀ8ãÀ8ãÀÃÀÃÀÃÀƒÀƒÀƒÀÀÀÀÀÀÀÿÀøÿà?øÿÀø*c78E(s132Wxÿ€àÿÀÿàÿÀàà€à€ð€p€x€8€<€€€€€€‡€‡€Ç€ç€ç€÷€w€€?€?€€ø€ø€ø€*c79E(s136Wx€ÿðÿøÀü>><|€x€x€ðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀx€x€|€<>>Àüÿøÿð€*c80E(s132WxÿÿÀÿÿøÿÿþ€€€€€€€€€€€€€€€€€€~ÿüÿøÿÀ€€€€€€€€ÿÿÿÿÿ*c81E(s164W%x€ÿàÿøÀü>><|€x€x€ð€ðÀðÀðÀðÀðÀðÀðÀðÀpÀx€x€|€<>>Àüÿøÿð€àÀ¿Ã€ÿÿ€ÿÿ€Àÿ*c82E(s132WxÿÿÀÿÿøÿÿü~>~ÿüÿøÿÀàððøx|<>ÿðàÿðàÿðà*c83E(s106Wxþ8ÿüÿüƒü>ü<|x?Àÿÿàÿð?øü<>pðøøü<þ|ÿøÿðÿàpÿ*c84E(s132Wxÿÿ€ÿÿÿÀÿÿÿÀðÀðÀðÀðÀðÀðÀðÀðÀðÀ`€ÿøÿüÿø*c85E(s132WxÿàÿÀÿàÿàÿàÿÀ€€>àüÿøÿð?€*c86E(s132Wxð?øÿø?üð?øààÀ€À€€€€À€Ààààððxx<x8ÿ€÷€çÀãàÁàð€øx|>>ÿÁÿ€ÿÁÿ€ÿÁÿ€*c89E(s132WxÿàÿÀÿàÿÀÿÀÿÀ€<€xÀxÀðàðáàñÀóÀ{€€??ÿøÿøÿø*c90E(s103WxÿüÿüÿüxøxðxðxàxÀx€x€0><xøðà àÀ€€>|ÿþÿþÿþ*c91E(s92W  &xÿÀÿÀÿÀððððððððððððððððððððððððððððððððÿÀÿÀÿÀ*c92E(s160W$0xààpp888€€€ÀÀàààpp888 €€ÀÀÀàààpp88*c93E(s92W  &xÿÀÿÀÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÀÿÀÿÀ*c94E(s49W! xÀàððx<<xpà€À€*c95E(s32Wÿô xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*c161E(s42W  x€€€>>~~üü*c96E(s42W  x€€€>>~~üü*c97E(s104WxÿÿÀÿàƒððøxxÿxÿø?ÿøø|xøxðxðxðøøø|øÿÿ€?þ€ø?€*c98E(s144W xþþþÀøÿüð~À€€€€ÀÀÀÀÀÀ€€€€Àðþÿþþøþ?à*c99E(s82WxÿÿÿÿÿÁÿ>|?xøððððððxx|>?þÿüÿðÿ*c100E(s144W xþþþþÿžÿþƒþ>þ|~x>ø>ðððððø>x>|~~þ?ƒþÿßÀÿŸàþÀ*c101E(s82Wxÿ€ÿàÿðü>||>xxðÿÿÿÿÿÿÿÿþððøx|>€ÿÿþÿðÿ€*c102E(s112W xðøÿøð0àÀÀÀÀÀÿÿðÿÿðÿÿðÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÿàÿÿðÿÿà*c103E(s144W xü?€ÿ?€ÿÿ€?‡ü>ü||x|ø<ð<ð<ð<ð<ð<ø<x|||~ü?üÿüÿ<ü<<<<<||øøÿðÿÀþ*c104E(s144W xþþþ€àÿðáø€||<<<<<<<<<<<<<ÿÁÿ€ÿÁÿ€ÿÁÿ€*c105E(s118W!"xxøøøøøxøøøxxxxxxxxxxxxxxxxÿÿþÿÿþÿÿþ*c106E(s148W!,x>>>>>ÿÿ€ÿÿ€ÿÿ€€€€€€€€€€€€€€€€€€€€€€€€€ÿþÿøÀ*c107E(s144W xÿÿÿÿÿÿðÀ€<xøüÞŸ€ÀàðøxÿÿÀÿÿÀÿÿÀ*c108E(s112W x?ø?ø?øxxxxxxxxxxxxxxxxxxxxxxxxxxÿüÿÿüÿü*c109E(s104Wxÿ~€ÿÿàÿÿà‡ñðàðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðãðüÿãøþÿãð|*c110E(s104Wxþ?ÀþÿðÿÿøÀø€|<<<<<<<<<<<<<<ÿÁÿ€ÿÁÿ€ÿÁÿ€*c111E(s104Wxÿ€ÿàÿø€ü>>|xxð€ð€ð€ð€ð€ð€xx|>>€üÿøÿàÿ€*c112E(s144W xþÀþøþÿüð~À€€€€ÀÀÀÀÀÀÀ€€€Àðÿþøàÿüÿþÿü*c113E(s144W xþÀÿŸÀÿßÀÇþ>þ|~x>x>ððððððø>x>|~>þ?ƒþÿÞÿžüÿÀÿÀÿÀ*c114E(s104WxÁÿÇÿ€Ïÿ€ßüøðàÀÀÀÀÀÀÀÀÀÀÀÿÿðÿÿðÿÿð*c115E(s82Wxø`ÿð?ÿð|ðøððððàðüÿ?ÿÀÿðÿðøàxðxðxüðÿðÿÿàÿÿÀaþ*c116E(s136Wx€ÀÀÀÀÀÀÀÿøÿÿüÿÿøÀÀÀÀÀÀÀÀÀÀÀÀÀÀà€ð€ÿÿüÀ*c117E(s104Wxþüþüþü<<<<<<<<<<<<<|üüÿÿ€ÿ¿Àþ?€*c118E(s104Wxÿàÿðÿàÿðÿàÿð€€À<À<Àxàxàðððñàyà{À;À?€€*c119E(s104WxÿÀüÿÀüÿÀü<p<ð<à€ààÁÀÁÀÃÀ ãÀ〜〜÷€¸wøwøø>ð>ð>à*c120E(s104WxÀÿ€áÿÀÀÿ€€<ÀxàðñàûÀ€??€ûÀñààðÀx€<ÀÿÀÿàÿÀÿÀÿÀ*c121E(s144W xÿààÿààÿàà€€ÀÀ<à8àxðpððøðyàyà?À?À€€<<xxðÿÿÿ*c122E(s82Wx?ÿàÿðÿðpðpàpÀp€ >|xðàÀ€ pp<pxpÿðÿÿðÿà*c123E(s92W&xÿþðàààààààààààÀ€ÿÿ€ÀÀààààààààààðþÿ*c166E(s68W &4xðððððððððððððððððððððððððððððððððððððððððððððððððððð*c124E(s68W &4xðððððððððððððððððððððððððððððððððððððððððððððððððððð*c125E(s92W&xxþÿ€€€€€€€€€€€ÀàþÿÿþàÀ€€€€€€€€€€€ÿþx*c126E(s37W x ð?ÿüÿøÿÿðà?àÀ*c127E(s128Wxø>€ø>€ø>€ø>€Áð|Áð|Áð|Áð|ø>€ø>€ø>€ø>€Áð|Áð|Áð|Áð|ø>€ø>€ø>€ø>€Áð|Áð|Áð|Áð|ø>€ø>€ø>€ø>€*c182E(s132WxÿÀÿÀÿààð<ð<ð8xxxxxp<ð<ðàààÀÿÿÿÿ€ÿÿ€€ÀÀÀàààÿðüÿðüÿðü*c193E(s132WxÿÀÿÀÿààð<ð<ð8xxxxxp<ð<ðàààÀÿÿÿÿ€ÿÿ€€ÀÀÀàààÿðüÿðüÿðü*c194E(s132Wxÿàÿÿøÿü~~ÿüÿüÿÿ€€ÀÀÀÀÀÀ€€ÿÿÿÿÿþÿÿð*c195E(s132Wxÿÿ€ÿÿÿ€ÿÿ€À€À€À€À€À€À€À€À€ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÿÿ€ÿ*c196E(s132WxÿÀÿÀÿààð<ð<ð8xxxxxp<ð<ðàààÀÀÀ€€€€ÀÀÀàààÿÿÿüÿÿÿüÿÿÿü*c184E(s103WxÿÿÿÿÿÿÿÿÿÇÇÀÀÿÀÿÀÿÀÀÀÀ€ÿÿÿÿÿÿÿÿÿ*c197E(s103WxÿÿÿÿÿÿÿÿÿÇÇÀÀÿÀÿÀÿÀÀÀÀ€ÿÿÿÿÿÿÿÿÿ*c198E(s103WxÿüÿüÿüxøxðxðxàxÀx€x€0><xøðà àÀ€€>|ÿþÿþÿþ*c185E(s132WxÁÿÿãÿ€Áÿ<<<<<<<<<ÿüÿüÿü<<<<<<<<<<<Áÿ€ÿãÿ€Áÿ€*c199E(s132WxÁÿÿãÿ€Áÿ<<<<<<<<<ÿüÿüÿü<<<<<<<<<<<Áÿ€ÿãÿ€Áÿ€*c200E(s136Wx€ÿðÿøÀü>><|€x€x€ðÀñ#Àñ€cÀñÿãÀñÿãÀñÿãÀñ€cÀñ#ÀðÀðÀx€x€|€<>>Àüÿøÿð€*c186E(s103Wxÿÿðÿÿðÿÿððððððððððððððððððððððððÿÿðÿÿðÿÿð*c218E(s103Wxÿÿðÿÿðÿÿððððððððððððððððððððððððÿÿðÿÿðÿÿð*c201E(s103Wxÿÿðÿÿðÿÿððððððððððððððððððððððððÿÿðÿÿðÿÿð*c202E(s132Wxÿñÿ€ÿñÿ€ÿñÿ€|øðàÀ€<xððø|>€Ààðø|>ÿðÿÀÿðÿÀÿðÿÀ*c203E(s132WxÿÀÿÀÿààð<ð<ð8xxxxxp<ð<ðàààÀÀÀ€€€€ÀÀÀàààÿðüÿðüÿðü*c204E(s132Wxð€ðÀðÀÀÀÀàÀà;Àà;Àð;ÀpsÀpsÀxsÀ8ãÀ8ãÀÃÀÃÀÃÀƒÀƒÀƒÀÀÀÀÀÀÀÿÀøÿà?øÿÀø*c205E(s132Wxÿ€àÿÀÿàÿÀàà€à€ð€p€x€8€<€€€€€€‡€‡€Ç€ç€ç€÷€w€€?€?€€ø€ø€ø€*c206E(s132Wxÿÿÿ€ÿÿÿ€ÿÿÿ€à€à€à€à€à€à€à€ `ÿàÿàÿà` à€à€à€à€à€à€à€ÿÿÿ€ÿÿÿ€ÿÿÿ€*c188E(s136Wx€ÿðÿøÀü>><|€x€x€ðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀx€x€|€<>>Àüÿøÿð€*c207E(s136Wx€ÿðÿøÀü>><|€x€x€ðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀx€x€|€<>>Àüÿøÿð€*c208E(s132Wxÿÿÿ€ÿÿÿ€ÿÿÿ€<<<<<<<<<<<<<<<<<<<<<<<ÿáÿ€ÿáÿ€ÿáÿ€*c209E(s132WxÿÿÀÿÿøÿÿþ€€€€€€€€€€€€€€€€€€~ÿüÿøÿÀ€€€€€€€€ÿÿÿÿÿ*c211E(s103Wxÿÿÿÿÿÿx|>€Ààðø|>>|øðàÀ€>|øÿÿÿÿÿÿÿÿÿ*c212E(s132Wxÿÿ€ÿÿÿÀÿÿÿÀðÀðÀðÀðÀðÀðÀðÀðÀðÀ`€ÿøÿüÿø*c190E(s132WxÿàÿÀÿàÿÀÿÀÿÀ€<€xÀxÀðàðáàñÀóÀ{€€??ÿøÿøÿø*c219E(s132WxÿàÿÀÿàÿÀÿÀÿÀ€<€xÀxÀðàðáàñÀóÀ{€€??ÿøÿøÿø*c213E(s132WxÿàÿÀÿàÿÀÿÀÿÀ€<€xÀxÀðàðáàñÀóÀ{€€??ÿøÿøÿø*c214E(s132WxÿðÿðÿðÿÀÿøÿþ?ž?|€x€øÀðÀðÀðÀðÀøÀx€|€?ž?ÿþÿøÿÀÿðÿðÿð*c215E(s132WxÀÿÁÿ€ÿ<x€x€ðÁàãàãÀ÷€ÿ€~>ÿ€÷€çÀãàÁàð€øx|>>ÿÁÿ€ÿÁÿ€ÿÁÿ€*c216E(s132Wxü?Ãðü?Ãðü?Ãðxàxàxàxàxàxàxà|à<À>À€Ï?ÿþÿøàÿøÿøÿø*c191E(s136Wxÿ€ÿðÿøÁü?~>?|xø€ð€ð€ð€ð€ð€ð€ø€x|>>?|€øÁðÁàÁÀáÁÀáÁÀáÁÀÿÁÿ€ÿÁÿ€ÿÁÿ€*c217E(s136Wxÿ€ÿðÿøÁü?~>?|xø€ð€ð€ð€ð€ð€ð€ø€x|>>?|€øÁðÁàÁÀáÁÀáÁÀáÁÀÿÁÿ€ÿÁÿ€ÿÁÿ€*c225E(s108WxþàÿàÿÁà‡ãÀ>ãÀ|÷€xw€øð?ð>ðððð<ð<ð|øüxþ|þ`?ÎàÿàþàøÀ*c226E(s142W*xþÿ€ÿÀ?à|àxðøððððððððàðàðÿÀñÿÀðÿððøð|ð<ððððððøø<ü<þxÿø÷ÿðóÿàðÿ€ðððððððððð*c227E(s144W x>À€ÀÿÀ€óà>ñà|ñðø`ñðñà{à{À?€?€? *c228E(s144W xÿÿÀÿà?à<à<<>€üÿ€ÿàÿø€ü>>|xø€ð€ð€ð€ð€ð€ð€ø€x|>>€üÿøÿàÿ€*c229E(s82Wxÿ€ÿàÿø?ü|||?øÿðÿÀÿ*c230E(s145W+xÿÿÿÿÿÿÿÿÿ>üðÀ~øðÀ€><xxxðððððððxx|>€ÿðÿüÿþ~?ü?ð?À*c231E(s112W x|Àþð~ÿøÀø€|<<<<<<<<<<<<<<<< <<<<<<<<<<*c232E(s112W xøþÿ€>À<À|àxàxàøðððððððððÿÿðÿÿðÿÿðððððððððððððxàxà|à<À>À€ÿþø*c233E(s60W  xððððððððððððððððððÀñàyàÀ€*c234E(s104Wx<À€ÿç€>ç€|ç€üGüƒü‡¸<ž8<8xxðpàxÀp€pÀqàyà<Àx?€ð*c235E(s112W xÿÿÀÿÀààðððxxx<<<>~~ÿïçǀǀƒ€ƒÀÀààö<ö<~x~x<*c236E(s144W x|<þ<~<<<<<<<<<<<<<||üüÿþÿ¿ÀþÀÀ*c237E(s104Wxøüþ€€€€€€€€À€Àààðð>ø|xø}ð?à?À€*c238E(s145W+xÿÿþÿÿþÿÿþøÿÀüÀ?<xxxx<?øÿ€ÿ€ÿ€øà€>|xðððððø~ÿàÿøÿü><üøà€*c239E(s104Wxÿ€ÿàÿø€ü>>|xø€ð€ð€ð€ð€ð€ð€ø€x|>>€üÿøÿàÿ€*c240E(s104Wxÿÿøÿÿøÿÿÿøàð<Àð<ð<ð<ð<ð<ð<ð<ð<ð<ð<ð<ð<ð<ð<0ð>|xx€ð€ð€ð€ð€ð€ð€ø€øüþ>ÿ€üÿÿøóÿàðÿ€ðððððððððð*c243E(s104Wxÿÿðÿÿðÿÿà€ü>>|xx€ð€ð€ð€ð€ð€ð€x€x|>>€üÿøÿàÿ€*c242E(s100Wxÿ€ÿàÿø?€ü|ÿÀÀÀÀÀÀÀÀÀÀ€€€à?ÿþÿø?à*c246E(s144W xðÇüþ>|x€ø€ð€ðÀðÀðÀðÀðÀðÀðÀø€x€|€>ž~ÿüÿðÿÀ*c247E(s112W x€ÿÀ>à<à|ðxððñðùà{à{À€?€??>>ÿ÷€ç€ç€ÃÀÃÀÀààö>ö<þ|~ø|*c248E(s184W*x€€€€€€€€€|þ€ÿ‡ÀïƒÀƒààð€ð€ð€ð€ð€ð€ð€ððàƒà‡‡À矀ÿÿÿüð€€€€€€€€€€*c249E(s104Wx€>À|àxàxðððððððððððððððððððxàxà|?ÃÀ?ûÿÀñÿ€àÿ€<*c220E(s144W xþüðàÀþàÿàÿÁà‡ãÀ>ãÀ|÷€xw€øð?ð>ðððð<ð<ð|øüxþ|þ`?ÎàÿàþàøÀ*c221E(s112W xþüøàÀ€ÿ€ÿàÿø?ü|||?øÿðÿÀÿ*c222E(s142W*xüøðÀ€?<|Àþð~ÿøÀø€|<<<<<<<<<<<<<<<< <<<<<<<<<<*c192E(s112W xüðüðüðüðððððððððððððððððððÀñàyàÀ€*c250E(s112W xüðüðüðüðððððððððððððððððððÀñàyàÀ€*c223E(s80W  xøðà€?~xððððððððððððððððððÀñàyàÀ€*c252E(s144W xþüðàÀ€ÿ€ÿàÿø€ü>>|xø€ð€ð€ð€ð€ð€ð€ø€x|>>€üÿøÿàÿ€*c253E(s144W xþüøàÀ€|<þ>ÿÀÀÀÀÀÀÀÀÀÀ€€€à?ÿþÿø?à*c224E(s144W x?~?~?~?~|<þ>ÿÀÀÀÀÀÀÀÀÀÀ€€€à?ÿþÿø?à*c251E(s144W x?~?~?~?~|<þ>ÿÀÀÀÀÀÀÀÀÀÀ€€€à?ÿþÿø?à*c254E(s144W xÀ?€üøðÀ€>À|àxàxðððððððððððððððððððøàxà|?ÃÀ?ûÿÀñÿ€àÿ€<*c189E(s133W!'x?ð~ÿñüóðÀ?üñðÏø?üüð@<|øðÀ€þþþ*c169E(s104Wxÿ€ÿàx8pÿ‡aÿÃãÁÀÃÁ€Ã€€Ã€€Ã€€Ã€€ÃÁ€ãÁÀaÿÃpÿ‡8xÿàÿ€*c177E(s103Wx`ððððððððÿàÿÿðÿÿðÿàðððððððð`ÿàÿÿðÿÿðÿà*c171E(s52WxÀÀààððppxx88<<<<88xxppððààÀÀ*c187E(s52Wx<<88xxppððððppxx88<<*c176E(s44WxÀ?ðxx`8àÀ À À À àp8xx?ðÀ*c167E(s82W!xÀ?ðxxð<à<àpx<À?ðxx`8àÀ À À À àp8xx?ðÀàðx8ð8ðxxð?à€*c178E(s56WxÀ?ðøxx`<<<<xxðàÀ€>|ðÿþÿþü*c963D*c5Fifhp-3.5.20/fonts/hi901.p0100644000175100017510000004600706020106243015126 0ustar papowellpapowell*c12D)s257W@#./‡(–Lö´I þCLRDHELV ¿ (C) Copyright Computer Logic R & D S.A. - 1988 IBM old Greek CH. set : Esc(12G *c33E(s70W 4ÀÀ€€€€ 880xððð*c34E(s34W 49À9À9Às€s€s€ç€çç*c35E(s124Wt8`pàáÀá€ÀLJÿÿðÿÿð88p8ppppà?ÿÿ?ÿÿãÀÀ‡<88*c36E(s112W T€€à?øüû<ãÆ†††ŒÌþÿ€àððx8808808<0p<0ð1àgÀÿ€ÿüÀÀÀ*c37E(s124W€ ~ÿ0Ç€`ƒ€ÀÁ€ƒ†Œ Žü0ø`à`àÃðø< 8 8p0p`x8`à*c180E(s25W (<<|xpà€*c162E(s25W (<<|xpà€*c39E(s25W (<<|xpà€*c40E(s86W#48pààÀÀ€€  *c41E(s86W #4€Àààp`p0000888880pp`ààÀÀ€€ 8p`à*c42E(s58WPppààãO?ÿ€øàp8<<88 *c43E(s76W€ 0?ÿð?ÿð00````ÀÀÀ*c44E(s26W ,<<<|8pà€*c175E(s22W 0ÿÀÿÀÿÀ*c45E(s22W 0ÿÀÿÀÿÀ*c46E(s20W,xøðð*c47E(s127W%P 8p`àÀÀ€ 80`àÀÀ€8p`àÀ*c48E(s97WT€?àÿððøÀ8€8€8888p8p<ð<à8À<À€þüð*c49E(s68WT<<üøøø88pppppààààÀÀÀÀ€€€*c50E(s94WTÀàÿððøÀ8€x8888pðàÀ?üøà€<xøÿÿ€ÿÿ€ÿÿ€*c51E(s97WTÀðÿøàxÀ<€<8pà?À?À?ààððp8pxppàxàxÀ>€?ÿþø*c52E(s91WTpððàààÀ9ÀqÀáÀÀƒ€€8ÿðÿðÿà*c53E(s94WTÿüÿøÿøÀ€€>ÿ€ÿÀƒààðpppðpàpàxÀxÀ>€?ÿüð*c54E(s97WTà?øÿøð|ÀÀÿÀÿàÁð?p<ð<p8p8p8p8ð8à<àÀÿ€þø*c55E(s91WTÿüÿüÿø8pàÀ€<8pðàÀÀ€€*c56E(s97WTÀðÿøàxÀ<€<88€pÀàÿÀÿ€ÿÀàà<ð8pxpxppàxàxÀ>€?ÿþø*c57E(s97WTÀðÿøàø€<€<<|üƒøÿ¸þpøppààpÀxÀ8€>þüð*c58E(s35W0xøðð*c59E(s66W 0€€€€<<<|8pà€*c60E(s73W€xà|ð€>0>€Àð|€Àà*c61E(s40W€?ÿðÿàÿÿÀÿÿÀ*c62E(s73W€8€àø>€Àð0ðÀ>øÀ|ðÀ*c63E(s100WTÀðÿøàxÀ<€<<<xxðàÀ€><xxxxððàà*c64E(s176W& ˜øÿÀ€àp80pÀ€€ ñ¸ Áð à à À ÀÀ0€08€`0À00€88~çøƒà €xààÿð*c65E(s124Wÿÿdððððøxxx<<<8<x<ðð<àÀÿÿÿþÿÿ€€€<Àx€pÀðÀ*c66E(s97Whÿàÿøÿü€<€<xÿàÿàÿð>øx<<<<€<€>€€>àüÿðÿà*c68E(s124Wlÿàÿøÿü€~€€€€€€€<<<<<<<xxxøxðxàÿÿÀÿÿÿø*c69E(s124Wdÿÿ€ÿÿ€ÿÿÀ€€€ÿðÿðÿð<<<<x<xxÿÿàÿàÿÿà*c70E(s97W\ÿÿÿÿÿþÀÀ€€€ÿàÿàÿà>><<x<|xxøðð*c71E(s132Wtüÿ?ÿÀàøàððàðÀð€ð€ÿàÿà<ÿà<À<À<ÀÀÀ€€€?€áû€ÿçÿÇ~*c72E(s124WpÀàÀà€ÀÀà€À€À€€À€€ÿÿ€ÿÿÿÿ<<<x<8x<x<ðxp8ðxðxàð*c73E(s70W ,ÀÀ€À€€€<<<<x<xxððð*c74E(s100WPx<xðxððàðàààÀàÀÀ€À€<€<€xxx<ü?øà*c75E(s124WdÀ€À€À<€x€ðàƒÀ€|þþß?>€€<À<ÀxÀ<àxàxððððððø*c76E(s97WTÀÀ€À€€€<<<<x<xxÿÿ€ÿÿ€ÿÿ€*c77E(s124W „ð?ðà~ðþðüðþp¼8¼p¼888<px8x8ð8ð<à<à>À>À€€€>àüÿðÿà*c80E(s97Wdÿàÿøÿü€~€€<üÿøÿà?ÿ€<<<<xxxxððð*c81E(s136Wxþÿ€ÿÀàüðððàðÀxÀx€xxxxxxðððààÀÃÀç€ÿ€þà|ÿþÿÿ€*c82E(s97Whÿðÿüÿü€>€<øÿàÿÀÿà<ð<ðxð<ð<pxðxàððxððàðððð*c83E(s132Wdð?üþøà€À€À€€€€€ÀøÿÿÀ?àøü|><<<<<<|>øƒðÿÀÿ€þ*c84E(s124W\ÿÿÀÿÿÀÿÿ€€€€€<<<<x<xxððð*c85E(s128WpÀàÀàÀà€À€À€À€À€€€€€<<88<<<<xøƒðÿàÿ€þ*c86E(s124Wÿÿ`àxàðàðàààÀàÀà€à€ààààà<à8àxàðàðáàãàãÀç€ç€ïþþüø*c87E(s151Wÿÿ'ˆ€€€€€€<€€8€?€x€;€p€{€ð€s€ð€óà€ãàãƒÀÃÀƒÃƒ€ƒƒ‡€‡ƒ‡‡ŽŽžžœœ¼¼¸øøøðððààààÀÀ*c88E(s124Wÿÿ`àpàððàðÀø€x|<<>xðàÀ€€€À?À{ÀñàáàÀð€ðxx<|x<ð>*c89E(s124WÿÿdÀ<ÀxàðààðÀð€xx<<€88xøøßpþpøppà8à8À>€?ÿþø*c104E(s97WX€€€ÀÿàÁààààà8À8ÀpÀpÀ8Àp€p€à€p€ààà*c105E(s70W $€€8888p8ppàpààà*c106E(s86Wÿÿ#$888àpààÀàÀÀÀ€À€€€üøð*c107E(s97WP€€€ðàÀ€<<x9ð;ð?øx><x8p<ðpààà*c108E(s70W $€€<8888ppppààà*c109E(s96W„à‡øÿÏüÃü<ð<àÀÀ8€88€88€88€88€8ppppppppàààààà*c110E(s76WXÀÿàÁààààà8à8À8À8À8Àp€p€p€p€ààà*c111E(s76W\?€ÿàÿðÀøx8<<8ppp8p8pp8ð<àÀÿþø*c112E(s100W\àŸð¿øð|À<€88pð?ƒà;ïÀ9ÿ€8~8ppppààà*c113E(s100W\€çý÷à~À>€88xøðßpþpøppààààÀÀÀ*c114E(s56W 48øøÀ888x8ppppààà*c115E(s76WLüÿÿ€ÀÀÀàøþ?€`€p€p€|þ?øà*c116E(s64Wÿÿ,àààÀÀüüü€À€€€€€€*c117E(s73WXpppààà<à8À8ÀxÀpÀpÀp€p€x€<€?÷ç‡*c118E(s76WL88ppààÀƒÀ€€‡Žžœ¼¸ððàÀ*c119E(s92Wÿÿlðððð8ð8pppppàpàqÀqÀ8s€0s€pwà~à~À|€|€x*c120E(s73WÿÿP€<€xÀðÁàãÀç€ÿ~||þîχ€€<ÀxÀðà*c121E(s97WLÀÀÀÀ<À8ÀxÀðÀàÁàáÀãÀã€ÇçîÜüøøpààÀÀ?€?<*c122E(s73WLÿàÿàÿàÀ€<xðàÀ€<ÿÿÿ*c123E(s121W#Txð€xðÀÀàðpppàààààÀÀÀÀÀøx*c166E(s90W %TÀÀÀ€€€€ 00000````ÀÀÀ*c124E(s90W %TÀÀÀ€€€€ 00000````ÀÀÀ*c125E(s121W#Tðø888888ppppp8€€xàÀÀÀ€€€€€üð*c126E(s28W €ÀðpààÀ€*c127E(s238Wÿÿ+%”üÀüüÀüüÀüøøøøøøà~àÀüÀÀüÀÀüÀÀüÀÀüÀà~àà~àà~àà~àÀüÀÀüÀ?ð??ð??ð?~à~~à~~à~ø€?ð??ð??ð??ð??ð?øøøøøøøøð?ðð?ðð?ð*c182E(s124Wÿÿdððððøxxx<<<8<x<ðð<àÀÿÿÿþÿÿ€€€<Àx€pÀðÀ*c193E(s124Wÿÿdððððøxxx<<<8<x<ðð<àÀÿÿÿþÿÿ€€€<Àx€pÀðÀ*c194E(s97Whÿàÿøÿü€<€<xÿàÿàÿð>øx<ð<à<à>À>À€€€>àüÿðÿà*c186E(s70W ,ÀÀ€À€€€<<<<x<xxððð*c218E(s70W ,ÀÀ€À€€€<<<<x<xxððð*c201E(s70W ,ÀÀ€À€€€<<<<x<xxððð*c202E(s124WdÀ€À€À<€x€ðàƒÀ€|þþß?>€€<À<ÀxÀ<àxàxððððððø*c203E(s124Wÿÿdððððøxxx<<<8<x<ðð<àÀÀ€€€€€<Àx€pÀðÀ*c204E(s124W „ð?ðà~ðþðüðþp¼8¼p¼888<px8x8ð8ð<à<à>À>À€€€>àüÿðÿà*c207E(s132WxüÿÿÀàøàððàðÀx€x€xxxxððð>ð<à<à>À>À€€€>àüÿðÿà*c208E(s124WpÿÿàÿÿàÿÿàÀà€À€À€€À€€€€<<<<x<<x<x<ðxxxðx*c209E(s97Wdÿàÿøÿü€~€€<üÿøÿà?ÿ€<<<<xxxxððð*c211E(s124Wdÿÿ€ÿÿ€ÿÿ€€Ààðx<<xðàÀ€<xÿÿàÿÿàÿÿà*c212E(s124W\ÿÿÀÿÿÀÿÿ€€€€€<<<<x<xxððð*c190E(s124WÿÿdÀ<ÀxàðààðÀð€xx<<xðàÀ€€€À?À{àñàáàÀð€ðxx<|x<ð>*c216E(s161W!|Àxà<€ÀxÀx€ðÀx€ð€ðà<€ðà<à<à<Àxà<ÀxÀx€ðÁàƒÀ‡‡€ÿÿÿüà*c191E(s132Wxüÿ€ÿÀ?àøàððàðÀp€ø€øxxxððððààÀÀ€À|àðàðÿÁÿ€ÿÁÿ€ÿÁÿ€*c217E(s132Wxüÿ€ÿÀ?àøàððàðÀp€ø€øxxxððððààÀÀ€À|àðàðÿÁÿ€ÿÁÿ€ÿÁÿ€*c225E(s76W`?ÿïÿÿàþ|<<88888888888p8ð<ððÿðþðøð*c226E(s121W#Tàðÿøðxà8À8€8€8€0€pàÿÀÿ€ÿÀààppppààÀ8€?ÿ?þ?ø8ppppààà*c227E(s100WLpðàÀÀ€€<8xpðàÀÀ€€€€*c228E(s97W\ÿÿÿÿÿþx8?Àÿààð€p888888888888p8ð<àÀÿþø*c229E(s76WPÿ€ÿàÿð€xpp€ððð<xÀxÀx€~€ÿ?üð*c230E(s156W#P?ÿ€ÿÿ|ðà€<xðàÀ€€üÿ€ÿÀÀÀÀ€ÿþð*c231E(s100W\€Ÿà¿ðàøÀx€88p8pppàpàà8Àà8À8ÀÀ€À€€*c232E(s97WT€?àÿððøÀ8€<€88<8ÿøÿøÿø8p8p8p<ðà8à<ÀÀ€þüð*c233E(s36W$8888p8ppààà*c234E(s76WTðàÀ€<x9ð;ð?ø?8><x8p<ppààà*c235E(s94WTàààðpðxx8<|üüþÞžž<€x€ð€à€à€*c236E(s100WX€8€88p8pppàpààÀà>ÀýÀ?ùÀ;áÀ8p8ppàpà*c237E(s76WL88ppààÀƒÀ€€‡Žž¼¸ððàÀ*c238E(s156W#Tÿÿ€ÿÿÿÿ><pðààààðøøÿððÀ€<<>€ÿÿÀÿààààÀÿ€ÿü*c239E(s76W\?€ÿàÿðÀøx8<<8ppp8p8pp8ð<àÀÿþø*c240E(s76WXÿüÿüÿü8p8ppàpààà8Àà8À8Àp€8Àp€*c241E(s100W\ÀðþøàxÀ<€88pðà;ïÀÿ€8~888ppàpà*c243E(s100Wh?ÿ€ÿÿ€ÿÿ€ààp0888888x8x0xp8à<àÀÿþø*c242E(s97W\À?ðÿøð|À€€üÿ€ÀàààÀÿ€ÿü*c244E(s76WDÿ€ÿ€ÿ€ppàààÀÀÀÀÀ€€€€*c245E(s76WXppppààààÀ8À8À8ÀpÀp€p€8<þøà*c246E(s100W`àcøãüç|LJ8p¹àÿÀÿ€þ8ppppààà*c247E(s100WX€€À8€pÀàÀàáÀÀçï~|xxxxøøœœ8pàà*c248E(s128Wdƒƒ€ƒƒ€ƒƒ€ƒƒ€8x»ðÿÀÿ€þ8ppppààà*c249E(s96WpàÀ€€€€€ÀÀ8€8€8€x€x€xx><>><ïøÇðƒÀ*c220E(s97W`À€?ÿïÿÿàþ€|<<<888888888xp8ð<ððÿðþðøð*c221E(s97WP€ÿ€ÿàÿð€ðpp€ððð<xÀxÀxÀ~€ÿ?üð*c222E(s121W#Xà€ÀŸð¿øàøÀx€88p8pppàpàà8Àà8À8ÀÀ€À€€*c192E(s70W<‡‡àààÀàÀÀ€À€€€€*c250E(s70W<‡‡àààÀàÀÀ€À€€€€*c223E(s70W ,àÀ888ppp*c252E(s97W\À€?€ÿàÿðàøx8<8<8<888888xð8ð<àÀÿþø*c253E(s97WXpppààààÀ8À8À8ÀxÀp€x€x<?þøà*c224E(s97WX€€8pppàààà8À8À8ÀxÀxÀp€x€x<?þøà*c251E(s97WX€€8pppàààà8À8À8ÀxÀxÀp€x€x<?þøà*c254E(s124Wpðà€àÀ€€€€ÀÀ8€8€8€x€x€xx><>><ïøÇðƒÀ*c189E(s124W ˆ`à8àpàà`À`€ÀÀÀÀ8|€pþ€á†Ãƒ 88pðàÀÀ€ øø8*c169E(s76W\?€ÿàÀp~ ÿà € 3 3 3 333 03üp9øàÀ€þø*c177E(s76W€ ÿøÿø00000`ÿÿÀÿÿÀ*c187E(s52W Düøà*c178E(s48W HÀð000000`À8pÀÿÀÿÀifhp-3.5.20/fonts/README0100644000175100017510000000032006637026335015000 0ustar papowellpapowellThe following fonts are provided courtesy of the CTI project. For details on their use and format, see the PCL 5 Printer Language Technical Reference Manual, chapter 11 c1201b.10 cp12.fnt c1201c.10 hi901.p ifhp-3.5.20/fonts/Makefile.in0100444000175100017510000000143410130541267016157 0ustar papowellpapowell#************************************************************************** #* LPRng IFHP Filter #* Copyright 1994-1997 Patrick Powell, San Diego, CA #* #* Based on the CTI printer filters. #* See COPYRIGHT for details. #* #* Makefile.in,v 3.2 1998/03/29 23:23:10 papowell Exp # FONTDIR=@prefix@/lib/filters/fonts SRC=@srcdir@ @SET_MAKE@ all clean: .PHONY: all clean install distclean FONTS= c1201b.10 c1201c.10 cp12.fnt hi901.p install: mkdir -p ${DESTDIR}${FONTDIR}; \ for i in ${FONTS} ; do \ cp -r $$i ${DESTDIR}${FONTDIR} ; \ done distclean: rm -f Makefile CI= CO=-kv ci: if test ! -d RCS ; then mkdir RCS; fi; checkin() { \ rcs -l $$1 ; \ ci $(CI) -mUpdate -t-Initial $$1; \ co $(CO) $$1; \ }; \ for i in Makefile* ; do \ checkin $$i; \ done; ifhp-3.5.20/MIRRORS0100644000175100017510000000125610130541262014040 0ustar papowellpapowellftp://ftp.u-aizu.ac.jp/pub/net/lpr/LPRng (JA) ftp://ftp.cs.columbia.edu/pub/archives/pkg/LPRng (US) ftp://ftp.cise.ufl.edu/pub/mirrors/LPRng (US) ftp://ftp.cs.umn.edu/pub/LPRng (US) ftp://uiarchive.uiuc.edu/pub/ftp/ftp.lprng.com/pub/LPRng (US) ftp://ftp.sage-au.org.au/pub/printing/spooler/lprng/ (AU) ftp://mirror.aarnet.edu.au/pub/LPRng/ (AU/NZ) http://mirror.aarnet.edu.au/pub/LPRng/ (AU/NZ) ftp://sunsite.ualberta.ca/pub/Mirror/LPRng (CA) ftp://ftp.informatik.uni-hamburg.de/pub/os/unix/utils/LPRng (DE) ftp://ftp.uni-paderborn.de/pub/unix/printer/LPRng (DE) ftp://ftp.mono.org/pub/LPRng (UK) ftp://ftp.iona.com/pub/plp/LPRng (IE) ftp://uabgate.uab.ericsson.se/pub/unix/LPRng (SE) ifhp-3.5.20/config.rpath0100555000175100017510000003521310130541210015257 0ustar papowellpapowell#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2003 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; mingw* | pw32* | os2*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux*) case $CC in icc|ecc) wl='-Wl,' ;; ccc) wl='-Wl,' ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; sco3.2v5*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) wl='-Wl,' ;; sysv4*MP*) ;; uts4*) ;; esac fi # Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then case "$host_os" in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi4*) ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then hardcode_direct=no fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10* | hpux11*) if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=no ;; ia64*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; *) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4.2uw2*) hardcode_direct=yes hardcode_minus_L=no ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) ;; sysv5*) hardcode_libdir_flag_spec= ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. libname_spec='lib$name' case "$host_os" in aix3*) ;; aix4* | aix5*) ;; amigaos*) ;; beos*) ;; bsdi4*) ;; cygwin* | mingw* | pw32*) shrext=.dll ;; darwin* | rhapsody*) shrext=.dylib ;; dgux*) ;; freebsd1*) ;; freebsd*) ;; gnu*) ;; hpux9* | hpux10* | hpux11*) case "$host_cpu" in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac ;; irix5* | irix6* | nonstopux*) case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux*) ;; netbsd*) ;; newsos6) ;; nto-qnx) ;; openbsd*) ;; os2*) libname_spec='$name' shrext=.dll ;; osf3* | osf4* | osf5*) ;; sco3.2v5*) ;; solaris*) ;; sunos4*) ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ;; sysv4*MP*) ;; uts4*) ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <>./config.log ]) AC_DEFUN(AC_LIBTOOL_SETUP, [AC_PREREQ(2.13)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl dnl case "$target" in NONE) lt_target="$host" ;; *) lt_target="$target" ;; esac # Check for any special flags to pass to ltconfig. libtool_flags="--cache-file=$cache_file" test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], [libtool_flags="$libtool_flags --enable-dlopen"]) ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], [libtool_flags="$libtool_flags --enable-win32-dll"]) AC_ARG_ENABLE(libtool-lock, [ --disable-libtool-lock avoid locking (might break parallel builds)]) test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" # Some flags need to be propagated to the compiler or linker for good # libtool support. case "$lt_target" in *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac ]) # AC_LIBTOOL_DLOPEN - enable checks for dlopen support AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) # AC_ENABLE_SHARED - implement the --enable-shared flag # Usage: AC_ENABLE_SHARED[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN(AC_ENABLE_SHARED, [dnl define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(shared, changequote(<<, >>)dnl << --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case "$enableval" in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac], enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl ]) # AC_DISABLE_SHARED - set the default shared flag to --disable-shared AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no)]) # AC_ENABLE_STATIC - implement the --enable-static flag # Usage: AC_ENABLE_STATIC[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN(AC_ENABLE_STATIC, [dnl define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(static, changequote(<<, >>)dnl << --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case "$enableval" in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac], enable_static=AC_ENABLE_STATIC_DEFAULT)dnl ]) # AC_DISABLE_STATIC - set the default static flag to --disable-static AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no)]) # AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(fast-install, changequote(<<, >>)dnl << --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case "$enableval" in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac], enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl ]) # AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no)]) # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN(AC_PROG_LD, [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. changequote(,)dnl [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' changequote([,])dnl # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(ac_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ac_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else ac_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$ac_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_PROG_LD_GNU ]) AC_DEFUN(AC_PROG_LD_GNU, [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then ac_cv_prog_gnu_ld=yes else ac_cv_prog_gnu_ld=no fi]) ]) # AC_PROG_NM - find the path to a BSD-compatible name lister AC_DEFUN(AC_PROG_NM, [AC_MSG_CHECKING([for BSD-compatible nm]) AC_CACHE_VAL(ac_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. ac_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -B" break elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -p" break else ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm fi]) NM="$ac_cv_path_NM" AC_MSG_RESULT([$NM]) ]) # AC_CHECK_LIBM - check for math library AC_DEFUN(AC_CHECK_LIBM, [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case "$lt_target" in *-*-beos* | *-*-cygwin*) # These system don't have libm ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, main, LIBM="-lm") ;; esac ]) # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for # the libltdl convenience library and INCLTDL to the include flags for # the libltdl header and adds --enable-ltdl-convenience to the # configure arguments. Note that LIBLTDL and INCLTDL are not # AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not # provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed # with '${top_builddir}/' and INCLTDL will be prefixed with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case "$enable_ltdl_convenience" in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) ]) # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for # the libltdl installable library and INCLTDL to the include flags for # the libltdl header and adds --enable-ltdl-install to the configure # arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is # AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed # libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will # be prefixed with '${top_builddir}/' and INCLTDL will be prefixed # with '${top_srcdir}/' (note the single quotes!). If your package is # not flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, main, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" INCLTDL= fi ]) dnl old names AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl dnl This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL])dnl # gettext.m4 serial 28 (gettext-0.13) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define(gt_included_intl, ifelse([$1], [external], [no], [yes])) define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Set USE_NLS. AM_NLS ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH(included-gettext, [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. dnl Add a version number to the cache macros. define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, [AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], gt_cv_func_gnugettext_libc=yes, gt_cv_func_gnugettext_libc=no)]) if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], gt_cv_func_gnugettext_libintl, [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], gt_cv_func_gnugettext_libintl=yes, gt_cv_func_gnugettext_libintl=no) dnl Now see whether libintl exists and depends on libiconv. if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext_libintl=yes ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if test "$gt_cv_func_gnugettext_libc" = "yes" \ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE(HAVE_GETTEXT, 1, [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST(CATOBJEXT) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST(INSTOBJEXT) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST(GENCAT) dnl For backward compatibility. Some Makefiles may be using this. if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST(INTLOBJS) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST(INTLLIBS) dnl Make all documented variables known to autoconf. AC_SUBST(LIBINTL) AC_SUBST(LTLIBINTL) AC_SUBST(POSUB) ]) dnl Checks for all prerequisites of the intl subdirectory, dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. AC_DEFUN([AM_INTL_SUBDIR], [ AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_ISC_POSIX])dnl AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_C_CONST])dnl AC_REQUIRE([bh_C_SIGNED])dnl AC_REQUIRE([AC_C_INLINE])dnl AC_REQUIRE([AC_TYPE_OFF_T])dnl AC_REQUIRE([AC_TYPE_SIZE_T])dnl AC_REQUIRE([jm_AC_TYPE_LONG_LONG])dnl AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl AC_REQUIRE([gt_TYPE_WCHAR_T])dnl AC_REQUIRE([gt_TYPE_WINT_T])dnl AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) AC_REQUIRE([jm_AC_HEADER_STDINT_H]) AC_REQUIRE([gt_TYPE_INTMAX_T]) AC_REQUIRE([gt_PRINTF_POSIX]) AC_REQUIRE([AC_FUNC_ALLOCA])dnl AC_REQUIRE([AC_FUNC_MMAP])dnl AC_REQUIRE([jm_GLIBC21])dnl AC_REQUIRE([gt_INTDIV0])dnl AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl AC_REQUIRE([gt_INTTYPES_PRI])dnl AC_REQUIRE([gl_XSIZE])dnl AC_CHECK_TYPE([ptrdiff_t], , [AC_DEFINE([ptrdiff_t], [long], [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) ]) AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h]) AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ __fsetlocking]) dnl Use the _snprintf function only if it is declared (because on NetBSD it dnl is defined as a weak alias of snprintf; we prefer to use the latter). gt_CHECK_DECL(_snprintf, [#include ]) gt_CHECK_DECL(_snwprintf, [#include ]) dnl Use the *_unlocked functions only if they are declared. dnl (because some of them were defined without being declared in Solaris dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built dnl on Solaris 2.5.1 to run on Solaris 2.6). dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. gt_CHECK_DECL(feof_unlocked, [#include ]) gt_CHECK_DECL(fgets_unlocked, [#include ]) gt_CHECK_DECL(getc_unlocked, [#include ]) case $gt_cv_func_printf_posix in *yes) HAVE_POSIX_PRINTF=1 ;; *) HAVE_POSIX_PRINTF=0 ;; esac AC_SUBST([HAVE_POSIX_PRINTF]) if test "$ac_cv_func_asprintf" = yes; then HAVE_ASPRINTF=1 else HAVE_ASPRINTF=0 fi AC_SUBST([HAVE_ASPRINTF]) if test "$ac_cv_func_snprintf" = yes; then HAVE_SNPRINTF=1 else HAVE_SNPRINTF=0 fi AC_SUBST([HAVE_SNPRINTF]) if test "$ac_cv_func_wprintf" = yes; then HAVE_WPRINTF=1 else HAVE_WPRINTF=0 fi AC_SUBST([HAVE_WPRINTF]) AM_ICONV AM_LANGINFO_CODESET if test $ac_cv_header_locale_h = yes; then AM_LC_MESSAGES fi dnl intl/plural.c is generated from intl/plural.y. It requires bison, dnl because plural.y uses bison specific features. It requires at least dnl bison-1.26 because earlier versions generate a plural.c that doesn't dnl compile. dnl bison is only needed for the maintainer (who touches plural.y). But in dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put dnl the rule in general Makefile. Now, some people carelessly touch the dnl files or have a broken "make" program, hence the plural.c rule will dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not dnl present or too old. AC_CHECK_PROGS([INTLBISON], [bison]) if test -z "$INTLBISON"; then ac_verc_fail=yes else dnl Found it, now check the version. AC_MSG_CHECKING([version of bison]) changequote(<<,>>)dnl ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) changequote([,])dnl ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac AC_MSG_RESULT([$ac_prog_version]) fi if test $ac_verc_fail = yes; then INTLBISON=: fi ]) dnl gt_CHECK_DECL(FUNC, INCLUDES) dnl Check whether a function is declared. AC_DEFUN([gt_CHECK_DECL], [ AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, [AC_TRY_COMPILE([$2], [ #ifndef $1 char *p = (char *) $1; #endif ], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) if test $ac_cv_have_decl_$1 = yes; then gt_value=1 else gt_value=0 fi AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) # po.m4 serial 2 (gettext-0.13) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AM_NLS])dnl dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU msgfmt. if test "$GMSGFMT" != ":"; then dnl If it is no GNU msgfmt we define it as : so that the dnl Makefiles still can work. if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` AC_MSG_RESULT( [found $GMSGFMT program is not GNU msgfmt; ignore it]) GMSGFMT=":" fi fi dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is no GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po fi AC_OUTPUT_COMMANDS([ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1995-2000. dnl Bruno Haible , 2000-2003. AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --enable-nls use Native Language Support], USE_NLS=$enableval, USE_NLS=no) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) ]) AC_DEFUN([AM_MKINSTALLDIRS], [ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but $(top_srcdir). dnl Try to locate it. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) ]) # progtest.m4 serial 3 (gettext-0.12) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) # lib-prefix.m4 serial 3 (gettext-0.13) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) # lib-link.m4 serial 4 (gettext-0.12) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes undefine([Name]) undefine([NAME]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. If found, it dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" LIBS="$LIBS $LIB[]NAME" AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) undefine([Name]) undefine([NAME]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, dnl hardcode_direct, hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE(rpath, [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib$1-prefix], [ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib --without-lib$1-prefix don't search for lib$1 in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) # lib-ld.m4 serial 3 (gettext-0.13) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl Subroutines of libtool.m4, dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision dnl with libtool.m4. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(acl_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) # iconv.m4 serial AM4 (gettext-0.11.3) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_func_iconv=yes) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_lib_iconv=yes am_cv_func_iconv=yes) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST(LIBICONV) AC_SUBST(LTLIBICONV) ]) AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL(am_cv_proto_iconv, [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$]{ac_t:- }[$]am_cv_proto_iconv) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi ]) # signed.m4 serial 1 (gettext-0.10.40) dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([bh_C_SIGNED], [ AC_CACHE_CHECK([for signed], bh_cv_c_signed, [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)]) if test $bh_cv_c_signed = no; then AC_DEFINE(signed, , [Define to empty if the C compiler doesn't support this keyword.]) fi ]) # longlong.m4 serial 4 dnl Copyright (C) 1999-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_LONG_LONG if 'long long' works. AC_DEFUN([jm_AC_TYPE_LONG_LONG], [ AC_CACHE_CHECK([for long long], ac_cv_type_long_long, [AC_TRY_LINK([long long ll = 1LL; int i = 63;], [long long llmax = (long long) -1; return ll << i | ll >> i | llmax / ll | llmax % ll;], ac_cv_type_long_long=yes, ac_cv_type_long_long=no)]) if test $ac_cv_type_long_long = yes; then AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have the 'long long' type.]) fi ]) # longdouble.m4 serial 1 (gettext-0.12) dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl Test whether the compiler supports the 'long double' type. dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_LONGDOUBLE], [ AC_CACHE_CHECK([for long double], gt_cv_c_long_double, [if test "$GCC" = yes; then gt_cv_c_long_double=yes else AC_TRY_COMPILE([ /* The Stardent Vistra knows sizeof(long double), but does not support it. */ long double foo = 0.0; /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ int array [2*(sizeof(long double) >= sizeof(double)) - 1]; ], , gt_cv_c_long_double=yes, gt_cv_c_long_double=no) fi]) if test $gt_cv_c_long_double = yes; then AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.]) fi ]) # wchar_t.m4 serial 1 (gettext-0.12) dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl Test whether has the 'wchar_t' type. dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_WCHAR_T], [ AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t, [AC_TRY_COMPILE([#include wchar_t foo = (wchar_t)'\0';], , gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)]) if test $gt_cv_c_wchar_t = yes; then AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.]) fi ]) # wint_t.m4 serial 1 (gettext-0.12) dnl Copyright (C) 2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl Test whether has the 'wint_t' type. dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_WINT_T], [ AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t, [AC_TRY_COMPILE([#include wint_t foo = (wchar_t)'\0';], , gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)]) if test $gt_cv_c_wint_t = yes; then AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.]) fi ]) # inttypes_h.m4 serial 5 (gettext-0.12) dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([jm_AC_HEADER_INTTYPES_H], [ AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, [AC_TRY_COMPILE( [#include #include ], [uintmax_t i = (uintmax_t) -1;], jm_ac_cv_header_inttypes_h=yes, jm_ac_cv_header_inttypes_h=no)]) if test $jm_ac_cv_header_inttypes_h = yes; then AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) # stdint_h.m4 serial 3 (gettext-0.12) dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_STDINT_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([jm_AC_HEADER_STDINT_H], [ AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, [AC_TRY_COMPILE( [#include #include ], [uintmax_t i = (uintmax_t) -1;], jm_ac_cv_header_stdint_h=yes, jm_ac_cv_header_stdint_h=no)]) if test $jm_ac_cv_header_stdint_h = yes; then AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) # intmax.m4 serial 1 (gettext-0.12) dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl Test whether the system has the 'intmax_t' type, but don't attempt to dnl find a replacement if it is lacking. AC_DEFUN([gt_TYPE_INTMAX_T], [ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) AC_REQUIRE([jm_AC_HEADER_STDINT_H]) AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t, [AC_TRY_COMPILE([ #include #include #if HAVE_STDINT_H_WITH_UINTMAX #include #endif #if HAVE_INTTYPES_H_WITH_UINTMAX #include #endif ], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)]) if test $gt_cv_c_intmax_t = yes; then AC_DEFINE(HAVE_INTMAX_T, 1, [Define if you have the 'intmax_t' type in or .]) fi ]) # printf-posix.m4 serial 2 (gettext-0.13.1) dnl Copyright (C) 2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl Test whether the printf() function supports POSIX/XSI format strings with dnl positions. AC_DEFUN([gt_PRINTF_POSIX], [ AC_REQUIRE([AC_PROG_CC]) AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings], gt_cv_func_printf_posix, [ AC_TRY_RUN([ #include #include /* The string "%2$d %1$d", with dollar characters protected from the shell's dollar expansion (possibly an autoconf bug). */ static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; static char buf[100]; int main () { sprintf (buf, format, 33, 55); return (strcmp (buf, "55 33") != 0); }], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, [ AC_EGREP_CPP(notposix, [ #if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ notposix #endif ], gt_cv_func_printf_posix="guessing no", gt_cv_func_printf_posix="guessing yes") ]) ]) case $gt_cv_func_printf_posix in *yes) AC_DEFINE(HAVE_POSIX_PRINTF, 1, [Define if your printf() function supports format strings with positions.]) ;; esac ]) # glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. # Test for the GNU C Library, version 2.1 or newer. # From Bruno Haible. AC_DEFUN([jm_GLIBC21], [ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, ac_cv_gnu_library_2_1, [AC_EGREP_CPP([Lucky GNU user], [ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) Lucky GNU user #endif #endif ], ac_cv_gnu_library_2_1=yes, ac_cv_gnu_library_2_1=no) ] ) AC_SUBST(GLIBC21) GLIBC21="$ac_cv_gnu_library_2_1" ] ) # intdiv0.m4 serial 1 (gettext-0.11.3) dnl Copyright (C) 2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([gt_INTDIV0], [ AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], gt_cv_int_divbyzero_sigfpe, [ AC_TRY_RUN([ #include #include static void #ifdef __cplusplus sigfpe_handler (int sig) #else sigfpe_handler (sig) int sig; #endif { /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ exit (sig != SIGFPE); } int x = 1; int y = 0; int z; int nan; int main () { signal (SIGFPE, sigfpe_handler); /* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ #if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) signal (SIGTRAP, sigfpe_handler); #endif /* Linux/SPARC yields signal SIGILL. */ #if defined (__sparc__) && defined (__linux__) signal (SIGILL, sigfpe_handler); #endif z = x / y; nan = y / y; exit (1); } ], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, [ # Guess based on the CPU. case "$host_cpu" in alpha* | i[34567]86 | m68k | s390*) gt_cv_int_divbyzero_sigfpe="guessing yes";; *) gt_cv_int_divbyzero_sigfpe="guessing no";; esac ]) ]) case "$gt_cv_int_divbyzero_sigfpe" in *yes) value=1;; *) value=0;; esac AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, [Define if integer division by zero raises signal SIGFPE.]) ]) # uintmax_t.m4 serial 7 (gettext-0.12) dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. AC_PREREQ(2.13) # Define uintmax_t to 'unsigned long' or 'unsigned long long' # if it is not already defined in or . AC_DEFUN([jm_AC_TYPE_UINTMAX_T], [ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) AC_REQUIRE([jm_AC_HEADER_STDINT_H]) if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) test $ac_cv_type_unsigned_long_long = yes \ && ac_type='unsigned long long' \ || ac_type='unsigned long' AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, [Define to unsigned long or unsigned long long if and don't define.]) else AC_DEFINE(HAVE_UINTMAX_T, 1, [Define if you have the 'uintmax_t' type in or .]) fi ]) # ulonglong.m4 serial 3 dnl Copyright (C) 1999-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], [ AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;], [unsigned long long ullmax = (unsigned long long) -1; return ull << i | ull >> i | ullmax / ull | ullmax % ull;], ac_cv_type_unsigned_long_long=yes, ac_cv_type_unsigned_long_long=no)]) if test $ac_cv_type_unsigned_long_long = yes; then AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, [Define if you have the 'unsigned long long' type.]) fi ]) # inttypes.m4 serial 1 (gettext-0.11.4) dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_INTTYPES_H if exists and doesn't clash with # . AC_DEFUN([gt_HEADER_INTTYPES_H], [ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, [ AC_TRY_COMPILE( [#include #include ], [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) ]) if test $gt_cv_header_inttypes_h = yes; then AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, [Define if exists and doesn't clash with .]) fi ]) # inttypes-pri.m4 serial 1 (gettext-0.11.4) dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. # Define PRI_MACROS_BROKEN if exists and defines the PRI* # macros to non-string values. This is the case on AIX 4.3.3. AC_DEFUN([gt_INTTYPES_PRI], [ AC_REQUIRE([gt_HEADER_INTTYPES_H]) if test $gt_cv_header_inttypes_h = yes; then AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], gt_cv_inttypes_pri_broken, [ AC_TRY_COMPILE([#include #ifdef PRId32 char *p = PRId32; #endif ], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) ]) fi if test "$gt_cv_inttypes_pri_broken" = yes; then AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, [Define if exists and defines unusable PRI* macros.]) fi ]) # xsize.m4 serial 2 dnl Copyright (C) 2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. AC_DEFUN([gl_XSIZE], [ dnl Prerequisites of lib/xsize.h. AC_REQUIRE([gl_SIZE_MAX]) AC_CHECK_HEADERS(stdint.h) ]) # size_max.m4 serial 2 dnl Copyright (C) 2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([gl_SIZE_MAX], [ AC_CHECK_HEADERS(stdint.h) dnl First test whether the system already has SIZE_MAX. AC_MSG_CHECKING([for SIZE_MAX]) result= AC_EGREP_CPP([Found it], [ #include #if HAVE_STDINT_H #include #endif #ifdef SIZE_MAX Found it #endif ], result=yes) if test -z "$result"; then dnl Define it ourselves. Here we assume that the type 'size_t' is not wider dnl than the type 'unsigned long'. dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', dnl which is guaranteed to work from LONG_MIN to LONG_MAX. _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi, [#include ], result=?) _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, [#include ], result=?) _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, [#include ], result=?) if test "$fits_in_uint" = 1; then dnl Even though SIZE_MAX fits in an unsigned int, it must be of type dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. AC_TRY_COMPILE([#include extern size_t foo; extern unsigned long foo; ], [], fits_in_uint=0) fi if test -z "$result"; then if test "$fits_in_uint" = 1; then result="$res_hi$res_lo"U else result="$res_hi$res_lo"UL fi else dnl Shouldn't happen, but who knows... result='~(size_t)0' fi fi AC_MSG_RESULT([$result]) if test "$result" != yes; then AC_DEFINE_UNQUOTED([SIZE_MAX], [$result], [Define as the maximum value of type 'size_t', if the system doesn't define it.]) fi ]) # codeset.m4 serial AM1 (gettext-0.10.40) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([AM_LANGINFO_CODESET], [ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, [AC_TRY_LINK([#include ], [char* cs = nl_langinfo(CODESET);], am_cv_langinfo_codeset=yes, am_cv_langinfo_codeset=no) ]) if test $am_cv_langinfo_codeset = yes; then AC_DEFINE(HAVE_LANGINFO_CODESET, 1, [Define if you have and nl_langinfo(CODESET).]) fi ]) # lcmessage.m4 serial 3 (gettext-0.11.3) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995. # Check whether LC_MESSAGES is available in . AC_DEFUN([AM_LC_MESSAGES], [ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your file defines LC_MESSAGES.]) fi ]) # libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- ## Copyright 1996, 1997, 1998, 1999, 2000, 2001 ## Free Software Foundation, Inc. ## Originally by Gordon Matzigkeit , 1996 ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ## ## As a special exception to the GNU General Public License, if you ## distribute this file as part of a program that contains a ## configuration script generated by Autoconf, you may include it under ## the same distribution terms that you use for the rest of that program. # serial 46 AC_PROG_LIBTOOL AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ]) AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.13)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl _LT_AC_PROG_ECHO_BACKSLASH # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE(libtool-lock, [ --disable-libtool-lock avoid locking (might break parallel builds)]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_SAVE AC_LANG_C AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_RESTORE]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, [AC_TRY_LINK([], [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); DllMain (0, 0, 0);], [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) case $host/$CC in *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) # old mingw systems require "-dll" to link a DLL, while more recent ones # require "-mdll" SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -mdll" AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) CFLAGS="$SAVE_CFLAGS" ;; *-*-cygwin* | *-*-pw32*) # cygwin systems need to pass --dll to the linker, and not link # crt.o which will require a WinMain@16 definition. lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; esac ;; ]) esac _LT_AC_LTCONFIG_HACK ]) # AC_LIBTOOL_HEADER_ASSERT # ------------------------ AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT], [AC_CACHE_CHECK([whether $CC supports assert without backlinking], [lt_cv_func_assert_works], [case $host in *-*-solaris*) if test "$GCC" = yes && test "$with_gnu_ld" != yes; then case `$CC --version 2>/dev/null` in [[12]].*) lt_cv_func_assert_works=no ;; *) lt_cv_func_assert_works=yes ;; esac fi ;; esac]) if test "x$lt_cv_func_assert_works" = xyes; then AC_CHECK_HEADERS(assert.h) fi ])# AC_LIBTOOL_HEADER_ASSERT # _LT_AC_CHECK_DLFCN # -------------------- AC_DEFUN([_LT_AC_CHECK_DLFCN], [AC_CHECK_HEADERS(dlfcn.h) ])# _LT_AC_CHECK_DLFCN # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # --------------------------------- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;; hpux*) # Its linker distinguishes data from code symbols lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris* | sysv5*) symcode='[[BDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $host_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then symcode='[[ABCDGISTW]]' fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[[]] = { EOF sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AC_FD_CC fi else echo "cannot find nm_test_var in $nlist" >&AC_FD_CC fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC fi else echo "$progname: failed program was:" >&AC_FD_CC cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" if test -z "$lt_cv_sys_global_symbol_pipe"; then global_symbol_to_cdecl= global_symbol_to_c_name_address= else global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" fi if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR # --------------------------------- AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], [# Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac PATH_SEPARATOR=$lt_cv_sys_path_separator fi ])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR # _LT_AC_PROG_ECHO_BACKSLASH # -------------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) AC_DIVERT_POP ])# _LT_AC_PROG_ECHO_BACKSLASH # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ------------------------------------------------------------------ AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], [if test "$cross_compiling" = yes; then : [$4] else AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_unknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_AC_TRY_DLOPEN_SELF # AC_LIBTOOL_DLOPEN_SELF # ------------------- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; cygwin* | mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ])# AC_LIBTOOL_DLOPEN_SELF AC_DEFUN([_LT_AC_LTCONFIG_HACK], [AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" need_locks="$enable_libtool_lock" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o if test x"$host" != x"$build"; then ac_tool_prefix=${host_alias}- else ac_tool_prefix= fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case $host_os in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Allow CC to be a program name with arguments. set dummy $CC compiler="[$]2" ## FIXME: this should be a separate macro ## AC_MSG_CHECKING([for objdir]) rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null AC_MSG_RESULT($objdir) ## ## END FIXME ## FIXME: this should be a separate macro ## AC_ARG_WITH(pic, [ --with-pic try to use only PIC/non-PIC objects [default=use both]], pic_mode="$withval", pic_mode=default) test -z "$pic_mode" && pic_mode=default # We assume here that the value for lt_cv_prog_cc_pic will not be cached # in isolation, and that seeing it set (from the cache) indicates that # the associated values are set (in the cache) correctly too. AC_MSG_CHECKING([for $compiler option to produce PIC]) AC_CACHE_VAL(lt_cv_prog_cc_pic, [ lt_cv_prog_cc_pic= lt_cv_prog_cc_shlib= lt_cv_prog_cc_wl= lt_cv_prog_cc_static= lt_cv_prog_cc_no_builtin= lt_cv_prog_cc_can_build_shared=$can_build_shared if test "$GCC" = yes; then lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-static' case $host_os in aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # not sure about C++ programs. lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_cv_prog_cc_pic='-fno-common' ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; sysv4*MP*) if test -d /usr/nec; then lt_cv_prog_cc_pic=-Kconform_pic fi ;; *) lt_cv_prog_cc_pic='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case $host_os in aix3* | aix4* | aix5*) lt_cv_prog_cc_wl='-Wl,' # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_cv_prog_cc_static='-Bstatic' else lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' fi ;; hpux9* | hpux10* | hpux11*) # Is there a better lt_cv_prog_cc_static that works with the bundled CC? lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" lt_cv_prog_cc_pic='+Z' ;; irix5* | irix6* | nonstopux*) lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; newsos6) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' ;; osf3* | osf4* | osf5*) # All OSF/1 code is PIC. lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' ;; sco3.2v5*) lt_cv_prog_cc_pic='-Kpic' lt_cv_prog_cc_static='-dn' lt_cv_prog_cc_shlib='-belf' ;; solaris*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; sunos4*) lt_cv_prog_cc_pic='-PIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; uts4*) lt_cv_prog_cc_pic='-pic' lt_cv_prog_cc_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_cv_prog_cc_pic='-Kconform_pic' lt_cv_prog_cc_static='-Bstatic' fi ;; *) lt_cv_prog_cc_can_build_shared=no ;; esac fi ]) if test -z "$lt_cv_prog_cc_pic"; then AC_MSG_RESULT([none]) else AC_MSG_RESULT([$lt_cv_prog_cc_pic]) # Check to make sure the pic_flag actually works. AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" AC_TRY_COMPILE([], [], [dnl case $host_os in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then # they create non-PIC objects. So, if there were any warnings, we # assume that PIC is not supported. if test -s conftest.err; then lt_cv_prog_cc_pic_works=no else lt_cv_prog_cc_pic_works=yes fi ;; *) lt_cv_prog_cc_pic_works=yes ;; esac ], [dnl lt_cv_prog_cc_pic_works=no ]) CFLAGS="$save_CFLAGS" ]) if test "X$lt_cv_prog_cc_pic_works" = Xno; then lt_cv_prog_cc_pic= lt_cv_prog_cc_can_build_shared=no else lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" fi AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) fi ## ## END FIXME # Check for any special shared library compilation flags. if test -n "$lt_cv_prog_cc_shlib"; then AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then : else AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) lt_cv_prog_cc_can_build_shared=no fi fi ## FIXME: this should be a separate macro ## AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl lt_cv_prog_cc_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) LDFLAGS="$save_LDFLAGS" ]) # Belt *and* braces to stop my trousers falling down: test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) pic_flag="$lt_cv_prog_cc_pic" special_shlib_compile_flags="$lt_cv_prog_cc_shlib" wl="$lt_cv_prog_cc_wl" link_static_flag="$lt_cv_prog_cc_static" no_builtin_flag="$lt_cv_prog_cc_no_builtin" can_build_shared="$lt_cv_prog_cc_can_build_shared" ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if options -o and -c are simultaneously supported by compiler AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) AC_CACHE_VAL([lt_cv_compiler_c_o], [ $rm -r conftest 2>/dev/null mkdir conftest cd conftest echo "int some_variable = 0;" > conftest.$ac_ext mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then lt_cv_compiler_c_o=no else lt_cv_compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&AC_FD_CC lt_cv_compiler_c_o=no fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null ]) compiler_c_o=$lt_cv_compiler_c_o AC_MSG_RESULT([$compiler_c_o]) if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) AC_CACHE_VAL([lt_cv_compiler_o_lo], [ lt_cv_compiler_o_lo=no save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" save_objext="$ac_objext" ac_objext=lo AC_TRY_COMPILE([], [int some_variable = 0;], [dnl # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then lt_cv_compiler_o_lo=no else lt_cv_compiler_o_lo=yes fi ]) ac_objext="$save_objext" CFLAGS="$save_CFLAGS" ]) compiler_o_lo=$lt_cv_compiler_o_lo AC_MSG_RESULT([$compiler_o_lo]) else compiler_o_lo=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## if test "$GCC" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) echo "int some_variable = 0;" > conftest.$ac_ext save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" compiler_rtti_exceptions=no AC_TRY_COMPILE([], [int some_variable = 0;], [dnl # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then compiler_rtti_exceptions=no else compiler_rtti_exceptions=yes fi ]) CFLAGS="$save_CFLAGS" AC_MSG_RESULT([$compiler_rtti_exceptions]) if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi ## ## END FIXME ## FIXME: this should be a separate macro ## # See if the linker supports building shared libraries. AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_into_libs=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= link_all_deplibs=unknown always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX, the GNU linker is very broken # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ test -f $output_objdir/impgen.exe || (cd $output_objdir && \ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ else $CC -o impgen impgen.c ; fi)~ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' # cygwin and mingw dlls have different entry points and sets of symbols # to exclude. # FIXME: what about values for MSVC? dll_entry=__cygwin_dll_entry@12 dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ case $host_os in mingw*) # mingw values dll_entry=_DllMainCRTStartup@12 dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ ;; esac # mingw and cygwin differ, and it's simplest to just exclude the union # of the two symbol sets. dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one (in ltdll.c) if test "x$lt_cv_need_dllmain" = "xyes"; then ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' else ltdll_obj= ltdll_cmds= fi # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. # Be careful not to strip the DATA tag left be newer dlltools. export_symbols_cmds="$ltdll_cmds"' $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is. # If DATA tags from a recent dlltool are present, honour them! archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname-def; else echo EXPORTS > $output_objdir/$soname-def; _lt_hint=1; cat $export_symbols | while read symbol; do set dummy \$symbol; case \[$]# in 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; 4) echo " \[$]2 \[$]3 \[$]4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;; *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; esac; _lt_hint=`expr 1 + \$_lt_hint`; done; fi~ '"$ltdll_cmds"' $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw* | pw32*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. hardcode_direct=yes archive_cmds='' hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then shared_flag='${wl}-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall can do strange things, so it is better to # generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. allow_undefined_flag='${wl}-berok' # This is a bit strange, but is similar to how AIX traditionally builds # it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[[012]]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on allow_undefined_flag='-flat_namespace -undefined suppress' ;; esac # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. Also zsh mangles # `"' quotes if we put them in here... so don't! archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)' # We need to add '_' to the symbols in $export_symbols first #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' hardcode_direct=yes hardcode_shlibpath_var=no whole_archive_flag_spec='-all_load $convenience' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case $host_os in hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case "$host_os" in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' #Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes export_dynamic_flag_spec='${wl}-Bexport' ;; solaris*) # gcc --version < 3.0 without binutils cannot create self contained # shared libraries reliably, requiring libgcc.a to resolve some of # the object symbols generated in some cases. Libraries that use # assert need libgcc.a to resolve __eprintf, for example. Linking # a copy of libgcc.a into every shared library to guarantee resolving # such symbols causes other problems: According to Tim Van Holder # , C++ libraries end up with a separate # (to the application) exception stack for one thing. no_undefined_flag=' -z defs' if test "$GCC" = yes; then case `$CC --version 2>/dev/null` in [[12]].*) cat <&2 *** Warning: Releases of GCC earlier than version 3.0 cannot reliably *** create self contained shared libraries on Solaris systems, without *** introducing a dependency on libgcc.a. Therefore, libtool is disabling *** -no-undefined support, which will at least allow you to build shared *** libraries. However, you may find that when you link such libraries *** into an application without using GCC, you have to manually add *** \`gcc --print-libgcc-file-name\` to the link command. We urge you to *** upgrade to a newer version of GCC. Another option is to rebuild your *** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. EOF no_undefined_flag= ;; esac fi # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5uw7* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi AC_MSG_RESULT([$ld_shlibs]) test "$ld_shlibs" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Check hardcoding attributes. AC_MSG_CHECKING([how to hardcode library paths into programs]) hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi AC_MSG_RESULT([$hardcode_action]) ## ## END FIXME ## FIXME: this should be a separate macro ## striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ## ## END FIXME reload_cmds='$LD$reload_flag -o $output$reload_objs' test -z "$deplibs_check_method" && deplibs_check_method=unknown ## FIXME: this should be a separate macro ## # PORTME Fill in your ld.so characteristics AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can # not hardcode correct soname into executable. Probably we can # add versioning support to collect2, so additional links can # be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}.so$major' fi shlibpath_var=LIBPATH fi hardcode_into_libs=yes ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" export_dynamic_flag_spec=-rdynamic # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin*) library_names_spec='$libname.dll.a' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog .libs/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' ;; yes,mingw*) library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"` ;; yes,pw32*) library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' ;; *) library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; *) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) version_type=irix ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case "$host_os" in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" hardcode_into_libs=yes ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Report the final consequences. AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) ## ## END FIXME ## FIXME: this should be a separate macro ## AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) ## ## END FIXME ## FIXME: this should be a separate macro ## AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) ## ## END FIXME if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi AC_LIBTOOL_DLOPEN_SELF ## FIXME: this should be a separate macro ## if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], [$rm conftest* echo 'static int dummy;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_cv_prog_cc_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 fi]) AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) ;; esac fi need_lc=${lt_cv_archive_cmds_need_lc-yes} ## ## END FIXME ## FIXME: this should be a separate macro ## # The second clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then : else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi if test -f "$ltmain"; then trap "$rm \"${ofile}T\"; exit 1" 1 2 15 $rm -f "${ofile}T" echo creating $ofile # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS SED \ AR AR_FLAGS CC LD LN_S NM SHELL \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ old_striplib striplib file_magic_cmd export_symbols_cmds \ deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ global_symbol_to_c_name_address \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case $var in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done cat <<__EOF__ > "${ofile}T" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996-2000 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="${SED} -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$need_lc # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # The default C compiler. CC=$lt_CC # Is the compiler the GNU C compiler? with_gcc=$GCC # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_pic_flag pic_mode=$pic_mode # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$lt_compiler_o_lo # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "${ofile}T" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac case $host_os in cygwin* | mingw* | pw32* | os2*) cat <<'EOF' >> "${ofile}T" # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments # /* impgen.c starts here */ # /* Copyright (C) 1999-2000 Free Software Foundation, Inc. # # This file is part of GNU libtool. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # */ # # #include /* for printf() */ # #include /* for open(), lseek(), read() */ # #include /* for O_RDONLY, O_BINARY */ # #include /* for strdup() */ # # /* O_BINARY isn't required (or even defined sometimes) under Unix */ # #ifndef O_BINARY # #define O_BINARY 0 # #endif # # static unsigned int # pe_get16 (fd, offset) # int fd; # int offset; # { # unsigned char b[2]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 2); # return b[0] + (b[1]<<8); # } # # static unsigned int # pe_get32 (fd, offset) # int fd; # int offset; # { # unsigned char b[4]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 4); # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # static unsigned int # pe_as32 (ptr) # void *ptr; # { # unsigned char *b = ptr; # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # int # main (argc, argv) # int argc; # char *argv[]; # { # int dll; # unsigned long pe_header_offset, opthdr_ofs, num_entries, i; # unsigned long export_rva, export_size, nsections, secptr, expptr; # unsigned long name_rvas, nexp; # unsigned char *expdata, *erva; # char *filename, *dll_name; # # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); # if (dll < 1) # return 1; # # dll_name = filename; # # for (i=0; filename[i]; i++) # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') # dll_name = filename + i +1; # # pe_header_offset = pe_get32 (dll, 0x3c); # opthdr_ofs = pe_header_offset + 4 + 20; # num_entries = pe_get32 (dll, opthdr_ofs + 92); # # if (num_entries < 1) /* no exports */ # return 1; # # export_rva = pe_get32 (dll, opthdr_ofs + 96); # export_size = pe_get32 (dll, opthdr_ofs + 100); # nsections = pe_get16 (dll, pe_header_offset + 4 +2); # secptr = (pe_header_offset + 4 + 20 + # pe_get16 (dll, pe_header_offset + 4 + 16)); # # expptr = 0; # for (i = 0; i < nsections; i++) # { # char sname[8]; # unsigned long secptr1 = secptr + 40 * i; # unsigned long vaddr = pe_get32 (dll, secptr1 + 12); # unsigned long vsize = pe_get32 (dll, secptr1 + 16); # unsigned long fptr = pe_get32 (dll, secptr1 + 20); # lseek(dll, secptr1, SEEK_SET); # read(dll, sname, 8); # if (vaddr <= export_rva && vaddr+vsize > export_rva) # { # expptr = fptr + (export_rva - vaddr); # if (export_rva + export_size > vaddr + vsize) # export_size = vsize - (export_rva - vaddr); # break; # } # } # # expdata = (unsigned char*)malloc(export_size); # lseek (dll, expptr, SEEK_SET); # read (dll, expdata, export_size); # erva = expdata - export_rva; # # nexp = pe_as32 (expdata+24); # name_rvas = pe_as32 (expdata+32); # # printf ("EXPORTS\n"); # for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) mv -f "${ofile}T" "$ofile" || \ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") chmod +x "$ofile" fi ## ## END FIXME ])# _LT_AC_LTCONFIG_HACK # AC_LIBTOOL_DLOPEN - enable checks for dlopen support AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) # AC_ENABLE_SHARED - implement the --enable-shared flag # Usage: AC_ENABLE_SHARED[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(shared, changequote(<<, >>)dnl << --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac], enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl ]) # AC_DISABLE_SHARED - set the default shared flag to --disable-shared AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no)]) # AC_ENABLE_STATIC - implement the --enable-static flag # Usage: AC_ENABLE_STATIC[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(static, changequote(<<, >>)dnl << --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac], enable_static=AC_ENABLE_STATIC_DEFAULT)dnl ]) # AC_DISABLE_STATIC - set the default static flag to --disable-static AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no)]) # AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(fast-install, changequote(<<, >>)dnl << --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac], enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl ]) # AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no)]) # AC_LIBTOOL_PICMODE - implement the --with-pic flag # Usage: AC_LIBTOOL_PICMODE[(MODE)] # Where MODE is either `yes' or `no'. If omitted, it defaults to # `both'. AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default)]) # AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ]) # AC_PATH_MAGIC - find a file program which can recognise a shared library AC_DEFUN([AC_PATH_MAGIC], [AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH) else MAGIC_CMD=: fi fi ]) # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | [[A-Za-z]]:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else lt_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$lt_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_PROG_LD_GNU ]) # AC_PROG_LD_GNU - AC_DEFUN([AC_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then lt_cv_prog_gnu_ld=yes else lt_cv_prog_gnu_ld=no fi]) with_gnu_ld=$lt_cv_prog_gnu_ld ]) # AC_PROG_LD_RELOAD_FLAG - find reload flag for linker # -- PORTME Some linkers may need a different reload flag. AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], [AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, [lt_cv_ld_reload_flag='-r']) reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" ]) # AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], [AC_CACHE_CHECK([how to recognise dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin* | mingw* | pw32*) lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' lt_cv_file_magic_cmd='/usr/bin/file -L' case "$host_os" in rhapsody* | darwin1.[[012]]) lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` ;; *) # Darwin 1.3 on lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' ;; esac ;; freebsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20*|hpux11*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; irix5* | irix6* | nonstopux*) case $host_os in irix5* | nonstopux*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" ;; esac lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux-gnu*) case $host_cpu in alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_test_file=/lib/libc.so ;; sysv5uw[[78]]* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method ]) # AC_PROG_NM - find the path to a BSD-compatible name lister AC_DEFUN([AC_PROG_NM], [AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl AC_MSG_CHECKING([for BSD-compatible nm]) AC_CACHE_VAL(lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/${ac_tool_prefix}nm if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then lt_cv_path_NM="$tmp_nm -B" break elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then lt_cv_path_NM="$tmp_nm -p" break else lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" AC_MSG_RESULT([$NM]) ]) # AC_CHECK_LIBM - check for math library AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32*) # These system don't have libm ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, main, LIBM="-lm") ;; esac ]) # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for # the libltdl convenience library and LTDLINCL to the include flags for # the libltdl header and adds --enable-ltdl-convenience to the # configure arguments. Note that LIBLTDL and LTDLINCL are not # AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not # provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed # with '${top_builddir}/' and LTDLINCL will be prefixed with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ]) # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for # the libltdl installable library and LTDLINCL to the include flags for # the libltdl header and adds --enable-ltdl-install to the configure # arguments. Note that LIBLTDL and LTDLINCL are not AC_SUBSTed, nor is # AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed # libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will # be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed # with '${top_srcdir}/' (note the single quotes!). If your package is # not flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, main, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" LTDLINCL= fi # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ]) # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) # This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL]) ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ # LT_AC_PROG_SED # -------------- # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. AC_DEFUN([LT_AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_executable_p="test -f" as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext" fi done done done # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. : ${TMPDIR=/tmp} { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=$TMPDIR/sed$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 { (exit 1); exit 1; } } _max=0 _count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for _sed in $_sed_list /usr/xpg4/bin/sed; do test ! -f ${_sed} && break cat /dev/null > "$tmp/sed.in" _count=0 echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in" # Check for GNU sed and select it if it is found. if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then lt_cv_path_SED=${_sed} break fi while true; do cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp" mv "$tmp/sed.tmp" "$tmp/sed.in" cp "$tmp/sed.in" "$tmp/sed.nl" echo >>"$tmp/sed.nl" ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break # 40000 chars as input seems more than enough test $_count -gt 10 && break _count=`expr $_count + 1` if test $_count -gt $_max; then _max=$_count lt_cv_path_SED=$_sed fi done done rm -rf "$tmp" ]) if test "X$SED" != "X"; then lt_cv_path_SED=$SED else SED=$lt_cv_path_SED fi AC_MSG_RESULT([$SED]) ]) ifhp-3.5.20/gsTest0100644000175100017510000000002710130541264014151 0ustar papowellpapowell(gsTest) (r) file quit ifhp-3.5.20/autom4te.cache/0040755000175100017510000000000010130541213015557 5ustar papowellpapowellifhp-3.5.20/autom4te.cache/requests0100644000175100017510000000775710130541214017373 0ustar papowellpapowell# This file was created by autom4te. # It contains the lists of macros which have been traced. # It can be safely removed. @request = ( bless( [ '0', 1, [ '/usr/local/share/autoconf' ], [ '--reload-state=/usr/local/share/autoconf/autoconf/autoconf.m4f', 'aclocal.m4', 'configure.in' ], { 'AC_HEADER_STAT' => 1, 'AC_FUNC_STRFTIME' => 1, 'AC_PROG_RANLIB' => 1, 'AC_FUNC_WAIT3' => 1, 'AC_FUNC_SETPGRP' => 1, 'AC_HEADER_TIME' => 1, 'AC_FUNC_SETVBUF_REVERSED' => 1, 'AC_HEADER_SYS_WAIT' => 1, 'AC_TYPE_UID_T' => 1, 'AC_CHECK_LIB' => 1, 'AM_CONDITIONAL' => 1, 'AC_PROG_LN_S' => 1, 'AC_FUNC_MEMCMP' => 1, 'AC_FUNC_FORK' => 1, 'AC_FUNC_GETGROUPS' => 1, 'AC_HEADER_MAJOR' => 1, 'AC_FUNC_STRTOD' => 1, 'AC_HEADER_DIRENT' => 1, 'AC_FUNC_UTIME_NULL' => 1, 'AC_CONFIG_FILES' => 1, 'AC_FUNC_ALLOCA' => 1, 'AC_C_CONST' => 1, 'include' => 1, 'AC_FUNC_OBSTACK' => 1, 'AC_FUNC_LSTAT' => 1, 'AC_STRUCT_TIMEZONE' => 1, 'AC_FUNC_GETPGRP' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'AC_CHECK_HEADERS' => 1, 'AC_TYPE_MODE_T' => 1, 'AC_CHECK_TYPES' => 1, 'AC_PROG_YACC' => 1, 'AC_FUNC_STRERROR_R' => 1, 'AC_TYPE_PID_T' => 1, 'AC_STRUCT_ST_BLOCKS' => 1, 'AC_PROG_GCC_TRADITIONAL' => 1, 'AC_TYPE_SIGNAL' => 1, 'AC_FUNC_FNMATCH' => 1, 'AC_PROG_CPP' => 1, 'AM_PROG_LIBTOOL' => 1, 'AC_FUNC_STAT' => 1, 'AC_PROG_INSTALL' => 1, 'AM_GNU_GETTEXT' => 1, 'AC_FUNC_STRCOLL' => 1, 'AC_LIBSOURCE' => 1, 'AC_C_INLINE' => 1, 'AC_FUNC_CHOWN' => 1, 'AC_PROG_LEX' => 1, 'AH_OUTPUT' => 1, 'AC_HEADER_STDC' => 1, 'AC_FUNC_GETLOADAVG' => 1, 'AC_CHECK_FUNCS' => 1, 'AC_TYPE_SIZE_T' => 1, 'AC_DECL_SYS_SIGLIST' => 1, 'AC_FUNC_MKTIME' => 1, 'AC_PROG_MAKE_SET' => 1, 'AC_PROG_CXX' => 1, 'm4_pattern_allow' => 1, 'm4_include' => 1, 'm4_pattern_forbid' => 1, 'AC_PROG_AWK' => 1, 'AC_FUNC_VPRINTF' => 1, 'AC_CONFIG_HEADERS' => 1, 'AC_PATH_X' => 1, 'AC_TYPE_OFF_T' => 1, 'AC_FUNC_MALLOC' => 1, 'AC_FUNC_ERROR_AT_LINE' => 1, 'AC_FUNC_FSEEKO' => 1, 'AC_STRUCT_TM' => 1, 'AC_FUNC_MMAP' => 1, 'AC_SUBST' => 1, 'AC_PROG_LIBTOOL' => 1, 'AC_PROG_CC' => 1 } ], 'Request' ) ); ifhp-3.5.20/autom4te.cache/output.00100644000175100017510000205674510130541213017220 0ustar papowellpapowell@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.53. @%:@ @%:@ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 @%:@ Free Software Foundation, Inc. @%:@ This configure script is free software; the Free Software Foundation @%:@ gives unlimited permission to copy, distribute and modify it. # Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac PATH_SEPARATOR=$lt_cv_sys_path_separator fi # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # NLS nuisances. # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi (set +x; test -n "`(LANG=C; export LANG) 2>&1`") && { $as_unset LANG || test "${LANG+set}" != set; } || { LANG=C; export LANG; } (set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || { LC_ALL=C; export LC_ALL; } (set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || { LC_TIME=C; export LC_TIME; } (set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || { LC_CTYPE=C; export LC_CTYPE; } (set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || { LANGUAGE=C; export LANGUAGE; } (set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || { LC_COLLATE=C; export LC_COLLATE; } (set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || { LC_NUMERIC=C; export LC_NUMERIC; } (set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || { LC_MESSAGES=C; export LC_MESSAGES; } # Name of the executable. as_me=`(basename "$0") 2>/dev/null || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conftest.sh echo "exit 0" >>conftest.sh chmod +x conftest.sh if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conftest.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="Makefile.in" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_default_prefix=/usr/local # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-shared=PKGS build shared libraries default=no --enable-static=PKGS build static libraries default=yes --enable-fast-install=PKGS optimize for fast installation default=yes --disable-libtool-lock avoid locking (might break parallel builds) --disable-snmp disable snmp support --disable-foomatic disable foomatic support --disable-strip disable stripping binaries by default --disable-gscheck disable checking GhostScript for security flaw --enable-nls use Native Language Support --disable-rpath do not hardcode runtime library paths Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-copts OBSOLETE - use CFLAGS=..., see configure --help --with-ccopts OBSOLETE - use CPPFLAGS=..., see configure --help --with-ldopts OBSOLETE - use LDFLAGS=..., see configure --help --with-localedir=PATH specify locale information directory --with-gnu-ld assume the C compiler uses GNU ld default=no --with-pic try to use only PIC/non-PIC objects default=use both --with-ifhp_conf=path ifhp.conf config file (default \${sysconfdir}/ifhp.conf) --with-foomatic-rip=PATH path to foomatic-rip --with-pagesize=SIZE default page size (default letter) --with-filterdir=DIR filter directory (default \${libexecdir}/filters) --with-fontdir=DIR font directory (default \${libexecdir}/filters/fonts) --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.53. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME @%:@@%:@ --------- @%:@@%:@ @%:@@%:@ Platform. @%:@@%:@ @%:@@%:@ --------- @%:@@%:@ hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ Core tests. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Also quote any args containing shell meta-characters. ac_configure_args= ac_sep= for ac_arg do case $ac_arg in -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n ) continue ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" ac_sep=" " ;; esac # Get rid of the leading space. done # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX @%:@@%:@ ---------------- @%:@@%:@ @%:@@%:@ Cache variables. @%:@@%:@ @%:@@%:@ ---------------- @%:@@%:@ _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo if test -s confdefs.h; then cat <<\_ASBOX @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ confdefs.h. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ASBOX echo sed "/^$/d" confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core core.* *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu PACKAGE=ifhp VERSION=3.5.20 ac_aux_dir= for ac_dir in . $srcdir/.; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in . $srcdir/." >&5 echo "$as_me: error: cannot find install-sh or install.sh in . $srcdir/." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking target system type" >&5 echo $ECHO_N "checking target system type... $ECHO_C" >&6 if test "${ac_cv_target+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_target_alias=$target_alias test "x$ac_cv_target_alias" = "x" && ac_cv_target_alias=$ac_cv_host_alias ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_target" >&5 echo "${ECHO_T}$ac_cv_target" >&6 target=$ac_cv_target target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- ac_config_headers="$ac_config_headers config.h" cat >>confdefs.h <<_ACEOF @%:@define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define VERSION "$VERSION" _ACEOF ALL_LINGUAS="fr" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $@%:@ != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift set dummy "$as_dir/$ac_word" ${1+"$@"} shift ac_cv_prog_CC="$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C compiler default output" >&5 echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; ls a.out conftest 2>/dev/null; ls a.* conftest.* 2>/dev/null`; do case $ac_file in *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb | *.xSYM ) ;; a.out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables" >&5 echo "$as_me: error: C compiler cannot create executables" >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF @%:@ifndef __cplusplus choke me @%:@endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking for AIX" >&5 echo $ECHO_N "checking for AIX... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef _AIX yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "yes" >/dev/null 2>&1; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 cat >>confdefs.h <<\_ACEOF @%:@define _ALL_SOURCE 1 _ACEOF else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest* echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 if test "${ac_cv_lib_cposix_strerror+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcposix $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char strerror (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { strerror (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_cposix_strerror=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_cposix_strerror=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 if test $ac_cv_lib_cposix_strerror = yes; then LIBS="$LIBS -lcposix" fi echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #include #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test "${ac_cv_header_minix_config_h+set}" = set; then echo "$as_me:$LINENO: checking for minix/config.h" >&5 echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 if test "${ac_cv_header_minix_config_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking minix/config.h usability" >&5 echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking minix/config.h presence" >&5 echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for minix/config.h" >&5 echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 if test "${ac_cv_header_minix_config_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_minix_config_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 fi if test $ac_cv_header_minix_config_h = yes; then MINIX=yes else MINIX= fi if test "$MINIX" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define _POSIX_SOURCE 1 _ACEOF cat >>confdefs.h <<\_ACEOF @%:@define _POSIX_1_SOURCE 2 _ACEOF cat >>confdefs.h <<\_ACEOF @%:@define _MINIX 1 _ACEOF fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PERL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then echo "$as_me:$LINENO: result: $PERL" >&5 echo "${ECHO_T}$PERL" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Check whether --with-ccopts or --without-ccopts was given. if test "${with_ccopts+set}" = set; then withval="$with_ccopts" { { echo "$as_me:$LINENO: error: --with-ccopts OBSOLETE - use CFLAGS=... see configure --help" >&5 echo "$as_me: error: --with-ccopts OBSOLETE - use CFLAGS=... see configure --help" >&2;} { (exit 1); exit 1; }; } fi; # Check whether --with-ccpopts or --without-ccpopts was given. if test "${with_ccpopts+set}" = set; then withval="$with_ccpopts" { { echo "$as_me:$LINENO: error: --with-cppopts OBSOLETE - use CPPFLAGS=... see configure --help" >&5 echo "$as_me: error: --with-cppopts OBSOLETE - use CPPFLAGS=... see configure --help" >&2;} { (exit 1); exit 1; }; } fi; # Check whether --with-ldopts or --without-ldopts was given. if test "${with_ldopts+set}" = set; then withval="$with_ldopts" { { echo "$as_me:$LINENO: error: --with-ldopts OBSOLETE - use LDFLAGS=... see configure --help" >&5 echo "$as_me: error: --with-ldopts OBSOLETE - use LDFLAGS=... see configure --help" >&2;} { (exit 1); exit 1; }; } fi; if test -z "$LOCALEDIR" ; then LOCALEDIR='$(prefix)/share/locale' fi; # Check whether --with-localedir or --without-localedir was given. if test "${with_localedir+set}" = set; then withval="$with_localedir" echo "$as_me:$LINENO: result: LOCALEDIR is $withval" >&5 echo "${ECHO_T}LOCALEDIR is $withval" >&6 LOCALEDIR="$withval" else LOCALEDIR="$LOCALEDIR" echo "$as_me:$LINENO: result: LOCALEDIR defaults to $LOCALEDIR" >&5 echo "${ECHO_T}LOCALEDIR defaults to $LOCALEDIR" >&6 fi; # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac else enable_shared=no fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac else enable_static=yes fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac else enable_fast_install=yes fi; # Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac PATH_SEPARATOR=$lt_cv_sys_path_separator fi # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by GCC" >&5 echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else lt_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$lt_cv_path_LD" if test -n "$LD"; then echo "$as_me:$LINENO: result: $LD" >&5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then lt_cv_prog_gnu_ld=yes else lt_cv_prog_gnu_ld=no fi fi echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/${ac_tool_prefix}nm if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then lt_cv_path_NM="$tmp_nm -B" break elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then lt_cv_path_NM="$tmp_nm -p" break else lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi NM="$lt_cv_path_NM" echo "$as_me:$LINENO: result: $NM" >&5 echo "${ECHO_T}$NM" >&6 echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 if test "${lt_cv_path_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_executable_p="test -f" as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext" fi done done done # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. : ${TMPDIR=/tmp} { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=$TMPDIR/sed$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 { (exit 1); exit 1; } } _max=0 _count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for _sed in $_sed_list /usr/xpg4/bin/sed; do test ! -f ${_sed} && break cat /dev/null > "$tmp/sed.in" _count=0 echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in" # Check for GNU sed and select it if it is found. if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then lt_cv_path_SED=${_sed} break fi while true; do cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp" mv "$tmp/sed.tmp" "$tmp/sed.in" cp "$tmp/sed.in" "$tmp/sed.nl" echo >>"$tmp/sed.nl" ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break # 40000 chars as input seems more than enough test $_count -gt 10 && break _count=`expr $_count + 1` if test $_count -gt $_max; then _max=$_count lt_cv_path_SED=$_sed fi done done rm -rf "$tmp" fi if test "X$SED" != "X"; then lt_cv_path_SED=$SED else SED=$lt_cv_path_SED fi echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6 echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin* | mingw* | pw32*) lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' lt_cv_file_magic_cmd='/usr/bin/file -L' case "$host_os" in rhapsody* | darwin1.[012]) lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` ;; *) # Darwin 1.3 on lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' ;; esac ;; freebsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20*|hpux11*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; irix5* | irix6* | nonstopux*) case $host_os in irix5* | nonstopux*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" ;; esac lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux-gnu*) case $host_cpu in alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' else lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_test_file=/lib/libc.so ;; sysv5uw[78]* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; esac fi echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method # Check for command to grab the raw symbol name followed by C symbol from nm. echo "$as_me:$LINENO: checking command to parse $NM output" >&5 echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris* | sysv5*) symcode='[BDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $host_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then symcode='[ABCDGISTW]' fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[] = { EOF sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" if test -z "$lt_cv_sys_global_symbol_pipe"; then global_symbol_to_cdecl= global_symbol_to_c_name_address= else global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" fi if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; then echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6 else echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6 fi for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="/usr/bin:$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="/usr/bin:$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else MAGIC_CMD=: fi fi fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi enable_dlopen=no enable_win32_dll=no # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in *-*-irix6*) # Find out which ABI we are using. echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" need_locks="$enable_libtool_lock" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o if test x"$host" != x"$build"; then ac_tool_prefix=${host_alias}- else ac_tool_prefix= fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case $host_os in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Allow CC to be a program name with arguments. set dummy $CC compiler="$2" ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null echo "$as_me:$LINENO: result: $objdir" >&5 echo "${ECHO_T}$objdir" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## # Check whether --with-pic or --without-pic was given. if test "${with_pic+set}" = set; then withval="$with_pic" pic_mode="$withval" else pic_mode=default fi; test -z "$pic_mode" && pic_mode=default # We assume here that the value for lt_cv_prog_cc_pic will not be cached # in isolation, and that seeing it set (from the cache) indicates that # the associated values are set (in the cache) correctly too. echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "${lt_cv_prog_cc_pic+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_pic= lt_cv_prog_cc_shlib= lt_cv_prog_cc_wl= lt_cv_prog_cc_static= lt_cv_prog_cc_no_builtin= lt_cv_prog_cc_can_build_shared=$can_build_shared if test "$GCC" = yes; then lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-static' case $host_os in aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # not sure about C++ programs. lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_cv_prog_cc_pic='-fno-common' ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; sysv4*MP*) if test -d /usr/nec; then lt_cv_prog_cc_pic=-Kconform_pic fi ;; *) lt_cv_prog_cc_pic='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case $host_os in aix3* | aix4* | aix5*) lt_cv_prog_cc_wl='-Wl,' # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_cv_prog_cc_static='-Bstatic' else lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' fi ;; hpux9* | hpux10* | hpux11*) # Is there a better lt_cv_prog_cc_static that works with the bundled CC? lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" lt_cv_prog_cc_pic='+Z' ;; irix5* | irix6* | nonstopux*) lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; newsos6) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' ;; osf3* | osf4* | osf5*) # All OSF/1 code is PIC. lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' ;; sco3.2v5*) lt_cv_prog_cc_pic='-Kpic' lt_cv_prog_cc_static='-dn' lt_cv_prog_cc_shlib='-belf' ;; solaris*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; sunos4*) lt_cv_prog_cc_pic='-PIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; uts4*) lt_cv_prog_cc_pic='-pic' lt_cv_prog_cc_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_cv_prog_cc_pic='-Kconform_pic' lt_cv_prog_cc_static='-Bstatic' fi ;; *) lt_cv_prog_cc_can_build_shared=no ;; esac fi fi if test -z "$lt_cv_prog_cc_pic"; then echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 else echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5 echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 # Check to make sure the pic_flag actually works. echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 if test "${lt_cv_prog_cc_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then case $host_os in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then # they create non-PIC objects. So, if there were any warnings, we # assume that PIC is not supported. if test -s conftest.err; then lt_cv_prog_cc_pic_works=no else lt_cv_prog_cc_pic_works=yes fi ;; *) lt_cv_prog_cc_pic_works=yes ;; esac else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 lt_cv_prog_cc_pic_works=no fi rm -f conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" fi if test "X$lt_cv_prog_cc_pic_works" = Xno; then lt_cv_prog_cc_pic= lt_cv_prog_cc_can_build_shared=no else lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" fi echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5 echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 fi ## ## END FIXME # Check for any special shared library compilation flags. if test -n "$lt_cv_prog_cc_shlib"; then { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : else { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} lt_cv_prog_cc_can_build_shared=no fi fi ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 if test "${lt_cv_prog_cc_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_prog_cc_static_works=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi # Belt *and* braces to stop my trousers falling down: test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5 echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 pic_flag="$lt_cv_prog_cc_pic" special_shlib_compile_flags="$lt_cv_prog_cc_shlib" wl="$lt_cv_prog_cc_wl" link_static_flag="$lt_cv_prog_cc_static" no_builtin_flag="$lt_cv_prog_cc_no_builtin" can_build_shared="$lt_cv_prog_cc_can_build_shared" ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if options -o and -c are simultaneously supported by compiler echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else $rm -r conftest 2>/dev/null mkdir conftest cd conftest echo "int some_variable = 0;" > conftest.$ac_ext mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then lt_cv_compiler_c_o=no else lt_cv_compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&5 lt_cv_compiler_c_o=no fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null fi compiler_c_o=$lt_cv_compiler_c_o echo "$as_me:$LINENO: result: $compiler_c_o" >&5 echo "${ECHO_T}$compiler_c_o" >&6 if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 if test "${lt_cv_compiler_o_lo+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_compiler_o_lo=no save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" save_objext="$ac_objext" ac_objext=lo cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int some_variable = 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then lt_cv_compiler_o_lo=no else lt_cv_compiler_o_lo=yes fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_objext="$save_objext" CFLAGS="$save_CFLAGS" fi compiler_o_lo=$lt_cv_compiler_o_lo echo "$as_me:$LINENO: result: $compiler_o_lo" >&5 echo "${ECHO_T}$compiler_o_lo" >&6 else compiler_o_lo=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## if test "$GCC" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 echo "int some_variable = 0;" > conftest.$ac_ext save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" compiler_rtti_exceptions=no cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int some_variable = 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then compiler_rtti_exceptions=no else compiler_rtti_exceptions=yes fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5 echo "${ECHO_T}$compiler_rtti_exceptions" >&6 if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi ## ## END FIXME ## FIXME: this should be a separate macro ## # See if the linker supports building shared libraries. echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_into_libs=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= link_all_deplibs=unknown always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX, the GNU linker is very broken # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ test -f $output_objdir/impgen.exe || (cd $output_objdir && \ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ else $CC -o impgen impgen.c ; fi)~ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' # cygwin and mingw dlls have different entry points and sets of symbols # to exclude. # FIXME: what about values for MSVC? dll_entry=__cygwin_dll_entry@12 dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ case $host_os in mingw*) # mingw values dll_entry=_DllMainCRTStartup@12 dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ ;; esac # mingw and cygwin differ, and it's simplest to just exclude the union # of the two symbol sets. dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one (in ltdll.c) if test "x$lt_cv_need_dllmain" = "xyes"; then ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' else ltdll_obj= ltdll_cmds= fi # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. # Be careful not to strip the DATA tag left be newer dlltools. export_symbols_cmds="$ltdll_cmds"' $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is. # If DATA tags from a recent dlltool are present, honour them! archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname-def; else echo EXPORTS > $output_objdir/$soname-def; _lt_hint=1; cat $export_symbols | while read symbol; do set dummy \$symbol; case \$# in 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; 4) echo " \$2 \$3 \$4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;; *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; esac; _lt_hint=`expr 1 + \$_lt_hint`; done; fi~ '"$ltdll_cmds"' $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw* | pw32*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. hardcode_direct=yes archive_cmds='' hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then shared_flag='${wl}-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall can do strange things, so it is better to # generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. allow_undefined_flag='${wl}-berok' # This is a bit strange, but is similar to how AIX traditionally builds # it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on allow_undefined_flag='-flat_namespace -undefined suppress' ;; esac # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. Also zsh mangles # `"' quotes if we put them in here... so don't! archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)' # We need to add '_' to the symbols in $export_symbols first #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' hardcode_direct=yes hardcode_shlibpath_var=no whole_archive_flag_spec='-all_load $convenience' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case $host_os in hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' #Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes export_dynamic_flag_spec='${wl}-Bexport' ;; solaris*) # gcc --version < 3.0 without binutils cannot create self contained # shared libraries reliably, requiring libgcc.a to resolve some of # the object symbols generated in some cases. Libraries that use # assert need libgcc.a to resolve __eprintf, for example. Linking # a copy of libgcc.a into every shared library to guarantee resolving # such symbols causes other problems: According to Tim Van Holder # , C++ libraries end up with a separate # (to the application) exception stack for one thing. no_undefined_flag=' -z defs' if test "$GCC" = yes; then case `$CC --version 2>/dev/null` in [12].*) cat <&2 *** Warning: Releases of GCC earlier than version 3.0 cannot reliably *** create self contained shared libraries on Solaris systems, without *** introducing a dependency on libgcc.a. Therefore, libtool is disabling *** -no-undefined support, which will at least allow you to build shared *** libraries. However, you may find that when you link such libraries *** into an application without using GCC, you have to manually add *** \`gcc --print-libgcc-file-name\` to the link command. We urge you to *** upgrade to a newer version of GCC. Another option is to rebuild your *** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. EOF no_undefined_flag= ;; esac fi # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5uw7* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Check hardcoding attributes. echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ## ## END FIXME reload_cmds='$LD$reload_flag -o $output$reload_objs' test -z "$deplibs_check_method" && deplibs_check_method=unknown ## FIXME: this should be a separate macro ## # PORTME Fill in your ld.so characteristics echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can # not hardcode correct soname into executable. Probably we can # add versioning support to collect2, so additional links can # be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}.so$major' fi shlibpath_var=LIBPATH fi hardcode_into_libs=yes ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" export_dynamic_flag_spec=-rdynamic # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin*) library_names_spec='$libname.dll.a' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog .libs/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' ;; yes,mingw*) library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"` ;; yes,pw32*) library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' ;; *) library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; *) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) version_type=irix ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case "$host_os" in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" hardcode_into_libs=yes ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Report the final consequences. echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 ## ## END FIXME if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; cygwin* | mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else f = shl_load; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else f = dlopen; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ## FIXME: this should be a separate macro ## if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 if test "${lt_cv_archive_cmds_need_lc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else $rm conftest* echo 'static int dummy;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_cv_prog_cc_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 fi fi echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 ;; esac fi need_lc=${lt_cv_archive_cmds_need_lc-yes} ## ## END FIXME ## FIXME: this should be a separate macro ## # The second clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then : else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi if test -f "$ltmain"; then trap "$rm \"${ofile}T\"; exit 1" 1 2 15 $rm -f "${ofile}T" echo creating $ofile # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS SED \ AR AR_FLAGS CC LD LN_S NM SHELL \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ old_striplib striplib file_magic_cmd export_symbols_cmds \ deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ global_symbol_to_c_name_address \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case $var in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done cat <<__EOF__ > "${ofile}T" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996-2000 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="${SED} -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$need_lc # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # The default C compiler. CC=$lt_CC # Is the compiler the GNU C compiler? with_gcc=$GCC # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_pic_flag pic_mode=$pic_mode # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$lt_compiler_o_lo # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "${ofile}T" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac case $host_os in cygwin* | mingw* | pw32* | os2*) cat <<'EOF' >> "${ofile}T" # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments # /* impgen.c starts here */ # /* Copyright (C) 1999-2000 Free Software Foundation, Inc. # # This file is part of GNU libtool. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # */ # # #include /* for printf() */ # #include /* for open(), lseek(), read() */ # #include /* for O_RDONLY, O_BINARY */ # #include /* for strdup() */ # # /* O_BINARY isn't required (or even defined sometimes) under Unix */ # #ifndef O_BINARY # #define O_BINARY 0 # #endif # # static unsigned int # pe_get16 (fd, offset) # int fd; # int offset; # { # unsigned char b[2]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 2); # return b[0] + (b[1]<<8); # } # # static unsigned int # pe_get32 (fd, offset) # int fd; # int offset; # { # unsigned char b[4]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 4); # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # static unsigned int # pe_as32 (ptr) # void *ptr; # { # unsigned char *b = ptr; # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # int # main (argc, argv) # int argc; # char *argv[]; # { # int dll; # unsigned long pe_header_offset, opthdr_ofs, num_entries, i; # unsigned long export_rva, export_size, nsections, secptr, expptr; # unsigned long name_rvas, nexp; # unsigned char *expdata, *erva; # char *filename, *dll_name; # # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); # if (dll < 1) # return 1; # # dll_name = filename; # # for (i=0; filename[i]; i++) # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') # dll_name = filename + i +1; # # pe_header_offset = pe_get32 (dll, 0x3c); # opthdr_ofs = pe_header_offset + 4 + 20; # num_entries = pe_get32 (dll, opthdr_ofs + 92); # # if (num_entries < 1) /* no exports */ # return 1; # # export_rva = pe_get32 (dll, opthdr_ofs + 96); # export_size = pe_get32 (dll, opthdr_ofs + 100); # nsections = pe_get16 (dll, pe_header_offset + 4 +2); # secptr = (pe_header_offset + 4 + 20 + # pe_get16 (dll, pe_header_offset + 4 + 16)); # # expptr = 0; # for (i = 0; i < nsections; i++) # { # char sname[8]; # unsigned long secptr1 = secptr + 40 * i; # unsigned long vaddr = pe_get32 (dll, secptr1 + 12); # unsigned long vsize = pe_get32 (dll, secptr1 + 16); # unsigned long fptr = pe_get32 (dll, secptr1 + 20); # lseek(dll, secptr1, SEEK_SET); # read(dll, sname, 8); # if (vaddr <= export_rva && vaddr+vsize > export_rva) # { # expptr = fptr + (export_rva - vaddr); # if (export_rva + export_size > vaddr + vsize) # export_size = vsize - (export_rva - vaddr); # break; # } # } # # expdata = (unsigned char*)malloc(export_size); # lseek (dll, expptr, SEEK_SET); # read (dll, expdata, export_size); # erva = expdata - export_rva; # # nexp = pe_as32 (expdata+24); # name_rvas = pe_as32 (expdata+32); # # printf ("EXPORTS\n"); # for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) mv -f "${ofile}T" "$ofile" || \ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") chmod +x "$ofile" fi ## ## END FIXME # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion v="cannot open"; # Extract the first word of "file", so it can be a program name with args. set dummy file; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_FILEUTIL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $FILEUTIL in [\\/]* | ?:[\\/]*) ac_cv_path_FILEUTIL="$FILEUTIL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FILEUTIL="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_FILEUTIL" && ac_cv_path_FILEUTIL="FILE_UTILITY_NOT_FOUND" ;; esac fi FILEUTIL=$ac_cv_path_FILEUTIL if test -n "$FILEUTIL"; then echo "$as_me:$LINENO: result: $FILEUTIL" >&5 echo "${ECHO_T}$FILEUTIL" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$FILEUTIL" != "FILE_UTILITY_NOT_FOUND" ; then if ${FILEUTIL} - /dev/null ; then echo "the '${FILEUTIL} -' operates correctly"; else echo "Please use a file utility that handles 'file - 'correctly"; echo "You can obtain one from: ftp://ftp.astron.com/pub/file/"; echo " or ftp://ftp.lprng.com/pub/LPRng/UNIXTOOLS/file/"; echo "if necessary, use the FILEUTIL environment variable to specify the path" exit 1 fi fi # Extract the first word of "gzip", so it can be a program name with args. set dummy gzip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GZIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GZIP in [\\/]* | ?:[\\/]*) ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_GZIP" && ac_cv_path_GZIP="GZIP_NOT_FOUND" ;; esac fi GZIP=$ac_cv_path_GZIP if test -n "$GZIP"; then echo "$as_me:$LINENO: result: $GZIP" >&5 echo "${ECHO_T}$GZIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "gs", so it can be a program name with args. set dummy gs; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GS in [\\/]* | ?:[\\/]*) ac_cv_path_GS="$GS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GS="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_GS" && ac_cv_path_GS="GHOSTSCRIPT_NOT_FOUND" ;; esac fi GS=$ac_cv_path_GS if test -n "$GS"; then echo "$as_me:$LINENO: result: $GS" >&5 echo "${ECHO_T}$GS" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "a2ps", so it can be a program name with args. set dummy a2ps; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_A2PS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $A2PS in [\\/]* | ?:[\\/]*) ac_cv_path_A2PS="$A2PS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_A2PS="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_A2PS" && ac_cv_path_A2PS="A2PS_NOT_FOUND" ;; esac fi A2PS=$ac_cv_path_A2PS if test -n "$A2PS"; then echo "$as_me:$LINENO: result: $A2PS" >&5 echo "${ECHO_T}$A2PS" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "cat", so it can be a program name with args. set dummy cat; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_CAT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $CAT in [\\/]* | ?:[\\/]*) ac_cv_path_CAT="$CAT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CAT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_CAT" && ac_cv_path_CAT="CAT_NOT_FOUND" ;; esac fi CAT=$ac_cv_path_CAT if test -n "$CAT"; then echo "$as_me:$LINENO: result: $CAT" >&5 echo "${ECHO_T}$CAT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi echo "$as_me:$LINENO: checking directory where to install the ifhp.conf file" >&5 echo $ECHO_N "checking directory where to install the ifhp.conf file... $ECHO_C" >&6 # Check whether --with-ifhp_conf or --without-ifhp_conf was given. if test "${with_ifhp_conf+set}" = set; then withval="$with_ifhp_conf" IFHP_CONF=$withval else IFHP_CONF=\${sysconfdir}/ifhp.conf fi; echo "$as_me:$LINENO: result: $IFHP_CONF" >&5 echo "${ECHO_T}$IFHP_CONF" >&6 echo "$as_me:$LINENO: checking use snmp" >&5 echo $ECHO_N "checking use snmp... $ECHO_C" >&6 # Check whether --enable-snmp or --disable-snmp was given. if test "${enable_snmp+set}" = set; then enableval="$enable_snmp" if test "$enableval" = "yes" ; then SNMP="yes"; else SNMP="no"; fi else SNMP="yes"; fi; echo "$as_me:$LINENO: result: $SNMP" >&5 echo "${ECHO_T}$SNMP" >&6 if test "$SNMP" = yes ; then if perl -MNet::SNMP -e exit ; then : else { { echo "$as_me:$LINENO: error: SNMP support enabled and the Net::SNMP module not installed. Get the NET-SNMP libraries from http://www.sourceforge.net Get the Net::SNMP perl modules from http://www.cpan.org " >&5 echo "$as_me: error: SNMP support enabled and the Net::SNMP module not installed. Get the NET-SNMP libraries from http://www.sourceforge.net Get the Net::SNMP perl modules from http://www.cpan.org " >&2;} { (exit 1); exit 1; }; }; fi fi echo "$as_me:$LINENO: checking foomatic-rip" >&5 echo $ECHO_N "checking foomatic-rip... $ECHO_C" >&6 # Check whether --with-foomatic-rip or --without-foomatic-rip was given. if test "${with_foomatic_rip+set}" = set; then withval="$with_foomatic_rip" FOOMATIC_RIP=$withval else # Extract the first word of "foomatic-rip", so it can be a program name with args. set dummy foomatic-rip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_FOOMATIC_RIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $FOOMATIC_RIP in [\\/]* | ?:[\\/]*) ac_cv_path_FOOMATIC_RIP="$FOOMATIC_RIP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FOOMATIC_RIP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi FOOMATIC_RIP=$ac_cv_path_FOOMATIC_RIP if test -n "$FOOMATIC_RIP"; then echo "$as_me:$LINENO: result: $FOOMATIC_RIP" >&5 echo "${ECHO_T}$FOOMATIC_RIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi; echo "$as_me:$LINENO: checking use foomatic" >&5 echo $ECHO_N "checking use foomatic... $ECHO_C" >&6 # Check whether --enable-foomatic or --disable-foomatic was given. if test "${enable_foomatic+set}" = set; then enableval="$enable_foomatic" if test "$enableval" = "yes" ; then FOOMATIC="1"; else FOOMATIC="0"; fi else FOOMATIC="1"; fi; echo "$as_me:$LINENO: result: $FOOMATIC" >&5 echo "${ECHO_T}$FOOMATIC" >&6 if test "${FOOMATIC}" "!=" 0 -a "${FOOMATIC_RIP}" = "" ; then { { echo "$as_me:$LINENO: error: foomatic enabled and foomatic-rip not found Download foomatic-filters from: http://www.linuxprinting.org/download/foomatic " >&5 echo "$as_me: error: foomatic enabled and foomatic-rip not found Download foomatic-filters from: http://www.linuxprinting.org/download/foomatic " >&2;} { (exit 1); exit 1; }; }; fi echo "$as_me:$LINENO: checking default page size" >&5 echo $ECHO_N "checking default page size... $ECHO_C" >&6 # Check whether --with-pagesize or --without-pagesize was given. if test "${with_pagesize+set}" = set; then withval="$with_pagesize" PAGE_SIZE=$withval else PAGE_SIZE=letter fi; echo "$as_me:$LINENO: result: $PAGE_SIZE" >&5 echo "${ECHO_T}$PAGE_SIZE" >&6 echo "$as_me:$LINENO: checking filter directory" >&5 echo $ECHO_N "checking filter directory... $ECHO_C" >&6 # Check whether --with-filterdir or --without-filterdir was given. if test "${with_filterdir+set}" = set; then withval="$with_filterdir" FILTER_DIR=$withval else FILTER_DIR=\${libexecdir}/filters fi; echo "$as_me:$LINENO: result: $FILTER_DIR" >&5 echo "${ECHO_T}$FILTER_DIR" >&6 echo "$as_me:$LINENO: checking font directory" >&5 echo $ECHO_N "checking font directory... $ECHO_C" >&6 # Check whether --with-fontdir or --without-fontdir was given. if test "${with_fontdir+set}" = set; then withval="$with_fontdir" FONT_DIR=$withval else FONT_DIR=\${libexecdir}/filters/fonts fi; echo "$as_me:$LINENO: result: $FONT_DIR" >&5 echo "${ECHO_T}$FONT_DIR" >&6 echo "$as_me:$LINENO: checking strip binaries" >&5 echo $ECHO_N "checking strip binaries... $ECHO_C" >&6 # Check whether --enable-strip or --disable-strip was given. if test "${enable_strip+set}" = set; then enableval="$enable_strip" if test "$enableval" = "yes" ; then v=yes; STRIP_OPTION=" -s "; else v=no; STRIP_OPTION=""; fi else v=yes; STRIP_OPTION=" -s "; fi; echo "$as_me:$LINENO: result: $v" >&5 echo "${ECHO_T}$v" >&6 echo "$as_me:$LINENO: checking GhostScript check" >&5 echo $ECHO_N "checking GhostScript check... $ECHO_C" >&6 # Check whether --enable-gscheck or --disable-gscheck was given. if test "${enable_gscheck+set}" = set; then enableval="$enable_gscheck" if test "$enableval" = "yes" ; then GSCHECK=yes; else GSCHECK=no; fi else GSCHECK=no; fi; echo "$as_me:$LINENO: result: $GSCHECK" >&5 echo "${ECHO_T}$GSCHECK" >&6 if test "$GS" != "GHOSTSCRIPT_NOT_FOUND" -a "$GSCHECK" != "no" ; then echo "$as_me:$LINENO: checking GhostScript -dSAFER and -dPARANOIDSAFER option" >&5 echo $ECHO_N "checking GhostScript -dSAFER and -dPARANOIDSAFER option... $ECHO_C" >&6 if $GS -q -dBATCH -dNOPAUSE -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- $srcdir/gsQuit ; then if $GS -q -dBATCH -dNOPAUSE -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- $srcdir/gsTest 1>/dev/null 2>/dev/null ; then { echo "$as_me:$LINENO: WARNING: WARNING: '($GS) -dSAFER -dPARANOIDSAFER ' allows files to be read Please read README.GhostScriptSecurityProblem and fix your distribution of GhostScript OR use: configure --disable-gscheck " >&5 echo "$as_me: WARNING: WARNING: '($GS) -dSAFER -dPARANOIDSAFER ' allows files to be read Please read README.GhostScriptSecurityProblem and fix your distribution of GhostScript OR use: configure --disable-gscheck " >&2;} echo "$as_me:$LINENO: result: GhostScript security hole found!" >&5 echo "${ECHO_T}GhostScript security hole found!" >&6 exit 1 else echo "$as_me:$LINENO: result: no GhostScript security hole found" >&5 echo "${ECHO_T}no GhostScript security hole found" >&6 fi else echo "$as_me:$LINENO: result: Error with: $GS -q -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- " >&5 echo "${ECHO_T}Error with: $GS -q -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- " >&6 fi fi echo "$as_me:$LINENO: checking how to redirect GhostScript output to fd 3" >&5 echo $ECHO_N "checking how to redirect GhostScript output to fd 3... $ECHO_C" >&6 if test "$DEVFD3" = "" ; then v=`( if test -d /dev/fd ; then echo 3 >/dev/fd/3; fi) 2>/dev/null 3>&1 1>&2` if test "$v" != "" ; then DEVFD3=/dev/fd/3 FD3=/dev/fd/3 else DEVFD3="|$CAT >\&3" FD3="|$CAT >&3" fi rm -f gs_out gs -q -dBATCH -dNOPAUSE -dSAFER -dPARANOIDSAFER -sDEVICE=laserjet "-sOutputFile=${FD3}" ${srcdir}/gsPrint 3>gs_out if test "!" -s gs_out ; then { { echo "$as_me:$LINENO: error: \"ERROR - gs cannot handle -sOutputFile=$OUT\" " >&5 echo "$as_me: error: \"ERROR - gs cannot handle -sOutputFile=$OUT\" " >&2;} { (exit 1); exit 1; }; }; fi fi echo "$as_me:$LINENO: result: $DEVFD3" >&5 echo "${ECHO_T}$DEVFD3" >&6 ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $@%:@ != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift set dummy "$as_dir/$ac_word" ${1+"$@"} shift ac_cv_prog_CC="$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF @%:@ifndef __cplusplus choke me @%:@endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "$ac_cv_c_compiler_gnu" = yes; then cat >conftest.c </dev/null 2>&1; then gcc -v { echo "$as_me:$LINENO: WARNING: WARNING: gcc -O (version 2.4.5 and below) produces incorrect code for lpd.c and other large routines. " >&5 echo "$as_me: WARNING: WARNING: gcc -O (version 2.4.5 and below) produces incorrect code for lpd.c and other large routines. " >&2;} fi; fi; LDCC="$CC" echo "$as_me:$LINENO: result: using CPPFLAGS=\"${CPPFLAGS}\"" >&5 echo "${ECHO_T}using CPPFLAGS=\"${CPPFLAGS}\"" >&6 release=`uname -r 2>/dev/null; exit 0`; version=`echo $target_os | sed -e 's/[^0-9][^0-9]*//' -e 's/\./X/' -e 's/\.//g' -e 's/X/./' \ | awk '{ v=$1+0; if( v > 0 ){ while( v < 100 || int(v) != v ){v = v * 10;}}; print v; }' `; if test "$version" -eq 0 ; then version=`echo $release | sed -e 's/-.*//' -e 's/\.//g' \ | awk '{ v=$1+0; if( v > 0 ){ while( v < 100 || int(v) != v ){v = v * 10;}}; print v; }' `; fi osword=`echo $target_os | sed -e 's/[0-9].*//'`; export osword echo "$as_me:$LINENO: result: Target is $target, arch $target_cpu, os $target_os, release $release, version $version" >&5 echo "${ECHO_T}Target is $target, arch $target_cpu, os $target_os, release $release, version $version" >&6 cat >>confdefs.h <<_ACEOF @%:@define ARCHITECTURE "$target_cpu" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define OSNAME "$osword" _ACEOF cat >>confdefs.h <<_ACEOF @%:@define OSVERSION $version _ACEOF ARCHITECTURE=$target_cpu OSNAME=$osword OSVERSION=$version echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++ccp; p = (char**) ccp; ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF @%:@define const _ACEOF fi echo "$as_me:$LINENO: checking for inline" >&5 echo $ECHO_N "checking for inline... $ECHO_C" >&6 if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifndef __cplusplus static $ac_kw int static_foo () {return 0; } $ac_kw int foo () {return 0; } #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_inline=$ac_kw; break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done fi echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 echo "${ECHO_T}$ac_cv_c_inline" >&6 case $ac_cv_c_inline in inline | yes) ;; no) cat >>confdefs.h <<\_ACEOF @%:@define inline _ACEOF ;; *) cat >>confdefs.h <<_ACEOF @%:@define inline $ac_cv_c_inline _ACEOF ;; esac echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #include #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include <$ac_hdr> #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo "$as_me:$LINENO: checking for library containing opendir" >&5 echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 if test "${ac_cv_search_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { opendir (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_opendir="none required" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_opendir" = no; then for ac_lib in dir; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { opendir (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_opendir="-l$ac_lib" break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext done fi LIBS=$ac_func_search_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 echo "${ECHO_T}$ac_cv_search_opendir" >&6 if test "$ac_cv_search_opendir" != no; then test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" fi else echo "$as_me:$LINENO: checking for library containing opendir" >&5 echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 if test "${ac_cv_search_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { opendir (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_opendir="none required" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_opendir" = no; then for ac_lib in x; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { opendir (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_opendir="-l$ac_lib" break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext done fi LIBS=$ac_func_search_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 echo "${ECHO_T}$ac_cv_search_opendir" >&6 if test "$ac_cv_search_opendir" != no; then test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" fi fi echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6 if test "${ac_cv_header_sys_wait_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int s; wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_sys_wait_h=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_sys_wait_h=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 if test $ac_cv_header_sys_wait_h = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SYS_WAIT_H 1 _ACEOF fi echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 if test "${ac_cv_header_time+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_time=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_time=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 echo "${ECHO_T}$ac_cv_header_time" >&6 if test $ac_cv_header_time = yes; then cat >>confdefs.h <<\_ACEOF @%:@define TIME_WITH_SYS_TIME 1 _ACEOF fi echo "$as_me:$LINENO: checking return type of signal handlers" >&5 echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 if test "${ac_cv_type_signal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef signal # undef signal #endif #ifdef __cplusplus extern "C" void (*signal (int, void (*)(int)))(int); #else void (*signal ()) (); #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int i; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_signal=void else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_signal=int fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 echo "${ECHO_T}$ac_cv_type_signal" >&6 cat >>confdefs.h <<_ACEOF @%:@define RETSIGTYPE $ac_cv_type_signal _ACEOF echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 if test "${ac_cv_type_uid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "uid_t" >/dev/null 2>&1; then ac_cv_type_uid_t=yes else ac_cv_type_uid_t=no fi rm -f conftest* fi echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 echo "${ECHO_T}$ac_cv_type_uid_t" >&6 if test $ac_cv_type_uid_t = no; then cat >>confdefs.h <<\_ACEOF @%:@define uid_t int _ACEOF cat >>confdefs.h <<\_ACEOF @%:@define gid_t int _ACEOF fi echo "$as_me:$LINENO: checking for size_t" >&5 echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((size_t *) 0) return 0; if (sizeof (size_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_size_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF @%:@define size_t unsigned _ACEOF fi echo "$as_me:$LINENO: checking for mode_t" >&5 echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 if test "${ac_cv_type_mode_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((mode_t *) 0) return 0; if (sizeof (mode_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_mode_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_mode_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 echo "${ECHO_T}$ac_cv_type_mode_t" >&6 if test $ac_cv_type_mode_t = yes; then : else cat >>confdefs.h <<_ACEOF @%:@define mode_t int _ACEOF fi echo "$as_me:$LINENO: checking for off_t" >&5 echo $ECHO_N "checking for off_t... $ECHO_C" >&6 if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((off_t *) 0) return 0; if (sizeof (off_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_off_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_off_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 echo "${ECHO_T}$ac_cv_type_off_t" >&6 if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF @%:@define off_t long _ACEOF fi echo "$as_me:$LINENO: checking for pid_t" >&5 echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 if test "${ac_cv_type_pid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((pid_t *) 0) return 0; if (sizeof (pid_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_pid_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_pid_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 echo "${ECHO_T}$ac_cv_type_pid_t" >&6 if test $ac_cv_type_pid_t = yes; then : else cat >>confdefs.h <<_ACEOF @%:@define pid_t int _ACEOF fi echo "$as_me:$LINENO: checking checking for long long" >&5 echo $ECHO_N "checking checking for long long... $ECHO_C" >&6 if test "${ac_cv_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",sizeof(long long)); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_long_long=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_long_long=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_long_long" >&5 echo "${ECHO_T}$ac_cv_long_long" >&6 if test $ac_cv_long_long = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LONG_LONG 1 _ACEOF fi echo "$as_me:$LINENO: checking checking for long double" >&5 echo $ECHO_N "checking checking for long double... $ECHO_C" >&6 if test "${ac_cv_long_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",sizeof(long double)); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_long_double=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_long_double=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_long_double" >&5 echo "${ECHO_T}$ac_cv_long_double" >&6 if test $ac_cv_long_double = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LONG_DOUBLE 1 _ACEOF fi echo "$as_me:$LINENO: checking checking for quad_t" >&5 echo $ECHO_N "checking checking for quad_t... $ECHO_C" >&6 if test "${ac_cv_quad_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",sizeof(quad_t)); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_quad_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_quad_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_quad_t" >&5 echo "${ECHO_T}$ac_cv_quad_t" >&6 if test $ac_cv_quad_t = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_QUAD_T 1 _ACEOF fi checklibs= case $target_os in *linux* ) no_resolv_lib=yes; ;; *bsdi* ) LDCC=shlicc echo "$as_me:$LINENO: checking for setproctitle in -lutil" >&5 echo $ECHO_N "checking for setproctitle in -lutil... $ECHO_C" >&6 if test "${ac_cv_lib_util_setproctitle+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lutil $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char setproctitle (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { setproctitle (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_util_setproctitle=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_util_setproctitle=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_util_setproctitle" >&5 echo "${ECHO_T}$ac_cv_lib_util_setproctitle" >&6 if test $ac_cv_lib_util_setproctitle = yes; then LIBS="-lutil $LIBS" fi ;; *bsd* ) echo "$as_me:$LINENO: checking for setproctitle in -lutil" >&5 echo $ECHO_N "checking for setproctitle in -lutil... $ECHO_C" >&6 if test "${ac_cv_lib_util_setproctitle+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lutil $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char setproctitle (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { setproctitle (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_util_setproctitle=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_util_setproctitle=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_util_setproctitle" >&5 echo "${ECHO_T}$ac_cv_lib_util_setproctitle" >&6 if test $ac_cv_lib_util_setproctitle = yes; then LIBS="-lutil $LIBS" fi ;; *unicos* ) checklibs=no ;; *irix6* ) checklibs=no cat >>confdefs.h <<_ACEOF @%:@define IRIX $version _ACEOF ;; *irix5* ) checklibs=no cat >>confdefs.h <<\_ACEOF @%:@define HAVE_BROKEN_TIOCEXCL 1 _ACEOF cat >>confdefs.h <<\_ACEOF @%:@define SVR4 1 _ACEOF cat >>confdefs.h <<_ACEOF @%:@define IRIX $version _ACEOF ;; *irix* ) checklibs=no cat >>confdefs.h <<_ACEOF @%:@define IRIX $version _ACEOF ;; *solaris* ) cat >>confdefs.h <<\_ACEOF @%:@define SVR4 1 _ACEOF cat >>confdefs.h <<_ACEOF @%:@define SOLARIS $version _ACEOF no_resolv_lib=yes; ;; *hpux* ) cat >>confdefs.h <<\_ACEOF @%:@define _HPUX_SOURCE 1 _ACEOF CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE=1" CFLAGS="$CFLAGS -D_HPUX_SOURCE=1" cat >>confdefs.h <<_ACEOF @%:@define HPUX $version _ACEOF ;; *sunos* ) cat >>confdefs.h <<_ACEOF @%:@define SUNOS $version _ACEOF ;; osf* ) cat >>confdefs.h <<_ACEOF @%:@define DECALPHA $version _ACEOF if test "$ac_cv_c_compiler_gnu" != yes; then CPPFLAGS="$CPPFLAGS -std"; CFLAGS="$CFLAGS -std"; else CPPFLAGS="$CPPFLAGS -DAES_SOURCE" CFLAGS="$CFLAGS -DAES_SOURCE" fi ;; *mips-sni* ) ;; esac for ac_header in a_out.h aouthdr.h ar.h arpa/inet.h arpa/nameser.h assert.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in com_err.h compat.h ctype.h ctypes.h dirent.h errno.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in exechdr.h fcntl.h filehdr.h grp.h limits.h locale.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in machine/vmparam.h malloc.h memory.h ndir.h netdb.h netinet/in.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in nlist.h pwd.h reloc.h resolv.h select.h setjmp.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sgs.h sgtty.h signal.h stab.h stdarg.h stdio.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in stdlib.h string.h strings.h sys/dir.h sys/exec.h sys/exechdr.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/fcntl.h sys/file.h sys/ioctl.h sys/loader.h sys/mount.h sys/ndir.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/param.h sys/pstat.h sys/resource.h sys/select.h sys/signal.h sys/socket.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/stat.h sys/statfs.h sys/statvfs.h sys/syslog.h sys/systeminfo.h sys/termio.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/termiox.h sys/time.h sys/ttold.h sys/ttycom.h sys/types.h sys/utsname.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/vfs.h sys/wait.h syslog.h term.h termcap.h termio.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in termios.h time.h unistd.h utsname.h varargs.h vmparam.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test -z "$checklibs"; then echo "$as_me:$LINENO: checking for getpwent in -lposix" >&5 echo $ECHO_N "checking for getpwent in -lposix... $ECHO_C" >&6 if test "${ac_cv_lib_posix_getpwent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char getpwent (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { getpwent (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_posix_getpwent=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_posix_getpwent=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_posix_getpwent" >&5 echo "${ECHO_T}$ac_cv_lib_posix_getpwent" >&6 if test $ac_cv_lib_posix_getpwent = yes; then LIBS="$LIBS -lposix" fi echo "$as_me:$LINENO: checking for socket in -lsocket_s" >&5 echo $ECHO_N "checking for socket in -lsocket_s... $ECHO_C" >&6 if test "${ac_cv_lib_socket_s_socket+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket_s -lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char socket (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { socket (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_s_socket=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_socket_s_socket=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_s_socket" >&5 echo "${ECHO_T}$ac_cv_lib_socket_s_socket" >&6 if test $ac_cv_lib_socket_s_socket = yes; then LIBS="$LIBS -lsocket_s"; have_socket=1 fi if test -z "$have_socket"; then echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_socket+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket -lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char socket (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { socket (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_socket=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_socket_socket=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 if test $ac_cv_lib_socket_socket = yes; then LIBS="$LIBS -lsocket" fi fi cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int gethostbyaddr; return (gethostbyaddr); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then have_gethost=1 else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test -z "$have_gethost" ; then h="you need additional libs for gethostbyaddr"; else h="no additional libs for gethostbyaddr"; fi echo "$as_me:$LINENO: result: $h" >&5 echo "${ECHO_T}$h" >&6 if test -z "$have_gethost" ; then echo "$as_me:$LINENO: checking for gethostbyaddr in -lnsl_s" >&5 echo $ECHO_N "checking for gethostbyaddr in -lnsl_s... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_s_gethostbyaddr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl_s $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyaddr (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostbyaddr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_s_gethostbyaddr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_nsl_s_gethostbyaddr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_s_gethostbyaddr" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_s_gethostbyaddr" >&6 if test $ac_cv_lib_nsl_s_gethostbyaddr = yes; then LIBS="$LIBS -lnsl_s"; have_gethost=1 fi fi if test -z "$have_gethost"; then echo "$as_me:$LINENO: checking for gethostbyaddr in -lnsl" >&5 echo $ECHO_N "checking for gethostbyaddr in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_gethostbyaddr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyaddr (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostbyaddr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyaddr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyaddr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyaddr" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyaddr" >&6 if test $ac_cv_lib_nsl_gethostbyaddr = yes; then LIBS="$LIBS -lnsl"; have_gethost=1 fi fi if test -z "$have_gethost"; then echo "$as_me:$LINENO: checking for gethostbyaddr in -lnet_s" >&5 echo $ECHO_N "checking for gethostbyaddr in -lnet_s... $ECHO_C" >&6 if test "${ac_cv_lib_net_s_gethostbyaddr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnet_s $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyaddr (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostbyaddr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_net_s_gethostbyaddr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_net_s_gethostbyaddr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_net_s_gethostbyaddr" >&5 echo "${ECHO_T}$ac_cv_lib_net_s_gethostbyaddr" >&6 if test $ac_cv_lib_net_s_gethostbyaddr = yes; then LIBS="$LIBS -lnet_s"; have_gethost=1 fi fi if test -z "$have_gethost"; then echo "$as_me:$LINENO: checking for gethostbyaddr in -lnet" >&5 echo $ECHO_N "checking for gethostbyaddr in -lnet... $ECHO_C" >&6 if test "${ac_cv_lib_net_gethostbyaddr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnet $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyaddr (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostbyaddr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_net_gethostbyaddr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_net_gethostbyaddr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_net_gethostbyaddr" >&5 echo "${ECHO_T}$ac_cv_lib_net_gethostbyaddr" >&6 if test $ac_cv_lib_net_gethostbyaddr = yes; then LIBS="$LIBS -lnet"; have_gethost=1 fi fi if test -z "$no_resolv_lib"; then echo "$as_me:$LINENO: checking for inet_ntop" >&5 echo $ECHO_N "checking for inet_ntop... $ECHO_C" >&6 if test "${ac_cv_func_inet_ntop+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char inet_ntop (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char inet_ntop (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_inet_ntop) || defined (__stub___inet_ntop) choke me #else f = inet_ntop; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_inet_ntop=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_inet_ntop=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_inet_ntop" >&5 echo "${ECHO_T}$ac_cv_func_inet_ntop" >&6 if test $ac_cv_func_inet_ntop = yes; then name2=yes fi if test -z "$name2" ; then echo "$as_me:$LINENO: checking for inet_ntop in -lresolv" >&5 echo $ECHO_N "checking for inet_ntop in -lresolv... $ECHO_C" >&6 if test "${ac_cv_lib_resolv_inet_ntop+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lresolv $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char inet_ntop (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { inet_ntop (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_resolv_inet_ntop=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_resolv_inet_ntop=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_inet_ntop" >&5 echo "${ECHO_T}$ac_cv_lib_resolv_inet_ntop" >&6 if test $ac_cv_lib_resolv_inet_ntop = yes; then LIBS="$LIBS -lresolv";name2=yes fi fi; fi fi for ac_func in _res cfsetispeed fcntl flock gethostbyname2 getdtablesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in gethostname getrlimit inet_aton inet_ntop inet_pton do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in innetgr killpg lockf mkstemp do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in mktemp openlog putenv random rand setenv seteuid setruid setlinebuf setlocale setpgid setproctitle do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in setresuid setreuid setsid setvbuf sigaction do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in sigprocmask siglongjmp socketpair strcasecmp do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in strchr strdup strerror strncasecmp sysconf sysinfo do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in tcdrain tcflush tcsetattr uname unsetenv wait3 waitpid do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if test ! "$ac_cv_func_setreuid" = yes -a ! "$ac_cv_func_seteuid" = yes -a ! "$ac_cv_func_setresuid" = yes; then { echo "$as_me:$LINENO: WARNING: WARNING: missing setreuid(), seteuid(), and setresuid() " >&5 echo "$as_me: WARNING: WARNING: missing setreuid(), seteuid(), and setresuid() " >&2;} fi for ac_header in unistd.h vfork.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" @%:@include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in fork vfork do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ac_cv_func_fork_works=$ac_cv_func_fork if test "x$ac_cv_func_fork" = xyes; then echo "$as_me:$LINENO: checking for working fork" >&5 echo $ECHO_N "checking for working fork... $ECHO_C" >&6 if test "${ac_cv_func_fork_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_fork_works=cross else cat >conftest.$ac_ext <<_ACEOF /* By Ruediger Kuhlmann. */ #include #if HAVE_UNISTD_H # include #endif /* Some systems only have a dummy stub for fork() */ int main () { if (fork() < 0) exit (1); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_fork_works=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_fork_works=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_func_fork_works" >&5 echo "${ECHO_T}$ac_cv_func_fork_works" >&6 fi if test "x$ac_cv_func_fork_works" = xcross; then case $host in *-*-amigaos* | *-*-msdosdjgpp*) # Override, as these systems have only a dummy fork() stub ac_cv_func_fork_works=no ;; *) ac_cv_func_fork_works=yes ;; esac { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} fi ac_cv_func_vfork_works=$ac_cv_func_vfork if test "x$ac_cv_func_vfork" = xyes; then echo "$as_me:$LINENO: checking for working vfork" >&5 echo $ECHO_N "checking for working vfork... $ECHO_C" >&6 if test "${ac_cv_func_vfork_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_vfork_works=cross else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Thanks to Paul Eggert for this test. */ #include #include #include #if HAVE_UNISTD_H # include #endif #if HAVE_VFORK_H # include #endif /* On some sparc systems, changes by the child to local and incoming argument registers are propagated back to the parent. The compiler is told about this with #include , but some compilers (e.g. gcc -O) don't grok . Test for this by using a static variable whose address is put into a register that is clobbered by the vfork. */ static #ifdef __cplusplus sparc_address_test (int arg) # else sparc_address_test (arg) int arg; #endif { static pid_t child; if (!child) { child = vfork (); if (child < 0) { perror ("vfork"); _exit(2); } if (!child) { arg = getpid(); write(-1, "", 0); _exit (arg); } } } int main () { pid_t parent = getpid (); pid_t child; sparc_address_test (); child = vfork (); if (child == 0) { /* Here is another test for sparc vfork register problems. This test uses lots of local variables, at least as many local variables as main has allocated so far including compiler temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should reuse the register of parent for one of the local variables, since it will think that parent can't possibly be used any more in this routine. Assigning to the local variable will thus munge parent in the parent process. */ pid_t p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); /* Convince the compiler that p..p7 are live; otherwise, it might use the same hardware register for all 8 local variables. */ if (p != p1 || p != p2 || p != p3 || p != p4 || p != p5 || p != p6 || p != p7) _exit(1); /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent from child file descriptors. If the child closes a descriptor before it execs or exits, this munges the parent's descriptor as well. Test for this by closing stdout in the child. */ _exit(close(fileno(stdout)) != 0); } else { int status; struct stat st; while (wait(&status) != child) ; exit( /* Was there some problem with vforking? */ child < 0 /* Did the child fail? (This shouldn't happen.) */ || status /* Did the vfork/compiler bug occur? */ || parent != getpid() /* Did the file descriptor bug occur? */ || fstat(fileno(stdout), &st) != 0 ); } } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_vfork_works=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_vfork_works=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_func_vfork_works" >&5 echo "${ECHO_T}$ac_cv_func_vfork_works" >&6 fi; if test "x$ac_cv_func_fork_works" = xcross; then ac_cv_func_vfork_works=ac_cv_func_vfork { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} fi if test "x$ac_cv_func_vfork_works" = xyes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_WORKING_VFORK 1 _ACEOF else cat >>confdefs.h <<\_ACEOF @%:@define vfork fork _ACEOF fi if test "x$ac_cv_func_fork_works" = xyes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_WORKING_FORK 1 _ACEOF fi for ac_func in vprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF echo "$as_me:$LINENO: checking for _doprnt" >&5 echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 if test "${ac_cv_func__doprnt+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char _doprnt (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char _doprnt (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub__doprnt) || defined (__stub____doprnt) choke me #else f = _doprnt; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func__doprnt=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func__doprnt=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 echo "${ECHO_T}$ac_cv_func__doprnt" >&6 if test $ac_cv_func__doprnt = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_DOPRNT 1 _ACEOF fi fi done echo "$as_me:$LINENO: checking how to manipulate tty attributes" >&5 echo $ECHO_N "checking how to manipulate tty attributes... $ECHO_C" >&6 if test "${ac_cv_struct_term+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_header_termios_h" = yes; then ac_cv_struct_term=termios fi if test "$ac_cv_header_sys_termios_h" = yes; then ac_cv_struct_term=termios fi if test -z "$ac_cv_struct_term" ; then cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_TERMIO_H #include #endif #ifdef HAVE_SYS_TERMIO_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct termio t;t.c_iflag = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_struct_term=termio else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi if test -z "$ac_cv_struct_term" ; then cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct sgttyb s;s.sg_flags = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_struct_term=sgttyb else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi if test -z "$ac_cv_struct_term" ; then ac_cv_struct_term=UNDEFINED fi fi echo "$as_me:$LINENO: result: $ac_cv_struct_term" >&5 echo "${ECHO_T}$ac_cv_struct_term" >&6 if test "$ac_cv_struct_term" = "sgttyb"; then cat >>confdefs.h <<\_ACEOF @%:@define USE_SGTTYB 1 _ACEOF cat >>confdefs.h <<\_ACEOF @%:@define USE_STTY SGTTYB _ACEOF fi if test "$ac_cv_struct_term" = "termio"; then cat >>confdefs.h <<\_ACEOF @%:@define USE_TERMIO 1 _ACEOF cat >>confdefs.h <<\_ACEOF @%:@define USE_STTY TERMIO _ACEOF fi if test "$ac_cv_struct_term" = "termios"; then cat >>confdefs.h <<\_ACEOF @%:@define USE_TERMIOS 1 _ACEOF cat >>confdefs.h <<\_ACEOF @%:@define USE_STTY TERMIOS _ACEOF if test "$ac_cv_header_sys_termiox_h" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define USE_TERMIOX 1 _ACEOF fi fi echo "$as_me:$LINENO: checking checking for struct exec" >&5 echo $ECHO_N "checking checking for struct exec... $ECHO_C" >&6 if test "${ac_cv_struct_exec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_struct_exec=no if test "$ac_cv_header_a_out_h" != no ; then cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct exec b; b.a_text = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_struct_exec=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_struct_exec=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_struct_exec" >&5 echo "${ECHO_T}$ac_cv_struct_exec" >&6 if test "$ac_cv_struct_exec" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_STRUCT_EXEC 1 _ACEOF fi echo "$as_me:$LINENO: checking checking for lseek prototype" >&5 echo $ECHO_N "checking checking for lseek prototype... $ECHO_C" >&6 if test "${ac_cv_lseek_proto+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_UNISTD_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { off_t x; x = lseek(0,"test",SEEK_SET); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lseek_proto=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lseek_proto=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_lseek_proto" >&5 echo "${ECHO_T}$ac_cv_lseek_proto" >&6 if test "$ac_cv_lseek_proto" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LSEEK_PROTO 1 _ACEOF fi echo "$as_me:$LINENO: checking how to get filesystem free space" >&5 echo $ECHO_N "checking how to get filesystem free space... $ECHO_C" >&6 if test "${ac_cv_struct_fstype+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else fstype= if test "$ac_cv_func_statvfs" != no ; then #{ cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATVFS_H # include #endif #ifdef HAVE_SYS_STATFS_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct statvfs s; statvfs ("/", &s); return(s.f_bavail+s.f_bsize) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then fstype=statvfs else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi #} if test "$ac_cv_func_statfs" != no ; then #{ if test -z "$fstype" ; then #{ cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATFS_H # include #endif #ifdef HAVE_SYS_STATVFS_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct fs_data s; return(s.fd_bfree+s.fd_bsize) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then fstype=Ultrix-statfs else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi #} if test -z "$fstype" ; then #{ cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATFS_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_VFS_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct statfs s; return(s.f_bavail+s.f_bsize) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then fstype=statfs else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi # } if test -z "$fstype" ; then # { cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATFS_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_VFS_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct statfs s; return(s.f_bfree+s.f_bsize) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then fstype=SVR3-statfs else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi # } fi # } if test -z "$fstype" ; then echo "cannot find a valid statfs-like structure!" fstype=UNKNOWN fi ac_cv_struct_fstype=$fstype fi echo "$as_me:$LINENO: result: $ac_cv_struct_fstype" >&5 echo "${ECHO_T}$ac_cv_struct_fstype" >&6 if test "$ac_cv_struct_fstype" = SVR3-statfs; then cat >>confdefs.h <<\_ACEOF @%:@define USE_STATFS_TYPE SVR3_STATFS _ACEOF fi if test "$ac_cv_struct_fstype" = Ultrix-statfs; then cat >>confdefs.h <<\_ACEOF @%:@define USE_STATFS_TYPE ULTRIX_STATFS _ACEOF fi if test "$ac_cv_struct_fstype" = statfs; then cat >>confdefs.h <<\_ACEOF @%:@define USE_STATFS_TYPE STATFS _ACEOF fi if test "$ac_cv_struct_fstype" = statvfs; then cat >>confdefs.h <<\_ACEOF @%:@define USE_STATFS_TYPE STATVFS _ACEOF fi echo "$as_me:$LINENO: checking for errno" >&5 echo $ECHO_N "checking for errno... $ECHO_C" >&6 if test "${ac_cv_errno+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int errno; return (errno); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_errno=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_errno=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_errno" >&5 echo "${ECHO_T}$ac_cv_errno" >&6 if test "$ac_cv_errno" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_ERRNO 1 _ACEOF echo "$as_me:$LINENO: checking for errno declaration" >&5 echo $ECHO_N "checking for errno declaration... $ECHO_C" >&6 if test "${ac_cv_decl_errno+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_ERRNO_H #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { return(sys_nerr); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_errno=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_errno=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_errno" >&5 echo "${ECHO_T}$ac_cv_decl_errno" >&6 if test "$ac_cv_decl_errno" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_DECL_ERRNO 1 _ACEOF fi; fi echo "$as_me:$LINENO: checking for sys_nerr" >&5 echo $ECHO_N "checking for sys_nerr... $ECHO_C" >&6 if test "${ac_cv_sys_nerr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int sys_nerr; return (sys_nerr); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sys_nerr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_sys_nerr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_sys_nerr" >&5 echo "${ECHO_T}$ac_cv_sys_nerr" >&6 if test "$ac_cv_sys_nerr" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SYS_NERR 1 _ACEOF echo "$as_me:$LINENO: checking for sys_nerr declaration" >&5 echo $ECHO_N "checking for sys_nerr declaration... $ECHO_C" >&6 if test "${ac_cv_decl_sys_nerr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { return(sys_nerr); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_sys_nerr_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_sys_nerr_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_sys_nerr" >&5 echo "${ECHO_T}$ac_cv_decl_sys_nerr" >&6 if test "$ac_cv_decl_sys_nerr" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_DECL_SYS_NERR 1 _ACEOF fi fi echo "$as_me:$LINENO: checking for sys_errlist array" >&5 echo $ECHO_N "checking for sys_errlist array... $ECHO_C" >&6 if test "${ac_cv_sys_errlist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern char *sys_errlist[]; sys_errlist[0]; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sys_errlist=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_sys_errlist=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_sys_errlist" >&5 echo "${ECHO_T}$ac_cv_sys_errlist" >&6 if test "$ac_cv_sys_errlist" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SYS_ERRLIST 1 _ACEOF echo "$as_me:$LINENO: checking for sys_errlist declaration" >&5 echo $ECHO_N "checking for sys_errlist declaration... $ECHO_C" >&6 if test "${ac_cv_sys_errlist_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { char *s = sys_errlist[0]; return(*s); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_sys_errlist=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_sys_errlist=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_sys_errlist_def" >&5 echo "${ECHO_T}$ac_cv_sys_errlist_def" >&6 if test "$ac_cv_decl_sys_errlist" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_DECL_SYS_ERRLIST 1 _ACEOF fi fi echo "$as_me:$LINENO: checking for setproctitle declaration" >&5 echo $ECHO_N "checking for setproctitle declaration... $ECHO_C" >&6 if test "${ac_cv_decl_setproctitle_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { setproctitle(0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_setproctitle_def=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_setproctitle_def=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_setproctitle_def" >&5 echo "${ECHO_T}$ac_cv_decl_setproctitle_def" >&6 if test "$ac_cv_decl_setproctitle_def" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SETPROCTITLE_DEF 1 _ACEOF fi echo "$as_me:$LINENO: checking for sys_siglist declaration" >&5 echo $ECHO_N "checking for sys_siglist declaration... $ECHO_C" >&6 if test "${ac_cv_decl_sys_siglist_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%s",sys_siglist[0]); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_sys_siglist_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_sys_siglist_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_sys_siglist_def" >&5 echo "${ECHO_T}$ac_cv_decl_sys_siglist_def" >&6 if test "$ac_cv_decl_sys_siglist_def" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SYS_SIGLIST_DEF 1 _ACEOF ac_cv_sys_siglist=yes fi echo "$as_me:$LINENO: checking for _sys_siglist declaration" >&5 echo $ECHO_N "checking for _sys_siglist declaration... $ECHO_C" >&6 if test "${ac_cv_decl__sys_siglist_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%s",_sys_siglist[0]); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl__sys_siglist_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl__sys_siglist_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl__sys_siglist_def" >&5 echo "${ECHO_T}$ac_cv_decl__sys_siglist_def" >&6 if test "$ac_cv_decl__sys_siglist_def" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE__SYS_SIGLIST_DEF 1 _ACEOF ac_cv__sys_siglist=yes fi echo "$as_me:$LINENO: checking for sys_siglist array" >&5 echo $ECHO_N "checking for sys_siglist array... $ECHO_C" >&6 if test "${ac_cv_sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int sys_siglist; printf("%d",sys_siglist); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sys_siglist=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_sys_siglist=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_sys_siglist" >&5 echo "${ECHO_T}$ac_cv_sys_siglist" >&6 if test "$ac_cv_sys_siglist" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SYS_SIGLIST 1 _ACEOF fi echo "$as_me:$LINENO: checking for _sys_siglist array" >&5 echo $ECHO_N "checking for _sys_siglist array... $ECHO_C" >&6 if test "${ac_cv__sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int _sys_siglist; printf("%d",_sys_siglist); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv__sys_siglist=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv__sys_siglist=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv__sys_siglist" >&5 echo "${ECHO_T}$ac_cv__sys_siglist" >&6 if test "$ac_cv__sys_siglist" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE__SYS_SIGLIST 1 _ACEOF fi echo "$as_me:$LINENO: checking for getprgp() or getpgrp(0) form" >&5 echo $ECHO_N "checking for getprgp() or getpgrp(0) form... $ECHO_C" >&6 if test "${ac_cv_func_getpgrp_0+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #ifdef HAVE_UNISTD_H # include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { getpgrp(0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_getpgrp_0=getpgrp_0 else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_getpgrp_0=getpgrp fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_0" >&5 echo "${ECHO_T}$ac_cv_func_getpgrp_0" >&6 if test "$ac_cv_func_getpgrp_0" = getpgrp_0; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GETPGRP_0 0 _ACEOF else cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GETPGRP_0 1 _ACEOF fi echo "$as_me:$LINENO: checking for setprgp form" >&5 echo $ECHO_N "checking for setprgp form... $ECHO_C" >&6 if test "${ac_cv_func_setpgrp_0+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { setpgrp(0,0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_setpgrp_0=setpgrp_0 else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_setpgrp_0=setpgrp fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_setpgrp_0" >&5 echo "${ECHO_T}$ac_cv_func_setpgrp_0" >&6 if test "$ac_cv_func_setpgrp_0" = setpgrp_0; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SETPGRP_0 1 _ACEOF fi echo "$as_me:$LINENO: checking for obsolete union wait compatibility" >&5 echo $ECHO_N "checking for obsolete union wait compatibility... $ECHO_C" >&6 if test "${ac_cv_unionwait+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { union wait x;WIFEXITED(x); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_unionwait=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_unionwait=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_unionwait" >&5 echo "${ECHO_T}$ac_cv_unionwait" >&6 if test "$ac_cv_unionwait" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_UNION_WAIT 1 _ACEOF fi echo "$as_me:$LINENO: checking for gethostname declaration" >&5 echo $ECHO_N "checking for gethostname declaration... $ECHO_C" >&6 if test "${ac_cv_decl_gethostname_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostname(1); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_gethostname_def=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_gethostname_def=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_gethostname_def" >&5 echo "${ECHO_T}$ac_cv_decl_gethostname_def" >&6 if test "$ac_cv_decl_gethostname_def" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GETHOSTNAME_DEF 1 _ACEOF fi echo "$as_me:$LINENO: checking for innetgr declaration" >&5 echo $ECHO_N "checking for innetgr declaration... $ECHO_C" >&6 if test "${ac_cv_decl_innetgr_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_NETDB_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d", innetgr(1)); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_innetgr_def=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_innetgr_def=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_innetgr_def" >&5 echo "${ECHO_T}$ac_cv_decl_innetgr_def" >&6 if test "$ac_cv_decl_innetgr_def" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_INNETGR_DEF 1 _ACEOF fi echo "$as_me:$LINENO: checking for openlog declaration" >&5 echo $ECHO_N "checking for openlog declaration... $ECHO_C" >&6 if test "${ac_cv_decl_openlog_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_STDARG_H #include #endif #ifdef HAVE_SYSLOG_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",openlog); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_openlog_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_openlog_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_openlog_def" >&5 echo "${ECHO_T}$ac_cv_decl_openlog_def" >&6 if test "$ac_cv_decl_openlog_def" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_OPENLOG_DEF 1 _ACEOF fi echo "$as_me:$LINENO: checking for syslog declaration" >&5 echo $ECHO_N "checking for syslog declaration... $ECHO_C" >&6 if test "${ac_cv_decl_syslog_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef HAVE_STDARG_H #include #endif #ifdef HAVE_SYSLOG_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",syslog); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_syslog_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_syslog_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_syslog_def" >&5 echo "${ECHO_T}$ac_cv_decl_syslog_def" >&6 if test "$ac_cv_decl_syslog_def" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SYSLOG_DEF 1 _ACEOF fi echo "$as_me:$LINENO: checking for struct in6_addr declaration" >&5 echo $ECHO_N "checking for struct in6_addr declaration... $ECHO_C" >&6 if test "${ac_cv_decl_in6_addr_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct in6_addr v; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_in6_addr_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_in6_addr_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_in6_addr_def" >&5 echo "${ECHO_T}$ac_cv_decl_in6_addr_def" >&6 if test "$ac_cv_decl_in6_addr_def" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define IN6_ADDR 1 _ACEOF fi echo "$as_me:$LINENO: checking for struct in_addr6 declaration (LINUX)" >&5 echo $ECHO_N "checking for struct in_addr6 declaration (LINUX)... $ECHO_C" >&6 if test "${ac_cv_decl_in_addr6_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct in_addr6 v; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_in_addr6_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_in_addr6_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_in_addr6_def" >&5 echo "${ECHO_T}$ac_cv_decl_in_addr6_def" >&6 if test "$ac_cv_decl_in_addr6_def" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define IN_ADDR6 1 _ACEOF fi echo "$as_me:$LINENO: checking for struct stat has st_mtimespec.tv_nsec" >&5 echo $ECHO_N "checking for struct stat has st_mtimespec.tv_nsec... $ECHO_C" >&6 if test "${ac_cv_decl_st_mtimespec_tv_nsec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #ifdef HAVE_SYS_TIME_H #include #endif #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct stat statb; statb.st_mtimespec.tv_nsec; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_st_mtimespec_tv_nsec=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_st_mtimespec_tv_nsec=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_st_mtimespec_tv_nsec" >&5 echo "${ECHO_T}$ac_cv_decl_st_mtimespec_tv_nsec" >&6 if test "$ac_cv_decl_st_mtimespec_tv_nsec" = yes; then cat >>confdefs.h <<_ACEOF @%:@define ST_MTIMESPEC_TV_NSEC 1 _ACEOF fi echo "$as_me:$LINENO: checking for struct stat has st_mtimensec" >&5 echo $ECHO_N "checking for struct stat has st_mtimensec... $ECHO_C" >&6 if test "${ac_cv_decl_st_mtimensec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #if defined(HAVE_SYS_TIME_H) #include #endif #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct stat statb; statb.st_mtimensec; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_st_mtimensec=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_st_mtimensec=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_st_mtimensec" >&5 echo "${ECHO_T}$ac_cv_decl_st_mtimensec" >&6 if test "$ac_cv_decl_st_mtimensec" = yes; then cat >>confdefs.h <<_ACEOF @%:@define ST_MTIMENSEC 1 _ACEOF fi echo "$as_me:$LINENO: checking for strcasecmp definition" >&5 echo $ECHO_N "checking for strcasecmp definition... $ECHO_C" >&6 if test "${ac_cv_decl_strcasecmp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #if defined(HAVE_STDLIB_H) #include #endif #if defined(HAVE_STRING_H) #include #endif #if defined(HAVE_STRINGS_H) #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { strcasecmp(1) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_strcasecmp=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_strcasecmp=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_strcasecmp" >&5 echo "${ECHO_T}$ac_cv_decl_strcasecmp" >&6 if test "$ac_cv_decl_strcasecmp" = yes; then cat >>confdefs.h <<_ACEOF @%:@define HAVE_STRCASECMP_DEF 1 _ACEOF fi echo "$as_me:$LINENO: checking for flock definition" >&5 echo $ECHO_N "checking for flock definition... $ECHO_C" >&6 if test "${ac_cv_decl_flock+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #if defined(HAVE_STDLIB_H) #include #endif #if defined(HAVE_SYS_FILE_H) #include #endif #if defined(HAVE_FCNTL_H) #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { flock(1) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_flock=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_flock=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_flock" >&5 echo "${ECHO_T}$ac_cv_decl_flock" >&6 if test "$ac_cv_decl_flock" = yes; then cat >>confdefs.h <<_ACEOF @%:@define HAVE_FLOCK_DEF 1 _ACEOF fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # Extract the first word of "auxman", so it can be a program name with args. set dummy auxman; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_INSTALL_MAN+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$INSTALL_MAN"; then ac_cv_prog_INSTALL_MAN="$INSTALL_MAN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_INSTALL_MAN="auxman" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_INSTALL_MAN" && ac_cv_prog_INSTALL_MAN="$INSTALL -m 644" fi fi INSTALL_MAN=$ac_cv_prog_INSTALL_MAN if test -n "$INSTALL_MAN"; then echo "$as_me:$LINENO: result: $INSTALL_MAN" >&5 echo "${ECHO_T}$INSTALL_MAN" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \${MAKE}" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="${MAKE}"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi echo "$as_me:$LINENO: checking for shell" >&5 echo $ECHO_N "checking for shell... $ECHO_C" >&6 SHELL=/bin/sh echo "$as_me:$LINENO: result: using $SHELL (FORCED)" >&5 echo "${ECHO_T}using $SHELL (FORCED)" >&6 MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi echo "$as_me:$LINENO: checking whether NLS is requested" >&5 echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" USE_NLS=$enableval else USE_NLS=no fi; echo "$as_me:$LINENO: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then echo "$as_me:$LINENO: result: $MSGFMT" >&5 echo "${ECHO_T}$MSGFMT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then echo "$as_me:$LINENO: result: $GMSGFMT" >&5 echo "${ECHO_T}$GMSGFMT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then echo "$as_me:$LINENO: result: $XGETTEXT" >&5 echo "${ECHO_T}$XGETTEXT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f messages.po # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGMERGE+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then echo "$as_me:$LINENO: result: $MSGMERGE" >&5 echo "${ECHO_T}$MSGMERGE" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$GMSGFMT" != ":"; then if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 GMSGFMT=":" fi fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 XGETTEXT=":" fi rm -f messages.po fi ac_config_commands="$ac_config_commands default-1" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by GCC" >&5 echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${acl_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then echo "$as_me:$LINENO: result: $LD" >&5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${acl_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 with_gnu_ld=$acl_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for shared library run path origin" >&5 echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 if test "${acl_cv_rpath+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 echo "${ECHO_T}$acl_cv_rpath" >&6 wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath or --disable-rpath was given. if test "${enable_rpath+set}" = set; then enableval="$enable_rpath" : else enable_rpath=yes fi; use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then withval="$with_libiconv_prefix" if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi; LIBICONV= LTLIBICONV= INCICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi echo "$as_me:$LINENO: checking whether NLS is requested" >&5 echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" USE_NLS=$enableval else USE_NLS=no fi; echo "$as_me:$LINENO: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 LIBINTL= LTLIBINTL= POSUB= if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext1_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_func_gnugettext1_libc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 gt_cv_func_gnugettext1_libc=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 if test "$gt_cv_func_gnugettext1_libc" != "yes"; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done echo "$as_me:$LINENO: checking for iconv" >&5 echo $ECHO_N "checking for iconv... $ECHO_C" >&6 if test "${am_cv_func_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_func_iconv=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_lib_iconv=yes am_cv_func_iconv=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 echo "${ECHO_T}$am_cv_func_iconv" >&6 if test "$am_cv_func_iconv" = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_ICONV 1 _ACEOF fi if test "$am_cv_lib_iconv" = yes; then echo "$as_me:$LINENO: checking how to link with libiconv" >&5 echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $LIBICONV" >&5 echo "${ECHO_T}$LIBICONV" >&6 else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix or --without-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then withval="$with_libintl_prefix" if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi; LIBINTL= LTLIBINTL= INCINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_func_gnugettext1_libintl=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 gt_cv_func_gnugettext1_libintl=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext1_libintl=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 fi if test "$gt_cv_func_gnugettext1_libc" = "yes" \ || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then cat >>confdefs.h <<\_ACEOF @%:@define ENABLE_NLS 1 _ACEOF else USE_NLS=no fi fi echo "$as_me:$LINENO: checking whether to use NLS" >&5 echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 if test "$USE_NLS" = "yes"; then echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6 if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi echo "$as_me:$LINENO: result: $gt_source" >&5 echo "${ECHO_T}$gt_source" >&6 fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then echo "$as_me:$LINENO: checking how to link with libintl" >&5 echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $LIBINTL" >&5 echo "${ECHO_T}$LIBINTL" >&6 for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GETTEXT 1 _ACEOF cat >>confdefs.h <<\_ACEOF @%:@define HAVE_DCGETTEXT 1 _ACEOF fi POSUB=po fi INTLLIBS="$LIBINTL" if test "$ac_cv_c_compiler_gnu" = yes; then CPPFLAGS="$CPPFLAGS -g -W -Wall -Werror -Wno-unused " CFLAGS="$CFLAGS -g -W -Wall -Werror -Wno-unused " fi; ac_config_files="$ac_config_files Makefile src/Makefile man/Makefile fonts/Makefile DOCS/Makefile UTILS/accounting.sh UTILS/sendhp.sh UTILS/supported UTILS/fixupdate src/extract_pjl src/wrapper po/Makefile.in" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overriden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if cmp -s $cache_file confcache; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # NLS nuisances. # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi (set +x; test -n "`(LANG=C; export LANG) 2>&1`") && { $as_unset LANG || test "${LANG+set}" != set; } || { LANG=C; export LANG; } (set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || { LC_ALL=C; export LC_ALL; } (set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || { LC_TIME=C; export LC_TIME; } (set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || { LC_CTYPE=C; export LC_CTYPE; } (set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || { LANGUAGE=C; export LANGUAGE; } (set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || { LC_COLLATE=C; export LC_COLLATE; } (set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || { LC_NUMERIC=C; export LC_NUMERIC; } (set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || { LC_MESSAGES=C; export LC_MESSAGES; } # Name of the executable. as_me=`(basename "$0") 2>/dev/null || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conftest.sh echo "exit 0" >>conftest.sh chmod +x conftest.sh if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conftest.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by $as_me, which was generated by GNU Autoconf 2.53. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.53, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` shift set dummy "$ac_option" "$ac_optarg" ${1+"$@"} shift ;; -*);; *) # This is not an option, so the user has probably given explicit # arguments. ac_need_defaults=false;; esac case $1 in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) shift CONFIG_FILES="$CONFIG_FILES $1" ac_need_defaults=false;; --header | --heade | --head | --hea ) shift CONFIG_HEADERS="$CONFIG_HEADERS $1" ac_need_defaults=false;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "fonts/Makefile" ) CONFIG_FILES="$CONFIG_FILES fonts/Makefile" ;; "DOCS/Makefile" ) CONFIG_FILES="$CONFIG_FILES DOCS/Makefile" ;; "UTILS/accounting.sh" ) CONFIG_FILES="$CONFIG_FILES UTILS/accounting.sh" ;; "UTILS/sendhp.sh" ) CONFIG_FILES="$CONFIG_FILES UTILS/sendhp.sh" ;; "UTILS/supported" ) CONFIG_FILES="$CONFIG_FILES UTILS/supported" ;; "UTILS/fixupdate" ) CONFIG_FILES="$CONFIG_FILES UTILS/fixupdate" ;; "src/extract_pjl" ) CONFIG_FILES="$CONFIG_FILES src/extract_pjl" ;; "src/wrapper" ) CONFIG_FILES="$CONFIG_FILES src/wrapper" ;; "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. : ${TMPDIR=/tmp} { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=$TMPDIR/cs$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@target@,$target,;t t s,@target_cpu@,$target_cpu,;t t s,@target_vendor@,$target_vendor,;t t s,@target_os@,$target_os,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@CPP@,$CPP,;t t s,@INSTALL@,$INSTALL,;t t s,@INSTALL_MAN@,$INSTALL_MAN,;t t s,@LDCC@,$LDCC,;t t s,@AWK@,$AWK,;t t s,@PERL@,$PERL,;t t s,@LOCALEDIR@,$LOCALEDIR,;t t s,@LN_S@,$LN_S,;t t s,@ECHO@,$ECHO,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@LIBTOOL@,$LIBTOOL,;t t s,@FILEUTIL@,$FILEUTIL,;t t s,@GZIP@,$GZIP,;t t s,@GS@,$GS,;t t s,@A2PS@,$A2PS,;t t s,@CAT@,$CAT,;t t s,@IFHP_CONF@,$IFHP_CONF,;t t s,@SNMP@,$SNMP,;t t s,@FOOMATIC_RIP@,$FOOMATIC_RIP,;t t s,@FOOMATIC@,$FOOMATIC,;t t s,@PAGE_SIZE@,$PAGE_SIZE,;t t s,@FILTER_DIR@,$FILTER_DIR,;t t s,@FONT_DIR@,$FONT_DIR,;t t s,@STRIP_OPTION@,$STRIP_OPTION,;t t s,@GSCHECK@,$GSCHECK,;t t s,@DEVFD3@,$DEVFD3,;t t s,@ARCHITECTURE@,$ARCHITECTURE,;t t s,@OSNAME@,$OSNAME,;t t s,@OSVERSION@,$OSVERSION,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t s,@USE_NLS@,$USE_NLS,;t t s,@MSGFMT@,$MSGFMT,;t t s,@GMSGFMT@,$GMSGFMT,;t t s,@XGETTEXT@,$XGETTEXT,;t t s,@MSGMERGE@,$MSGMERGE,;t t s,@LIBICONV@,$LIBICONV,;t t s,@LTLIBICONV@,$LTLIBICONV,;t t s,@INTLLIBS@,$INTLLIBS,;t t s,@LIBINTL@,$LIBINTL,;t t s,@LTLIBINTL@,$LTLIBINTL,;t t s,@POSUB@,$POSUB,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { case "$ac_dir" in [\\/]* | ?:[\\/]* ) as_incr_dir=;; *) as_incr_dir=.;; esac as_dummy="$ac_dir" for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do case $as_mkdir_dir in # Skip DOS drivespec ?:) as_incr_dir=$as_mkdir_dir ;; *) as_incr_dir=$as_incr_dir/$as_mkdir_dir test -d "$as_incr_dir" || mkdir "$as_incr_dir" || { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; } ;; esac done; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; *) # Relative if test -f "$f"; then # Build tree echo $f elif test -f "$srcdir/$f"; then # Source tree echo $srcdir/$f else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; *) # Relative if test -f "$f"; then # Build tree echo $f elif test -f "$srcdir/$f"; then # Source tree echo $srcdir/$f else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # egrep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if cmp -s $ac_file $tmp/config.h 2>/dev/null; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { case "$ac_dir" in [\\/]* | ?:[\\/]* ) as_incr_dir=;; *) as_incr_dir=.;; esac as_dummy="$ac_dir" for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do case $as_mkdir_dir in # Skip DOS drivespec ?:) as_incr_dir=$as_mkdir_dir ;; *) as_incr_dir=$as_incr_dir/$as_mkdir_dir test -d "$as_incr_dir" || mkdir "$as_incr_dir" || { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; } ;; esac done; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in default-1 ) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: exec 5>/dev/null $SHELL $CONFIG_STATUS || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi ifhp-3.5.20/autom4te.cache/traces.00100644000175100017510000014566710130541213017141 0ustar papowellpapowellm4trace:configure.in:7: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:7: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:7: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs. LIBOBJS']) m4trace:configure.in:7: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.in:7: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.in:7: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.in:7: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.in:7: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) m4trace:configure.in:7: -1- AC_SUBST([PATH_SEPARATOR]) m4trace:configure.in:7: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) m4trace:configure.in:7: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) m4trace:configure.in:7: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) m4trace:configure.in:7: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) m4trace:configure.in:7: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) m4trace:configure.in:7: -1- AC_SUBST([exec_prefix], [NONE]) m4trace:configure.in:7: -1- AC_SUBST([prefix], [NONE]) m4trace:configure.in:7: -1- AC_SUBST([program_transform_name], [s,x,x,]) m4trace:configure.in:7: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) m4trace:configure.in:7: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) m4trace:configure.in:7: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) m4trace:configure.in:7: -1- AC_SUBST([datadir], ['${prefix}/share']) m4trace:configure.in:7: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) m4trace:configure.in:7: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) m4trace:configure.in:7: -1- AC_SUBST([localstatedir], ['${prefix}/var']) m4trace:configure.in:7: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) m4trace:configure.in:7: -1- AC_SUBST([includedir], ['${prefix}/include']) m4trace:configure.in:7: -1- AC_SUBST([oldincludedir], ['/usr/include']) m4trace:configure.in:7: -1- AC_SUBST([infodir], ['${prefix}/info']) m4trace:configure.in:7: -1- AC_SUBST([mandir], ['${prefix}/man']) m4trace:configure.in:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) m4trace:configure.in:7: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ #undef PACKAGE_NAME]) m4trace:configure.in:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) m4trace:configure.in:7: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME]) m4trace:configure.in:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) m4trace:configure.in:7: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ #undef PACKAGE_VERSION]) m4trace:configure.in:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) m4trace:configure.in:7: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ #undef PACKAGE_STRING]) m4trace:configure.in:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) m4trace:configure.in:7: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT]) m4trace:configure.in:7: -1- AC_SUBST([build_alias]) m4trace:configure.in:7: -1- AC_SUBST([host_alias]) m4trace:configure.in:7: -1- AC_SUBST([target_alias]) m4trace:configure.in:7: -1- AC_SUBST([DEFS]) m4trace:configure.in:7: -1- AC_SUBST([ECHO_C]) m4trace:configure.in:7: -1- AC_SUBST([ECHO_N]) m4trace:configure.in:7: -1- AC_SUBST([ECHO_T]) m4trace:configure.in:7: -1- AC_SUBST([LIBS]) m4trace:configure.in:13: -1- AC_SUBST([build], [$ac_cv_build]) m4trace:configure.in:13: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) m4trace:configure.in:13: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) m4trace:configure.in:13: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) m4trace:configure.in:13: -1- AC_SUBST([host], [$ac_cv_host]) m4trace:configure.in:13: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) m4trace:configure.in:13: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) m4trace:configure.in:13: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) m4trace:configure.in:13: -1- AC_SUBST([target], [$ac_cv_target]) m4trace:configure.in:13: -1- AC_SUBST([target_cpu], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) m4trace:configure.in:13: -1- AC_SUBST([target_vendor], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) m4trace:configure.in:13: -1- AC_SUBST([target_os], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) m4trace:configure.in:14: -1- AC_CONFIG_HEADERS([config.h]) m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE], [/* package */ #undef PACKAGE]) m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) m4trace:configure.in:17: -1- AH_OUTPUT([VERSION], [/* version */ #undef VERSION]) m4trace:configure.in:18: -1- AC_SUBST([PACKAGE]) m4trace:configure.in:19: -1- AC_SUBST([VERSION]) m4trace:configure.in:22: -1- AH_OUTPUT([_ALL_SOURCE], [/* Define to 1 if on AIX 3. System headers sometimes define this. We just want to avoid a redefinition error message. */ @%:@ifndef _ALL_SOURCE @%:@ undef _ALL_SOURCE @%:@endif]) m4trace:configure.in:22: -1- AC_PROG_CC m4trace:configure.in:22: -1- AC_SUBST([CC]) m4trace:configure.in:22: -1- AC_SUBST([CFLAGS]) m4trace:configure.in:22: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:22: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:22: -1- AC_SUBST([CC]) m4trace:configure.in:22: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:22: -1- AC_SUBST([CC]) m4trace:configure.in:22: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:22: -1- AC_SUBST([CC]) m4trace:configure.in:22: -1- AC_SUBST([CC]) m4trace:configure.in:22: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:22: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) m4trace:configure.in:22: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) m4trace:configure.in:22: -1- AC_PROG_CPP m4trace:configure.in:22: -1- AC_SUBST([CPP]) m4trace:configure.in:22: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:22: -1- AC_SUBST([CPP]) m4trace:configure.in:22: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE]) m4trace:configure.in:23: -1- AC_CHECK_LIB([cposix], [strerror], [LIBS="$LIBS -lcposix"]) m4trace:configure.in:24: -1- AC_HEADER_STDC m4trace:configure.in:24: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.in:24: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) m4trace:configure.in:24: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default]) m4trace:configure.in:24: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H]) m4trace:configure.in:24: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H]) m4trace:configure.in:24: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) m4trace:configure.in:24: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) m4trace:configure.in:24: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H]) m4trace:configure.in:24: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H]) m4trace:configure.in:24: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H]) m4trace:configure.in:24: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H]) m4trace:configure.in:24: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) m4trace:configure.in:24: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE]) m4trace:configure.in:24: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for \`stat' and other things to work. */ #undef _POSIX_SOURCE]) m4trace:configure.in:24: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE]) m4trace:configure.in:24: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE]) m4trace:configure.in:24: -1- AC_DEFINE_TRACE_LITERAL([_MINIX]) m4trace:configure.in:24: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */ #undef _MINIX]) m4trace:configure.in:27: -1- AC_SUBST([INSTALL]) m4trace:configure.in:28: -1- AC_SUBST([INSTALL_MAN]) m4trace:configure.in:29: -1- AC_SUBST([SHELL]) m4trace:configure.in:30: -1- AC_SUBST([CPP]) m4trace:configure.in:31: -1- AC_SUBST([CFLAGS]) m4trace:configure.in:32: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:33: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:34: -1- AC_SUBST([LDCC]) m4trace:configure.in:37: -1- AC_PROG_AWK m4trace:configure.in:37: -1- AC_SUBST([AWK]) m4trace:configure.in:38: -1- AC_SUBST([AWK]) m4trace:configure.in:39: -1- AC_SUBST([PERL], [$ac_cv_path_PERL]) m4trace:configure.in:40: -1- AC_SUBST([PERL]) m4trace:configure.in:50: -1- AC_SUBST([LOCALEDIR]) m4trace:configure.in:53: -1- AM_PROG_LIBTOOL m4trace:configure.in:53: -1- AC_PROG_LIBTOOL m4trace:configure.in:53: -1- AC_PROG_LN_S m4trace:configure.in:53: -1- AC_SUBST([LN_S], [$as_ln_s]) m4trace:configure.in:53: -1- AC_SUBST([ECHO]) m4trace:configure.in:53: -1- AC_SUBST([RANLIB]) m4trace:configure.in:53: -1- AC_SUBST([ac_ct_RANLIB]) m4trace:configure.in:53: -1- AC_SUBST([STRIP]) m4trace:configure.in:53: -1- AC_SUBST([ac_ct_STRIP]) m4trace:configure.in:53: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) m4trace:configure.in:53: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) m4trace:configure.in:53: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) m4trace:configure.in:53: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) m4trace:configure.in:53: -1- AC_CHECK_HEADERS([dlfcn.h]) m4trace:configure.in:53: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H]) m4trace:configure.in:53: -1- AC_SUBST([LIBTOOL]) m4trace:configure.in:59: -1- AC_SUBST([FILEUTIL], [$ac_cv_path_FILEUTIL]) m4trace:configure.in:71: -1- AC_SUBST([FILEUTIL]) m4trace:configure.in:72: -1- AC_SUBST([GZIP], [$ac_cv_path_GZIP]) m4trace:configure.in:73: -1- AC_SUBST([GZIP]) m4trace:configure.in:74: -1- AC_SUBST([GS], [$ac_cv_path_GS]) m4trace:configure.in:75: -1- AC_SUBST([GS]) m4trace:configure.in:76: -1- AC_SUBST([A2PS], [$ac_cv_path_A2PS]) m4trace:configure.in:77: -1- AC_SUBST([A2PS]) m4trace:configure.in:78: -1- AC_SUBST([CAT], [$ac_cv_path_CAT]) m4trace:configure.in:79: -1- AC_SUBST([CAT]) m4trace:configure.in:88: -1- AC_SUBST([IFHP_CONF]) m4trace:configure.in:107: -1- AC_SUBST([SNMP]) m4trace:configure.in:127: -1- AC_SUBST([FOOMATIC_RIP], [$ac_cv_path_FOOMATIC_RIP]) m4trace:configure.in:129: -1- AC_SUBST([FOOMATIC_RIP]) m4trace:configure.in:144: -1- AC_SUBST([FOOMATIC]) m4trace:configure.in:161: -1- AC_SUBST([PAGE_SIZE]) m4trace:configure.in:163: -1- AC_SUBST([FILTER_DIR]) m4trace:configure.in:171: -1- AC_SUBST([FILTER_DIR]) m4trace:configure.in:180: -1- AC_SUBST([FONT_DIR]) m4trace:configure.in:198: -1- AC_SUBST([STRIP_OPTION]) m4trace:configure.in:217: -1- AC_SUBST([GSCHECK]) m4trace:configure.in:258: -1- AC_SUBST([DEVFD3]) m4trace:configure.in:263: -1- AC_PROG_CC m4trace:configure.in:263: -1- AC_SUBST([CC]) m4trace:configure.in:263: -1- AC_SUBST([CFLAGS]) m4trace:configure.in:263: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:263: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:263: -1- AC_SUBST([CC]) m4trace:configure.in:263: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:263: -1- AC_SUBST([CC]) m4trace:configure.in:263: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:263: -1- AC_SUBST([CC]) m4trace:configure.in:263: -1- AC_SUBST([CC]) m4trace:configure.in:263: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:264: -1- AC_PROG_CPP m4trace:configure.in:264: -1- AC_SUBST([CPP]) m4trace:configure.in:264: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:264: -1- AC_SUBST([CPP]) m4trace:configure.in:299: -1- AC_DEFINE_TRACE_LITERAL([ARCHITECTURE]) m4trace:configure.in:299: -1- AH_OUTPUT([ARCHITECTURE], [/* target CPU */ #undef ARCHITECTURE]) m4trace:configure.in:300: -1- AC_DEFINE_TRACE_LITERAL([OSNAME]) m4trace:configure.in:300: -1- AH_OUTPUT([OSNAME], [/* target os name */ #undef OSNAME]) m4trace:configure.in:301: -1- AC_DEFINE_TRACE_LITERAL([OSVERSION]) m4trace:configure.in:301: -1- AH_OUTPUT([OSVERSION], [/* target os version */ #undef OSVERSION]) m4trace:configure.in:305: -1- AC_SUBST([ARCHITECTURE]) m4trace:configure.in:306: -1- AC_SUBST([OSNAME]) m4trace:configure.in:307: -1- AC_SUBST([OSVERSION]) m4trace:configure.in:314: -1- AC_C_CONST m4trace:configure.in:314: -1- AC_DEFINE_TRACE_LITERAL([const]) m4trace:configure.in:314: -1- AH_OUTPUT([const], [/* Define to empty if \`const' does not conform to ANSI C. */ #undef const]) m4trace:configure.in:315: -1- AC_C_INLINE m4trace:configure.in:315: -1- AC_DEFINE_TRACE_LITERAL([inline]) m4trace:configure.in:315: -1- AH_OUTPUT([inline], [/* Define as \`__inline' if that's what the C compiler calls it, or to nothing if it is not supported. */ #undef inline]) m4trace:configure.in:315: -1- AC_DEFINE_TRACE_LITERAL([inline]) m4trace:configure.in:317: -1- AC_HEADER_STDC m4trace:configure.in:317: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.in:317: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) m4trace:configure.in:318: -1- AC_HEADER_DIRENT m4trace:configure.in:318: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. */ #undef HAVE_DIRENT_H]) m4trace:configure.in:318: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. */ #undef HAVE_SYS_NDIR_H]) m4trace:configure.in:318: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. */ #undef HAVE_SYS_DIR_H]) m4trace:configure.in:318: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file, and it defines \`DIR'. */ #undef HAVE_NDIR_H]) m4trace:configure.in:319: -1- AC_HEADER_SYS_WAIT m4trace:configure.in:319: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H]) m4trace:configure.in:319: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have that is POSIX.1 compatible. */ #undef HAVE_SYS_WAIT_H]) m4trace:configure.in:320: -1- AC_HEADER_TIME m4trace:configure.in:320: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) m4trace:configure.in:320: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME]) m4trace:configure.in:323: -1- AC_TYPE_SIGNAL m4trace:configure.in:323: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) m4trace:configure.in:323: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (\`int' or \`void'). */ #undef RETSIGTYPE]) m4trace:configure.in:324: -1- AC_TYPE_UID_T m4trace:configure.in:324: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) m4trace:configure.in:324: -1- AH_OUTPUT([uid_t], [/* Define to \`int' if doesn't define. */ #undef uid_t]) m4trace:configure.in:324: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) m4trace:configure.in:324: -1- AH_OUTPUT([gid_t], [/* Define to \`int' if doesn't define. */ #undef gid_t]) m4trace:configure.in:325: -1- AC_TYPE_SIZE_T m4trace:configure.in:325: -1- AC_DEFINE_TRACE_LITERAL([size_t]) m4trace:configure.in:325: -1- AH_OUTPUT([size_t], [/* Define to \`unsigned' if does not define. */ #undef size_t]) m4trace:configure.in:326: -1- AC_TYPE_MODE_T m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([mode_t]) m4trace:configure.in:326: -1- AH_OUTPUT([mode_t], [/* Define to \`int' if does not define. */ #undef mode_t]) m4trace:configure.in:327: -1- AC_TYPE_OFF_T m4trace:configure.in:327: -1- AC_DEFINE_TRACE_LITERAL([off_t]) m4trace:configure.in:327: -1- AH_OUTPUT([off_t], [/* Define to \`long' if does not define. */ #undef off_t]) m4trace:configure.in:328: -1- AC_TYPE_PID_T m4trace:configure.in:328: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) m4trace:configure.in:328: -1- AH_OUTPUT([pid_t], [/* Define to \`int' if does not define. */ #undef pid_t]) m4trace:configure.in:340: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG]) m4trace:configure.in:340: -1- AH_OUTPUT([HAVE_LONG_LONG], [/* have long long */ #undef HAVE_LONG_LONG]) m4trace:configure.in:353: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_DOUBLE]) m4trace:configure.in:353: -1- AH_OUTPUT([HAVE_LONG_DOUBLE], [/* have long double */ #undef HAVE_LONG_DOUBLE]) m4trace:configure.in:366: -1- AC_DEFINE_TRACE_LITERAL([HAVE_QUAD_T]) m4trace:configure.in:366: -1- AH_OUTPUT([HAVE_QUAD_T], [/* have quad_t */ #undef HAVE_QUAD_T]) m4trace:configure.in:380: -1- AC_CHECK_LIB([util], [setproctitle], [LIBS="-lutil $LIBS"]) m4trace:configure.in:384: -1- AC_CHECK_LIB([util], [setproctitle], [LIBS="-lutil $LIBS"]) m4trace:configure.in:391: -1- AC_DEFINE_TRACE_LITERAL([IRIX]) m4trace:configure.in:391: -1- AH_OUTPUT([IRIX], [/* IRIX 6 */ #undef IRIX]) m4trace:configure.in:395: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BROKEN_TIOCEXCL]) m4trace:configure.in:395: -1- AH_OUTPUT([HAVE_BROKEN_TIOCEXCL], [/* broken tiocexcl */ #undef HAVE_BROKEN_TIOCEXCL]) m4trace:configure.in:396: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) m4trace:configure.in:396: -1- AH_OUTPUT([SVR4], [/* have SVR4 */ #undef SVR4]) m4trace:configure.in:397: -1- AC_DEFINE_TRACE_LITERAL([IRIX]) m4trace:configure.in:397: -1- AH_OUTPUT([IRIX], [/* IRIX 5 */ #undef IRIX]) m4trace:configure.in:401: -1- AC_DEFINE_TRACE_LITERAL([IRIX]) m4trace:configure.in:401: -1- AH_OUTPUT([IRIX], [/* IRIX */ #undef IRIX]) m4trace:configure.in:404: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) m4trace:configure.in:404: -1- AH_OUTPUT([SVR4], [/* have SVR4 */ #undef SVR4]) m4trace:configure.in:405: -1- AC_DEFINE_TRACE_LITERAL([SOLARIS]) m4trace:configure.in:405: -1- AH_OUTPUT([SOLARIS], [/* solaris */ #undef SOLARIS]) m4trace:configure.in:409: -1- AC_DEFINE_TRACE_LITERAL([_HPUX_SOURCE]) m4trace:configure.in:409: -1- AH_OUTPUT([_HPUX_SOURCE], [/* HPUX Source */ #undef _HPUX_SOURCE]) m4trace:configure.in:412: -1- AC_DEFINE_TRACE_LITERAL([HPUX]) m4trace:configure.in:412: -1- AH_OUTPUT([HPUX], [/* HPUX version */ #undef HPUX]) m4trace:configure.in:415: -1- AC_DEFINE_TRACE_LITERAL([SUNOS]) m4trace:configure.in:415: -1- AH_OUTPUT([SUNOS], [/* SUNOS version */ #undef SUNOS]) m4trace:configure.in:418: -1- AC_DEFINE_TRACE_LITERAL([DECALPHA]) m4trace:configure.in:418: -1- AH_OUTPUT([DECALPHA], [/* DEC ALPHA version */ #undef DECALPHA]) m4trace:configure.in:434: -1- AC_CHECK_HEADERS([a_out.h aouthdr.h ar.h arpa/inet.h arpa/nameser.h assert.h]) m4trace:configure.in:434: -1- AH_OUTPUT([HAVE_A_OUT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_A_OUT_H]) m4trace:configure.in:434: -1- AH_OUTPUT([HAVE_AOUTHDR_H], [/* Define to 1 if you have the header file. */ #undef HAVE_AOUTHDR_H]) m4trace:configure.in:434: -1- AH_OUTPUT([HAVE_AR_H], [/* Define to 1 if you have the header file. */ #undef HAVE_AR_H]) m4trace:configure.in:434: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ARPA_INET_H]) m4trace:configure.in:434: -1- AH_OUTPUT([HAVE_ARPA_NAMESER_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ARPA_NAMESER_H]) m4trace:configure.in:434: -1- AH_OUTPUT([HAVE_ASSERT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ASSERT_H]) m4trace:configure.in:435: -1- AC_CHECK_HEADERS([com_err.h compat.h ctype.h ctypes.h dirent.h errno.h]) m4trace:configure.in:435: -1- AH_OUTPUT([HAVE_COM_ERR_H], [/* Define to 1 if you have the header file. */ #undef HAVE_COM_ERR_H]) m4trace:configure.in:435: -1- AH_OUTPUT([HAVE_COMPAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_COMPAT_H]) m4trace:configure.in:435: -1- AH_OUTPUT([HAVE_CTYPE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_CTYPE_H]) m4trace:configure.in:435: -1- AH_OUTPUT([HAVE_CTYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_CTYPES_H]) m4trace:configure.in:435: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_DIRENT_H]) m4trace:configure.in:435: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H]) m4trace:configure.in:436: -1- AC_CHECK_HEADERS([exechdr.h fcntl.h filehdr.h grp.h limits.h locale.h]) m4trace:configure.in:436: -1- AH_OUTPUT([HAVE_EXECHDR_H], [/* Define to 1 if you have the header file. */ #undef HAVE_EXECHDR_H]) m4trace:configure.in:436: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H]) m4trace:configure.in:436: -1- AH_OUTPUT([HAVE_FILEHDR_H], [/* Define to 1 if you have the header file. */ #undef HAVE_FILEHDR_H]) m4trace:configure.in:436: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the header file. */ #undef HAVE_GRP_H]) m4trace:configure.in:436: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H]) m4trace:configure.in:436: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H]) m4trace:configure.in:437: -1- AC_CHECK_HEADERS([machine/vmparam.h malloc.h memory.h ndir.h netdb.h netinet/in.h]) m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_MACHINE_VMPARAM_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MACHINE_VMPARAM_H]) m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H]) m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H]) m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file. */ #undef HAVE_NDIR_H]) m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_NETDB_H]) m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H]) m4trace:configure.in:438: -1- AC_CHECK_HEADERS([nlist.h pwd.h reloc.h resolv.h select.h setjmp.h]) m4trace:configure.in:438: -1- AH_OUTPUT([HAVE_NLIST_H], [/* Define to 1 if you have the header file. */ #undef HAVE_NLIST_H]) m4trace:configure.in:438: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_PWD_H]) m4trace:configure.in:438: -1- AH_OUTPUT([HAVE_RELOC_H], [/* Define to 1 if you have the header file. */ #undef HAVE_RELOC_H]) m4trace:configure.in:438: -1- AH_OUTPUT([HAVE_RESOLV_H], [/* Define to 1 if you have the header file. */ #undef HAVE_RESOLV_H]) m4trace:configure.in:438: -1- AH_OUTPUT([HAVE_SELECT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SELECT_H]) m4trace:configure.in:438: -1- AH_OUTPUT([HAVE_SETJMP_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SETJMP_H]) m4trace:configure.in:439: -1- AC_CHECK_HEADERS([sgs.h sgtty.h signal.h stab.h stdarg.h stdio.h]) m4trace:configure.in:439: -1- AH_OUTPUT([HAVE_SGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SGS_H]) m4trace:configure.in:439: -1- AH_OUTPUT([HAVE_SGTTY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SGTTY_H]) m4trace:configure.in:439: -1- AH_OUTPUT([HAVE_SIGNAL_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SIGNAL_H]) m4trace:configure.in:439: -1- AH_OUTPUT([HAVE_STAB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STAB_H]) m4trace:configure.in:439: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDARG_H]) m4trace:configure.in:439: -1- AH_OUTPUT([HAVE_STDIO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H]) m4trace:configure.in:440: -1- AC_CHECK_HEADERS([stdlib.h string.h strings.h sys/dir.h sys/exec.h sys/exechdr.h]) m4trace:configure.in:440: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) m4trace:configure.in:440: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) m4trace:configure.in:440: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H]) m4trace:configure.in:440: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_DIR_H]) m4trace:configure.in:440: -1- AH_OUTPUT([HAVE_SYS_EXEC_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_EXEC_H]) m4trace:configure.in:440: -1- AH_OUTPUT([HAVE_SYS_EXECHDR_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_EXECHDR_H]) m4trace:configure.in:441: -1- AC_CHECK_HEADERS([sys/fcntl.h sys/file.h sys/ioctl.h sys/loader.h sys/mount.h sys/ndir.h]) m4trace:configure.in:441: -1- AH_OUTPUT([HAVE_SYS_FCNTL_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_FCNTL_H]) m4trace:configure.in:441: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILE_H]) m4trace:configure.in:441: -1- AH_OUTPUT([HAVE_SYS_IOCTL_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H]) m4trace:configure.in:441: -1- AH_OUTPUT([HAVE_SYS_LOADER_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_LOADER_H]) m4trace:configure.in:441: -1- AH_OUTPUT([HAVE_SYS_MOUNT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_MOUNT_H]) m4trace:configure.in:441: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_NDIR_H]) m4trace:configure.in:442: -1- AC_CHECK_HEADERS([sys/param.h sys/pstat.h sys/resource.h sys/select.h sys/signal.h sys/socket.h]) m4trace:configure.in:442: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H]) m4trace:configure.in:442: -1- AH_OUTPUT([HAVE_SYS_PSTAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_PSTAT_H]) m4trace:configure.in:442: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H]) m4trace:configure.in:442: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H]) m4trace:configure.in:442: -1- AH_OUTPUT([HAVE_SYS_SIGNAL_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_SIGNAL_H]) m4trace:configure.in:442: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H]) m4trace:configure.in:443: -1- AC_CHECK_HEADERS([sys/stat.h sys/statfs.h sys/statvfs.h sys/syslog.h sys/systeminfo.h sys/termio.h]) m4trace:configure.in:443: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H]) m4trace:configure.in:443: -1- AH_OUTPUT([HAVE_SYS_STATFS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STATFS_H]) m4trace:configure.in:443: -1- AH_OUTPUT([HAVE_SYS_STATVFS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STATVFS_H]) m4trace:configure.in:443: -1- AH_OUTPUT([HAVE_SYS_SYSLOG_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_SYSLOG_H]) m4trace:configure.in:443: -1- AH_OUTPUT([HAVE_SYS_SYSTEMINFO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_SYSTEMINFO_H]) m4trace:configure.in:443: -1- AH_OUTPUT([HAVE_SYS_TERMIO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TERMIO_H]) m4trace:configure.in:444: -1- AC_CHECK_HEADERS([sys/termiox.h sys/time.h sys/ttold.h sys/ttycom.h sys/types.h sys/utsname.h]) m4trace:configure.in:444: -1- AH_OUTPUT([HAVE_SYS_TERMIOX_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TERMIOX_H]) m4trace:configure.in:444: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H]) m4trace:configure.in:444: -1- AH_OUTPUT([HAVE_SYS_TTOLD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TTOLD_H]) m4trace:configure.in:444: -1- AH_OUTPUT([HAVE_SYS_TTYCOM_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TTYCOM_H]) m4trace:configure.in:444: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H]) m4trace:configure.in:444: -1- AH_OUTPUT([HAVE_SYS_UTSNAME_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_UTSNAME_H]) m4trace:configure.in:445: -1- AC_CHECK_HEADERS([sys/vfs.h sys/wait.h syslog.h term.h termcap.h termio.h]) m4trace:configure.in:445: -1- AH_OUTPUT([HAVE_SYS_VFS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_VFS_H]) m4trace:configure.in:445: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_WAIT_H]) m4trace:configure.in:445: -1- AH_OUTPUT([HAVE_SYSLOG_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYSLOG_H]) m4trace:configure.in:445: -1- AH_OUTPUT([HAVE_TERM_H], [/* Define to 1 if you have the header file. */ #undef HAVE_TERM_H]) m4trace:configure.in:445: -1- AH_OUTPUT([HAVE_TERMCAP_H], [/* Define to 1 if you have the header file. */ #undef HAVE_TERMCAP_H]) m4trace:configure.in:445: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_TERMIO_H]) m4trace:configure.in:446: -1- AC_CHECK_HEADERS([termios.h time.h unistd.h utsname.h varargs.h vmparam.h]) m4trace:configure.in:446: -1- AH_OUTPUT([HAVE_TERMIOS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H]) m4trace:configure.in:446: -1- AH_OUTPUT([HAVE_TIME_H], [/* Define to 1 if you have the header file. */ #undef HAVE_TIME_H]) m4trace:configure.in:446: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) m4trace:configure.in:446: -1- AH_OUTPUT([HAVE_UTSNAME_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UTSNAME_H]) m4trace:configure.in:446: -1- AH_OUTPUT([HAVE_VARARGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_VARARGS_H]) m4trace:configure.in:446: -1- AH_OUTPUT([HAVE_VMPARAM_H], [/* Define to 1 if you have the header file. */ #undef HAVE_VMPARAM_H]) m4trace:configure.in:456: -1- AC_CHECK_LIB([posix], [getpwent], [LIBS="$LIBS -lposix"]) m4trace:configure.in:459: -1- AC_CHECK_LIB([socket_s], [socket], [LIBS="$LIBS -lsocket_s"; have_socket=1], [], [-lnsl]) m4trace:configure.in:461: -1- AC_CHECK_LIB([socket], [socket], [LIBS="$LIBS -lsocket"], [], [-lnsl]) m4trace:configure.in:473: -1- AC_CHECK_LIB([nsl_s], [gethostbyaddr], [LIBS="$LIBS -lnsl_s"; have_gethost=1]) m4trace:configure.in:476: -1- AC_CHECK_LIB([nsl], [gethostbyaddr], [LIBS="$LIBS -lnsl"; have_gethost=1]) m4trace:configure.in:480: -1- AC_CHECK_LIB([net_s], [gethostbyaddr], [LIBS="$LIBS -lnet_s"; have_gethost=1]) m4trace:configure.in:483: -1- AC_CHECK_LIB([net], [gethostbyaddr], [LIBS="$LIBS -lnet"; have_gethost=1]) m4trace:configure.in:490: -1- AC_CHECK_LIB([resolv], [inet_ntop], [LIBS="$LIBS -lresolv";name2=yes]) m4trace:configure.in:497: -1- AC_CHECK_FUNCS([_res cfsetispeed fcntl flock gethostbyname2 getdtablesize]) m4trace:configure.in:497: -1- AH_OUTPUT([HAVE__RES], [/* Define to 1 if you have the \`_res' function. */ #undef HAVE__RES]) m4trace:configure.in:497: -1- AH_OUTPUT([HAVE_CFSETISPEED], [/* Define to 1 if you have the \`cfsetispeed' function. */ #undef HAVE_CFSETISPEED]) m4trace:configure.in:497: -1- AH_OUTPUT([HAVE_FCNTL], [/* Define to 1 if you have the \`fcntl' function. */ #undef HAVE_FCNTL]) m4trace:configure.in:497: -1- AH_OUTPUT([HAVE_FLOCK], [/* Define to 1 if you have the \`flock' function. */ #undef HAVE_FLOCK]) m4trace:configure.in:497: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME2], [/* Define to 1 if you have the \`gethostbyname2' function. */ #undef HAVE_GETHOSTBYNAME2]) m4trace:configure.in:497: -1- AH_OUTPUT([HAVE_GETDTABLESIZE], [/* Define to 1 if you have the \`getdtablesize' function. */ #undef HAVE_GETDTABLESIZE]) m4trace:configure.in:498: -1- AC_CHECK_FUNCS([gethostname getrlimit inet_aton inet_ntop inet_pton]) m4trace:configure.in:498: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the \`gethostname' function. */ #undef HAVE_GETHOSTNAME]) m4trace:configure.in:498: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the \`getrlimit' function. */ #undef HAVE_GETRLIMIT]) m4trace:configure.in:498: -1- AH_OUTPUT([HAVE_INET_ATON], [/* Define to 1 if you have the \`inet_aton' function. */ #undef HAVE_INET_ATON]) m4trace:configure.in:498: -1- AH_OUTPUT([HAVE_INET_NTOP], [/* Define to 1 if you have the \`inet_ntop' function. */ #undef HAVE_INET_NTOP]) m4trace:configure.in:498: -1- AH_OUTPUT([HAVE_INET_PTON], [/* Define to 1 if you have the \`inet_pton' function. */ #undef HAVE_INET_PTON]) m4trace:configure.in:499: -1- AC_CHECK_FUNCS([innetgr killpg lockf mkstemp]) m4trace:configure.in:499: -1- AH_OUTPUT([HAVE_INNETGR], [/* Define to 1 if you have the \`innetgr' function. */ #undef HAVE_INNETGR]) m4trace:configure.in:499: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the \`killpg' function. */ #undef HAVE_KILLPG]) m4trace:configure.in:499: -1- AH_OUTPUT([HAVE_LOCKF], [/* Define to 1 if you have the \`lockf' function. */ #undef HAVE_LOCKF]) m4trace:configure.in:499: -1- AH_OUTPUT([HAVE_MKSTEMP], [/* Define to 1 if you have the \`mkstemp' function. */ #undef HAVE_MKSTEMP]) m4trace:configure.in:500: -1- AC_CHECK_FUNCS([mktemp openlog putenv random rand setenv seteuid setruid setlinebuf setlocale setpgid setproctitle]) m4trace:configure.in:500: -1- AH_OUTPUT([HAVE_MKTEMP], [/* Define to 1 if you have the \`mktemp' function. */ #undef HAVE_MKTEMP]) m4trace:configure.in:500: -1- AH_OUTPUT([HAVE_OPENLOG], [/* Define to 1 if you have the \`openlog' function. */ #undef HAVE_OPENLOG]) m4trace:configure.in:500: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the \`putenv' function. */ #undef HAVE_PUTENV]) m4trace:configure.in:500: -1- AH_OUTPUT([HAVE_RANDOM], [/* Define to 1 if you have the \`random' function. */ #undef HAVE_RANDOM]) m4trace:configure.in:500: -1- AH_OUTPUT([HAVE_RAND], [/* Define to 1 if you have the \`rand' function. */ #undef HAVE_RAND]) m4trace:configure.in:500: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the \`setenv' function. */ #undef HAVE_SETENV]) m4trace:configure.in:500: -1- AH_OUTPUT([HAVE_SETEUID], [/* Define to 1 if you have the \`seteuid' function. */ #undef HAVE_SETEUID]) m4trace:configure.in:500: -1- AH_OUTPUT([HAVE_SETRUID], [/* Define to 1 if you have the \`setruid' function. */ #undef HAVE_SETRUID]) m4trace:configure.in:500: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the \`setlinebuf' function. */ #undef HAVE_SETLINEBUF]) m4trace:configure.in:500: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the \`setlocale' function. */ #undef HAVE_SETLOCALE]) m4trace:configure.in:500: -1- AH_OUTPUT([HAVE_SETPGID], [/* Define to 1 if you have the \`setpgid' function. */ #undef HAVE_SETPGID]) m4trace:configure.in:500: -1- AH_OUTPUT([HAVE_SETPROCTITLE], [/* Define to 1 if you have the \`setproctitle' function. */ #undef HAVE_SETPROCTITLE]) m4trace:configure.in:501: -1- AC_CHECK_FUNCS([setresuid setreuid setsid setvbuf sigaction]) m4trace:configure.in:501: -1- AH_OUTPUT([HAVE_SETRESUID], [/* Define to 1 if you have the \`setresuid' function. */ #undef HAVE_SETRESUID]) m4trace:configure.in:501: -1- AH_OUTPUT([HAVE_SETREUID], [/* Define to 1 if you have the \`setreuid' function. */ #undef HAVE_SETREUID]) m4trace:configure.in:501: -1- AH_OUTPUT([HAVE_SETSID], [/* Define to 1 if you have the \`setsid' function. */ #undef HAVE_SETSID]) m4trace:configure.in:501: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the \`setvbuf' function. */ #undef HAVE_SETVBUF]) m4trace:configure.in:501: -1- AH_OUTPUT([HAVE_SIGACTION], [/* Define to 1 if you have the \`sigaction' function. */ #undef HAVE_SIGACTION]) m4trace:configure.in:502: -1- AC_CHECK_FUNCS([sigprocmask siglongjmp socketpair strcasecmp]) m4trace:configure.in:502: -1- AH_OUTPUT([HAVE_SIGPROCMASK], [/* Define to 1 if you have the \`sigprocmask' function. */ #undef HAVE_SIGPROCMASK]) m4trace:configure.in:502: -1- AH_OUTPUT([HAVE_SIGLONGJMP], [/* Define to 1 if you have the \`siglongjmp' function. */ #undef HAVE_SIGLONGJMP]) m4trace:configure.in:502: -1- AH_OUTPUT([HAVE_SOCKETPAIR], [/* Define to 1 if you have the \`socketpair' function. */ #undef HAVE_SOCKETPAIR]) m4trace:configure.in:502: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the \`strcasecmp' function. */ #undef HAVE_STRCASECMP]) m4trace:configure.in:503: -1- AC_CHECK_FUNCS([strchr strdup strerror strncasecmp sysconf sysinfo]) m4trace:configure.in:503: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the \`strchr' function. */ #undef HAVE_STRCHR]) m4trace:configure.in:503: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the \`strdup' function. */ #undef HAVE_STRDUP]) m4trace:configure.in:503: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the \`strerror' function. */ #undef HAVE_STRERROR]) m4trace:configure.in:503: -1- AH_OUTPUT([HAVE_STRNCASECMP], [/* Define to 1 if you have the \`strncasecmp' function. */ #undef HAVE_STRNCASECMP]) m4trace:configure.in:503: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the \`sysconf' function. */ #undef HAVE_SYSCONF]) m4trace:configure.in:503: -1- AH_OUTPUT([HAVE_SYSINFO], [/* Define to 1 if you have the \`sysinfo' function. */ #undef HAVE_SYSINFO]) m4trace:configure.in:504: -1- AC_CHECK_FUNCS([tcdrain tcflush tcsetattr uname unsetenv wait3 waitpid]) m4trace:configure.in:504: -1- AH_OUTPUT([HAVE_TCDRAIN], [/* Define to 1 if you have the \`tcdrain' function. */ #undef HAVE_TCDRAIN]) m4trace:configure.in:504: -1- AH_OUTPUT([HAVE_TCFLUSH], [/* Define to 1 if you have the \`tcflush' function. */ #undef HAVE_TCFLUSH]) m4trace:configure.in:504: -1- AH_OUTPUT([HAVE_TCSETATTR], [/* Define to 1 if you have the \`tcsetattr' function. */ #undef HAVE_TCSETATTR]) m4trace:configure.in:504: -1- AH_OUTPUT([HAVE_UNAME], [/* Define to 1 if you have the \`uname' function. */ #undef HAVE_UNAME]) m4trace:configure.in:504: -1- AH_OUTPUT([HAVE_UNSETENV], [/* Define to 1 if you have the \`unsetenv' function. */ #undef HAVE_UNSETENV]) m4trace:configure.in:504: -1- AH_OUTPUT([HAVE_WAIT3], [/* Define to 1 if you have the \`wait3' function. */ #undef HAVE_WAIT3]) m4trace:configure.in:504: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the \`waitpid' function. */ #undef HAVE_WAITPID]) m4trace:configure.in:510: -1- AC_FUNC_FORK([]) m4trace:configure.in:510: -1- AC_CHECK_HEADERS([unistd.h vfork.h]) m4trace:configure.in:510: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) m4trace:configure.in:510: -1- AH_OUTPUT([HAVE_VFORK_H], [/* Define to 1 if you have the header file. */ #undef HAVE_VFORK_H]) m4trace:configure.in:510: -1- AC_CHECK_FUNCS([fork vfork]) m4trace:configure.in:510: -1- AH_OUTPUT([HAVE_FORK], [/* Define to 1 if you have the \`fork' function. */ #undef HAVE_FORK]) m4trace:configure.in:510: -1- AH_OUTPUT([HAVE_VFORK], [/* Define to 1 if you have the \`vfork' function. */ #undef HAVE_VFORK]) m4trace:configure.in:510: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_VFORK]) m4trace:configure.in:510: -1- AH_OUTPUT([HAVE_WORKING_VFORK], [/* Define to 1 if \`vfork' works. */ #undef HAVE_WORKING_VFORK]) m4trace:configure.in:510: -1- AC_DEFINE_TRACE_LITERAL([vfork]) m4trace:configure.in:510: -1- AH_OUTPUT([vfork], [/* Define as \`fork' if \`vfork' does not work. */ #undef vfork]) m4trace:configure.in:510: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_FORK]) m4trace:configure.in:510: -1- AH_OUTPUT([HAVE_WORKING_FORK], [/* Define to 1 if \`fork' works. */ #undef HAVE_WORKING_FORK]) m4trace:configure.in:511: -1- AC_FUNC_VPRINTF m4trace:configure.in:511: -1- AC_CHECK_FUNCS([vprintf], [ AC_CHECK_FUNC(_doprnt, [AC_DEFINE(HAVE_DOPRNT, 1, [Define to 1 if you don't have `vprintf' but do have `_doprnt.'])])]) m4trace:configure.in:511: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the \`vprintf' function. */ #undef HAVE_VPRINTF]) m4trace:configure.in:511: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT]) m4trace:configure.in:511: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don't have \`vprintf' but do have \`_doprnt.' */ #undef HAVE_DOPRNT]) m4trace:configure.in:551: -1- AC_DEFINE_TRACE_LITERAL([USE_SGTTYB]) m4trace:configure.in:551: -1- AH_OUTPUT([USE_SGTTYB], [/* use sgttyb */ #undef USE_SGTTYB]) m4trace:configure.in:552: -1- AC_DEFINE_TRACE_LITERAL([USE_STTY]) m4trace:configure.in:552: -1- AH_OUTPUT([USE_STTY], [/* define use_stty */ #undef USE_STTY]) m4trace:configure.in:555: -1- AC_DEFINE_TRACE_LITERAL([USE_TERMIO]) m4trace:configure.in:555: -1- AH_OUTPUT([USE_TERMIO], [/* use termio */ #undef USE_TERMIO]) m4trace:configure.in:556: -1- AC_DEFINE_TRACE_LITERAL([USE_STTY]) m4trace:configure.in:556: -1- AH_OUTPUT([USE_STTY], [/* define use_stty */ #undef USE_STTY]) m4trace:configure.in:559: -1- AC_DEFINE_TRACE_LITERAL([USE_TERMIOS]) m4trace:configure.in:559: -1- AH_OUTPUT([USE_TERMIOS], [/* use termios */ #undef USE_TERMIOS]) m4trace:configure.in:560: -1- AC_DEFINE_TRACE_LITERAL([USE_STTY]) m4trace:configure.in:560: -1- AH_OUTPUT([USE_STTY], [/* define use_stty */ #undef USE_STTY]) m4trace:configure.in:562: -1- AC_DEFINE_TRACE_LITERAL([USE_TERMIOX]) m4trace:configure.in:562: -1- AH_OUTPUT([USE_TERMIOX], [/* use termiox */ #undef USE_TERMIOX]) m4trace:configure.in:580: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_EXEC]) m4trace:configure.in:580: -1- AH_OUTPUT([HAVE_STRUCT_EXEC], [/* have struct_exec */ #undef HAVE_STRUCT_EXEC]) m4trace:configure.in:604: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSEEK_PROTO]) m4trace:configure.in:604: -1- AH_OUTPUT([HAVE_LSEEK_PROTO], [/* have lseek proto */ #undef HAVE_LSEEK_PROTO]) m4trace:configure.in:713: -1- AC_DEFINE_TRACE_LITERAL([USE_STATFS_TYPE]) m4trace:configure.in:713: -1- AH_OUTPUT([USE_STATFS_TYPE], [/* statfs type svr3 */ #undef USE_STATFS_TYPE]) m4trace:configure.in:716: -1- AC_DEFINE_TRACE_LITERAL([USE_STATFS_TYPE]) m4trace:configure.in:716: -1- AH_OUTPUT([USE_STATFS_TYPE], [/* statfs type ultrix */ #undef USE_STATFS_TYPE]) m4trace:configure.in:719: -1- AC_DEFINE_TRACE_LITERAL([USE_STATFS_TYPE]) m4trace:configure.in:719: -1- AH_OUTPUT([USE_STATFS_TYPE], [/* statfs type statfs */ #undef USE_STATFS_TYPE]) m4trace:configure.in:722: -1- AC_DEFINE_TRACE_LITERAL([USE_STATFS_TYPE]) m4trace:configure.in:722: -1- AH_OUTPUT([USE_STATFS_TYPE], [/* statfs type sysv */ #undef USE_STATFS_TYPE]) m4trace:configure.in:735: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ERRNO]) m4trace:configure.in:735: -1- AH_OUTPUT([HAVE_ERRNO], [/* have errno */ #undef HAVE_ERRNO]) m4trace:configure.in:753: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_ERRNO]) m4trace:configure.in:753: -1- AH_OUTPUT([HAVE_DECL_ERRNO], [/* have errno decl */ #undef HAVE_DECL_ERRNO]) m4trace:configure.in:764: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_NERR]) m4trace:configure.in:764: -1- AH_OUTPUT([HAVE_SYS_NERR], [/* have sys_nerr */ #undef HAVE_SYS_NERR]) m4trace:configure.in:779: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_NERR]) m4trace:configure.in:779: -1- AH_OUTPUT([HAVE_DECL_SYS_NERR], [/* have sys_nerr decl */ #undef HAVE_DECL_SYS_NERR]) m4trace:configure.in:790: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_ERRLIST]) m4trace:configure.in:790: -1- AH_OUTPUT([HAVE_SYS_ERRLIST], [/* have sys_errlist */ #undef HAVE_SYS_ERRLIST]) m4trace:configure.in:805: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_ERRLIST]) m4trace:configure.in:805: -1- AH_OUTPUT([HAVE_DECL_SYS_ERRLIST], [/* have sys_errlist decl */ #undef HAVE_DECL_SYS_ERRLIST]) m4trace:configure.in:827: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETPROCTITLE_DEF]) m4trace:configure.in:827: -1- AH_OUTPUT([HAVE_SETPROCTITLE_DEF], [/* have setproctitle */ #undef HAVE_SETPROCTITLE_DEF]) m4trace:configure.in:850: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST_DEF]) m4trace:configure.in:850: -1- AH_OUTPUT([HAVE_SYS_SIGLIST_DEF], [/* have sys_siglist def */ #undef HAVE_SYS_SIGLIST_DEF]) m4trace:configure.in:870: -1- AC_DEFINE_TRACE_LITERAL([HAVE__SYS_SIGLIST_DEF]) m4trace:configure.in:870: -1- AH_OUTPUT([HAVE__SYS_SIGLIST_DEF], [/* have _sys_siglist def */ #undef HAVE__SYS_SIGLIST_DEF]) m4trace:configure.in:882: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SIGLIST]) m4trace:configure.in:882: -1- AH_OUTPUT([HAVE_SYS_SIGLIST], [/* have sys_siglist */ #undef HAVE_SYS_SIGLIST]) m4trace:configure.in:893: -1- AC_DEFINE_TRACE_LITERAL([HAVE__SYS_SIGLIST]) m4trace:configure.in:893: -1- AH_OUTPUT([HAVE__SYS_SIGLIST], [/* have _sys_siglist */ #undef HAVE__SYS_SIGLIST]) m4trace:configure.in:918: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPGRP_0]) m4trace:configure.in:918: -1- AH_OUTPUT([HAVE_GETPGRP_0], [/* set getprgrp 0 */ #undef HAVE_GETPGRP_0]) m4trace:configure.in:920: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPGRP_0]) m4trace:configure.in:920: -1- AH_OUTPUT([HAVE_GETPGRP_0], [/* set getpgrgp 1 */ #undef HAVE_GETPGRP_0]) m4trace:configure.in:942: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETPGRP_0]) m4trace:configure.in:942: -1- AH_OUTPUT([HAVE_SETPGRP_0], [/* set setpgrp 0 */ #undef HAVE_SETPGRP_0]) m4trace:configure.in:968: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNION_WAIT]) m4trace:configure.in:968: -1- AH_OUTPUT([HAVE_UNION_WAIT], [/* have union wait */ #undef HAVE_UNION_WAIT]) m4trace:configure.in:992: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTNAME_DEF]) m4trace:configure.in:992: -1- AH_OUTPUT([HAVE_GETHOSTNAME_DEF], [/* have getbostname def */ #undef HAVE_GETHOSTNAME_DEF]) m4trace:configure.in:1019: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INNETGR_DEF]) m4trace:configure.in:1019: -1- AH_OUTPUT([HAVE_INNETGR_DEF], [/* have innetgr def */ #undef HAVE_INNETGR_DEF]) m4trace:configure.in:1042: -1- AC_DEFINE_TRACE_LITERAL([HAVE_OPENLOG_DEF]) m4trace:configure.in:1042: -1- AH_OUTPUT([HAVE_OPENLOG_DEF], [/* have openlog def */ #undef HAVE_OPENLOG_DEF]) m4trace:configure.in:1062: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYSLOG_DEF]) m4trace:configure.in:1062: -1- AH_OUTPUT([HAVE_SYSLOG_DEF], [/* have syslog def */ #undef HAVE_SYSLOG_DEF]) m4trace:configure.in:1081: -1- AC_DEFINE_TRACE_LITERAL([IN6_ADDR]) m4trace:configure.in:1081: -1- AH_OUTPUT([IN6_ADDR], [/* have in6_addr */ #undef IN6_ADDR]) m4trace:configure.in:1097: -1- AC_DEFINE_TRACE_LITERAL([IN_ADDR6]) m4trace:configure.in:1097: -1- AH_OUTPUT([IN_ADDR6], [/* have in_addr6 */ #undef IN_ADDR6]) m4trace:configure.in:1120: -1- AC_DEFINE_TRACE_LITERAL([ST_MTIMESPEC_TV_NSEC]) m4trace:configure.in:1120: -1- AH_OUTPUT([ST_MTIMESPEC_TV_NSEC], [/* have mtimespec */ #undef ST_MTIMESPEC_TV_NSEC]) m4trace:configure.in:1138: -1- AC_DEFINE_TRACE_LITERAL([ST_MTIMENSEC]) m4trace:configure.in:1138: -1- AH_OUTPUT([ST_MTIMENSEC], [/* have mtimensec */ #undef ST_MTIMENSEC]) m4trace:configure.in:1163: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASECMP_DEF]) m4trace:configure.in:1163: -1- AH_OUTPUT([HAVE_STRCASECMP_DEF], [/* have strcasecmp def */ #undef HAVE_STRCASECMP_DEF]) m4trace:configure.in:1188: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FLOCK_DEF]) m4trace:configure.in:1188: -1- AH_OUTPUT([HAVE_FLOCK_DEF], [/* have flock def */ #undef HAVE_FLOCK_DEF]) m4trace:configure.in:1193: -1- AC_PROG_INSTALL m4trace:configure.in:1193: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.in:1193: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.in:1193: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.in:1194: -1- AC_SUBST([INSTALL_MAN]) m4trace:configure.in:1196: -1- AC_PROG_MAKE_SET m4trace:configure.in:1196: -1- AC_SUBST([SET_MAKE]) m4trace:configure.in:1205: -1- AM_GNU_GETTEXT([external]) m4trace:configure.in:1205: -1- AC_SUBST([MKINSTALLDIRS]) m4trace:configure.in:1205: -1- AC_SUBST([USE_NLS]) m4trace:configure.in:1205: -1- AC_SUBST([MSGFMT]) m4trace:configure.in:1205: -1- AC_SUBST([GMSGFMT], [$ac_cv_path_GMSGFMT]) m4trace:configure.in:1205: -1- AC_SUBST([XGETTEXT]) m4trace:configure.in:1205: -1- AC_SUBST([MSGMERGE]) m4trace:configure.in:1205: -1- AC_SUBST([USE_NLS]) m4trace:configure.in:1205: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) m4trace:configure.in:1205: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */ #undef HAVE_ICONV]) m4trace:configure.in:1205: -1- AC_SUBST([LIBICONV]) m4trace:configure.in:1205: -1- AC_SUBST([LTLIBICONV]) m4trace:configure.in:1205: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) m4trace:configure.in:1205: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS]) m4trace:configure.in:1205: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) m4trace:configure.in:1205: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT]) m4trace:configure.in:1205: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) m4trace:configure.in:1205: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT]) m4trace:configure.in:1205: -1- AC_SUBST([INTLLIBS]) m4trace:configure.in:1205: -1- AC_SUBST([LIBINTL]) m4trace:configure.in:1205: -1- AC_SUBST([LTLIBINTL]) m4trace:configure.in:1205: -1- AC_SUBST([POSUB]) m4trace:configure.in:1255: -1- AC_CONFIG_FILES([Makefile src/Makefile man/Makefile fonts/Makefile DOCS/Makefile UTILS/accounting.sh UTILS/sendhp.sh UTILS/supported UTILS/fixupdate src/extract_pjl src/wrapper po/Makefile.in ]) ifhp-3.5.20/HOWTO/0040755000175100017510000000000007725447057013706 5ustar papowellpapowellifhp-3.5.20/gsQuit0100644000175100017510000000000510130541264014150 0ustar papowellpapowellquit ifhp-3.5.20/INSTALL0100644000175100017510000001630710130541262014014 0ustar papowellpapowellInstallation (Based on the AUTOCONF configuration facility) ============================================= READ THE README FILE NOW!!! This is where the directions are. These are generic installation instructions, and are part of the autoconf documentation. Patrick Powell Astart Technologies papowell@astart.com 6741 Convoy Court Network and System San Diego, CA 92111 Consulting 858-874-6543 FAX 858-751-2435 LPRng - Print Spooler (http://www.lprng.com) The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.in' is used to create `configure' by a program called `autoconf'. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. In the same directory as these instructions, execute `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. This will create the executables in the source directory. 3. Type `make install' to install the programs and any data files and documentation. 4. You can remove the program binaries and object files from the source directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Using a Different Build Directory ================================= You can compile the package in a different directory from the one containing the source code. Doing so allows you to compile it on more than one kind of computer at the same time. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Operation Controls ================== `configure' recognizes the following options to control how it operates. `--cache-file=FILE' Save the results of the tests in FILE instead of `config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'. `--help' Print a summary of the options to `configure', and exit. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--version' Print the version of Autoconf used to generate the `configure' script, and exit. `configure' also accepts some other, not widely useful, options. $Id: INSTALL,v 1.5 2003/09/04 18:38:29 papowell Exp papowell $ ifhp-3.5.20/configure0100755000175100017510000205352710130541214014676 0ustar papowellpapowell#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.53. # # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac PATH_SEPARATOR=$lt_cv_sys_path_separator fi # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # NLS nuisances. # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi (set +x; test -n "`(LANG=C; export LANG) 2>&1`") && { $as_unset LANG || test "${LANG+set}" != set; } || { LANG=C; export LANG; } (set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || { LC_ALL=C; export LC_ALL; } (set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || { LC_TIME=C; export LC_TIME; } (set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || { LC_CTYPE=C; export LC_CTYPE; } (set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || { LANGUAGE=C; export LANGUAGE; } (set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || { LC_COLLATE=C; export LC_COLLATE; } (set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || { LC_NUMERIC=C; export LC_NUMERIC; } (set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || { LC_MESSAGES=C; export LC_MESSAGES; } # Name of the executable. as_me=`(basename "$0") 2>/dev/null || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conftest.sh echo "exit 0" >>conftest.sh chmod +x conftest.sh if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conftest.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="Makefile.in" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_default_prefix=/usr/local # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-shared=PKGS build shared libraries default=no --enable-static=PKGS build static libraries default=yes --enable-fast-install=PKGS optimize for fast installation default=yes --disable-libtool-lock avoid locking (might break parallel builds) --disable-snmp disable snmp support --disable-foomatic disable foomatic support --disable-strip disable stripping binaries by default --disable-gscheck disable checking GhostScript for security flaw --enable-nls use Native Language Support --disable-rpath do not hardcode runtime library paths Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-copts OBSOLETE - use CFLAGS=..., see configure --help --with-ccopts OBSOLETE - use CPPFLAGS=..., see configure --help --with-ldopts OBSOLETE - use LDFLAGS=..., see configure --help --with-localedir=PATH specify locale information directory --with-gnu-ld assume the C compiler uses GNU ld default=no --with-pic try to use only PIC/non-PIC objects default=use both --with-ifhp_conf=path ifhp.conf config file (default \${sysconfdir}/ifhp.conf) --with-foomatic-rip=PATH path to foomatic-rip --with-pagesize=SIZE default page size (default letter) --with-filterdir=DIR filter directory (default \${libexecdir}/filters) --with-fontdir=DIR font directory (default \${libexecdir}/filters/fonts) --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.53. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Also quote any args containing shell meta-characters. ac_configure_args= ac_sep= for ac_arg do case $ac_arg in -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n ) continue ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" ac_sep=" " ;; esac # Get rid of the leading space. done # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core core.* *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu PACKAGE=ifhp VERSION=3.5.20 ac_aux_dir= for ac_dir in . $srcdir/.; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in . $srcdir/." >&5 echo "$as_me: error: cannot find install-sh or install.sh in . $srcdir/." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking target system type" >&5 echo $ECHO_N "checking target system type... $ECHO_C" >&6 if test "${ac_cv_target+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_target_alias=$target_alias test "x$ac_cv_target_alias" = "x" && ac_cv_target_alias=$ac_cv_host_alias ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_target" >&5 echo "${ECHO_T}$ac_cv_target" >&6 target=$ac_cv_target target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- ac_config_headers="$ac_config_headers config.h" cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF ALL_LINGUAS="fr" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift set dummy "$as_dir/$ac_word" ${1+"$@"} shift ac_cv_prog_CC="$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C compiler default output" >&5 echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; ls a.out conftest 2>/dev/null; ls a.* conftest.* 2>/dev/null`; do case $ac_file in *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb | *.xSYM ) ;; a.out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables" >&5 echo "$as_me: error: C compiler cannot create executables" >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking for AIX" >&5 echo $ECHO_N "checking for AIX... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef _AIX yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "yes" >/dev/null 2>&1; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 cat >>confdefs.h <<\_ACEOF #define _ALL_SOURCE 1 _ACEOF else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest* echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 if test "${ac_cv_lib_cposix_strerror+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcposix $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char strerror (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { strerror (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_cposix_strerror=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_cposix_strerror=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 if test $ac_cv_lib_cposix_strerror = yes; then LIBS="$LIBS -lcposix" fi echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #include #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test "${ac_cv_header_minix_config_h+set}" = set; then echo "$as_me:$LINENO: checking for minix/config.h" >&5 echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 if test "${ac_cv_header_minix_config_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking minix/config.h usability" >&5 echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking minix/config.h presence" >&5 echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for minix/config.h" >&5 echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 if test "${ac_cv_header_minix_config_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_minix_config_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 fi if test $ac_cv_header_minix_config_h = yes; then MINIX=yes else MINIX= fi if test "$MINIX" = yes; then cat >>confdefs.h <<\_ACEOF #define _POSIX_SOURCE 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define _POSIX_1_SOURCE 2 _ACEOF cat >>confdefs.h <<\_ACEOF #define _MINIX 1 _ACEOF fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PERL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then echo "$as_me:$LINENO: result: $PERL" >&5 echo "${ECHO_T}$PERL" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Check whether --with-ccopts or --without-ccopts was given. if test "${with_ccopts+set}" = set; then withval="$with_ccopts" { { echo "$as_me:$LINENO: error: --with-ccopts OBSOLETE - use CFLAGS=... see configure --help" >&5 echo "$as_me: error: --with-ccopts OBSOLETE - use CFLAGS=... see configure --help" >&2;} { (exit 1); exit 1; }; } fi; # Check whether --with-ccpopts or --without-ccpopts was given. if test "${with_ccpopts+set}" = set; then withval="$with_ccpopts" { { echo "$as_me:$LINENO: error: --with-cppopts OBSOLETE - use CPPFLAGS=... see configure --help" >&5 echo "$as_me: error: --with-cppopts OBSOLETE - use CPPFLAGS=... see configure --help" >&2;} { (exit 1); exit 1; }; } fi; # Check whether --with-ldopts or --without-ldopts was given. if test "${with_ldopts+set}" = set; then withval="$with_ldopts" { { echo "$as_me:$LINENO: error: --with-ldopts OBSOLETE - use LDFLAGS=... see configure --help" >&5 echo "$as_me: error: --with-ldopts OBSOLETE - use LDFLAGS=... see configure --help" >&2;} { (exit 1); exit 1; }; } fi; if test -z "$LOCALEDIR" ; then LOCALEDIR='$(prefix)/share/locale' fi; # Check whether --with-localedir or --without-localedir was given. if test "${with_localedir+set}" = set; then withval="$with_localedir" echo "$as_me:$LINENO: result: LOCALEDIR is $withval" >&5 echo "${ECHO_T}LOCALEDIR is $withval" >&6 LOCALEDIR="$withval" else LOCALEDIR="$LOCALEDIR" echo "$as_me:$LINENO: result: LOCALEDIR defaults to $LOCALEDIR" >&5 echo "${ECHO_T}LOCALEDIR defaults to $LOCALEDIR" >&6 fi; # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac else enable_shared=no fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac else enable_static=yes fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac else enable_fast_install=yes fi; # Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac PATH_SEPARATOR=$lt_cv_sys_path_separator fi # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by GCC" >&5 echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else lt_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$lt_cv_path_LD" if test -n "$LD"; then echo "$as_me:$LINENO: result: $LD" >&5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then lt_cv_prog_gnu_ld=yes else lt_cv_prog_gnu_ld=no fi fi echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/${ac_tool_prefix}nm if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then lt_cv_path_NM="$tmp_nm -B" break elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then lt_cv_path_NM="$tmp_nm -p" break else lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi NM="$lt_cv_path_NM" echo "$as_me:$LINENO: result: $NM" >&5 echo "${ECHO_T}$NM" >&6 echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 if test "${lt_cv_path_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_executable_p="test -f" as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext" fi done done done # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. : ${TMPDIR=/tmp} { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=$TMPDIR/sed$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 { (exit 1); exit 1; } } _max=0 _count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for _sed in $_sed_list /usr/xpg4/bin/sed; do test ! -f ${_sed} && break cat /dev/null > "$tmp/sed.in" _count=0 echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in" # Check for GNU sed and select it if it is found. if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then lt_cv_path_SED=${_sed} break fi while true; do cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp" mv "$tmp/sed.tmp" "$tmp/sed.in" cp "$tmp/sed.in" "$tmp/sed.nl" echo >>"$tmp/sed.nl" ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break # 40000 chars as input seems more than enough test $_count -gt 10 && break _count=`expr $_count + 1` if test $_count -gt $_max; then _max=$_count lt_cv_path_SED=$_sed fi done done rm -rf "$tmp" fi if test "X$SED" != "X"; then lt_cv_path_SED=$SED else SED=$lt_cv_path_SED fi echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6 echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin* | mingw* | pw32*) lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' lt_cv_file_magic_cmd='/usr/bin/file -L' case "$host_os" in rhapsody* | darwin1.[012]) lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` ;; *) # Darwin 1.3 on lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' ;; esac ;; freebsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20*|hpux11*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; irix5* | irix6* | nonstopux*) case $host_os in irix5* | nonstopux*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" ;; esac lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux-gnu*) case $host_cpu in alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' else lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_test_file=/lib/libc.so ;; sysv5uw[78]* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; esac fi echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method # Check for command to grab the raw symbol name followed by C symbol from nm. echo "$as_me:$LINENO: checking command to parse $NM output" >&5 echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris* | sysv5*) symcode='[BDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $host_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then symcode='[ABCDGISTW]' fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[] = { EOF sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" if test -z "$lt_cv_sys_global_symbol_pipe"; then global_symbol_to_cdecl= global_symbol_to_c_name_address= else global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" fi if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; then echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6 else echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6 fi for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="/usr/bin:$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="/usr/bin:$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else MAGIC_CMD=: fi fi fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi enable_dlopen=no enable_win32_dll=no # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in *-*-irix6*) # Find out which ABI we are using. echo '#line 4161 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" need_locks="$enable_libtool_lock" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o if test x"$host" != x"$build"; then ac_tool_prefix=${host_alias}- else ac_tool_prefix= fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case $host_os in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Allow CC to be a program name with arguments. set dummy $CC compiler="$2" ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null echo "$as_me:$LINENO: result: $objdir" >&5 echo "${ECHO_T}$objdir" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## # Check whether --with-pic or --without-pic was given. if test "${with_pic+set}" = set; then withval="$with_pic" pic_mode="$withval" else pic_mode=default fi; test -z "$pic_mode" && pic_mode=default # We assume here that the value for lt_cv_prog_cc_pic will not be cached # in isolation, and that seeing it set (from the cache) indicates that # the associated values are set (in the cache) correctly too. echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "${lt_cv_prog_cc_pic+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_pic= lt_cv_prog_cc_shlib= lt_cv_prog_cc_wl= lt_cv_prog_cc_static= lt_cv_prog_cc_no_builtin= lt_cv_prog_cc_can_build_shared=$can_build_shared if test "$GCC" = yes; then lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-static' case $host_os in aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # not sure about C++ programs. lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_cv_prog_cc_pic='-fno-common' ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; sysv4*MP*) if test -d /usr/nec; then lt_cv_prog_cc_pic=-Kconform_pic fi ;; *) lt_cv_prog_cc_pic='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case $host_os in aix3* | aix4* | aix5*) lt_cv_prog_cc_wl='-Wl,' # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_cv_prog_cc_static='-Bstatic' else lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' fi ;; hpux9* | hpux10* | hpux11*) # Is there a better lt_cv_prog_cc_static that works with the bundled CC? lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" lt_cv_prog_cc_pic='+Z' ;; irix5* | irix6* | nonstopux*) lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; newsos6) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' ;; osf3* | osf4* | osf5*) # All OSF/1 code is PIC. lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' ;; sco3.2v5*) lt_cv_prog_cc_pic='-Kpic' lt_cv_prog_cc_static='-dn' lt_cv_prog_cc_shlib='-belf' ;; solaris*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; sunos4*) lt_cv_prog_cc_pic='-PIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; uts4*) lt_cv_prog_cc_pic='-pic' lt_cv_prog_cc_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_cv_prog_cc_pic='-Kconform_pic' lt_cv_prog_cc_static='-Bstatic' fi ;; *) lt_cv_prog_cc_can_build_shared=no ;; esac fi fi if test -z "$lt_cv_prog_cc_pic"; then echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 else echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5 echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 # Check to make sure the pic_flag actually works. echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 if test "${lt_cv_prog_cc_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then case $host_os in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then # they create non-PIC objects. So, if there were any warnings, we # assume that PIC is not supported. if test -s conftest.err; then lt_cv_prog_cc_pic_works=no else lt_cv_prog_cc_pic_works=yes fi ;; *) lt_cv_prog_cc_pic_works=yes ;; esac else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 lt_cv_prog_cc_pic_works=no fi rm -f conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" fi if test "X$lt_cv_prog_cc_pic_works" = Xno; then lt_cv_prog_cc_pic= lt_cv_prog_cc_can_build_shared=no else lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" fi echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5 echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 fi ## ## END FIXME # Check for any special shared library compilation flags. if test -n "$lt_cv_prog_cc_shlib"; then { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : else { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} lt_cv_prog_cc_can_build_shared=no fi fi ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 if test "${lt_cv_prog_cc_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_prog_cc_static_works=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi # Belt *and* braces to stop my trousers falling down: test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5 echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 pic_flag="$lt_cv_prog_cc_pic" special_shlib_compile_flags="$lt_cv_prog_cc_shlib" wl="$lt_cv_prog_cc_wl" link_static_flag="$lt_cv_prog_cc_static" no_builtin_flag="$lt_cv_prog_cc_no_builtin" can_build_shared="$lt_cv_prog_cc_can_build_shared" ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if options -o and -c are simultaneously supported by compiler echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else $rm -r conftest 2>/dev/null mkdir conftest cd conftest echo "int some_variable = 0;" > conftest.$ac_ext mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no if { (eval echo configure:4707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then lt_cv_compiler_c_o=no else lt_cv_compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&5 lt_cv_compiler_c_o=no fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null fi compiler_c_o=$lt_cv_compiler_c_o echo "$as_me:$LINENO: result: $compiler_c_o" >&5 echo "${ECHO_T}$compiler_c_o" >&6 if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 if test "${lt_cv_compiler_o_lo+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_compiler_o_lo=no save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" save_objext="$ac_objext" ac_objext=lo cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int some_variable = 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then lt_cv_compiler_o_lo=no else lt_cv_compiler_o_lo=yes fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_objext="$save_objext" CFLAGS="$save_CFLAGS" fi compiler_o_lo=$lt_cv_compiler_o_lo echo "$as_me:$LINENO: result: $compiler_o_lo" >&5 echo "${ECHO_T}$compiler_o_lo" >&6 else compiler_o_lo=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## if test "$GCC" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 echo "int some_variable = 0;" > conftest.$ac_ext save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" compiler_rtti_exceptions=no cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int some_variable = 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then compiler_rtti_exceptions=no else compiler_rtti_exceptions=yes fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5 echo "${ECHO_T}$compiler_rtti_exceptions" >&6 if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi ## ## END FIXME ## FIXME: this should be a separate macro ## # See if the linker supports building shared libraries. echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_into_libs=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= link_all_deplibs=unknown always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX, the GNU linker is very broken # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ test -f $output_objdir/impgen.exe || (cd $output_objdir && \ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ else $CC -o impgen impgen.c ; fi)~ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' # cygwin and mingw dlls have different entry points and sets of symbols # to exclude. # FIXME: what about values for MSVC? dll_entry=__cygwin_dll_entry@12 dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ case $host_os in mingw*) # mingw values dll_entry=_DllMainCRTStartup@12 dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ ;; esac # mingw and cygwin differ, and it's simplest to just exclude the union # of the two symbol sets. dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one (in ltdll.c) if test "x$lt_cv_need_dllmain" = "xyes"; then ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' else ltdll_obj= ltdll_cmds= fi # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. # Be careful not to strip the DATA tag left be newer dlltools. export_symbols_cmds="$ltdll_cmds"' $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is. # If DATA tags from a recent dlltool are present, honour them! archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname-def; else echo EXPORTS > $output_objdir/$soname-def; _lt_hint=1; cat $export_symbols | while read symbol; do set dummy \$symbol; case \$# in 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; 4) echo " \$2 \$3 \$4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;; *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; esac; _lt_hint=`expr 1 + \$_lt_hint`; done; fi~ '"$ltdll_cmds"' $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw* | pw32*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. hardcode_direct=yes archive_cmds='' hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then shared_flag='${wl}-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall can do strange things, so it is better to # generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. allow_undefined_flag='${wl}-berok' # This is a bit strange, but is similar to how AIX traditionally builds # it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on allow_undefined_flag='-flat_namespace -undefined suppress' ;; esac # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. Also zsh mangles # `"' quotes if we put them in here... so don't! archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)' # We need to add '_' to the symbols in $export_symbols first #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' hardcode_direct=yes hardcode_shlibpath_var=no whole_archive_flag_spec='-all_load $convenience' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case $host_os in hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' #Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes export_dynamic_flag_spec='${wl}-Bexport' ;; solaris*) # gcc --version < 3.0 without binutils cannot create self contained # shared libraries reliably, requiring libgcc.a to resolve some of # the object symbols generated in some cases. Libraries that use # assert need libgcc.a to resolve __eprintf, for example. Linking # a copy of libgcc.a into every shared library to guarantee resolving # such symbols causes other problems: According to Tim Van Holder # , C++ libraries end up with a separate # (to the application) exception stack for one thing. no_undefined_flag=' -z defs' if test "$GCC" = yes; then case `$CC --version 2>/dev/null` in [12].*) cat <&2 *** Warning: Releases of GCC earlier than version 3.0 cannot reliably *** create self contained shared libraries on Solaris systems, without *** introducing a dependency on libgcc.a. Therefore, libtool is disabling *** -no-undefined support, which will at least allow you to build shared *** libraries. However, you may find that when you link such libraries *** into an application without using GCC, you have to manually add *** \`gcc --print-libgcc-file-name\` to the link command. We urge you to *** upgrade to a newer version of GCC. Another option is to rebuild your *** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. EOF no_undefined_flag= ;; esac fi # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5uw7* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Check hardcoding attributes. echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi ## ## END FIXME reload_cmds='$LD$reload_flag -o $output$reload_objs' test -z "$deplibs_check_method" && deplibs_check_method=unknown ## FIXME: this should be a separate macro ## # PORTME Fill in your ld.so characteristics echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can # not hardcode correct soname into executable. Probably we can # add versioning support to collect2, so additional links can # be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}.so$major' fi shlibpath_var=LIBPATH fi hardcode_into_libs=yes ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" export_dynamic_flag_spec=-rdynamic # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin*) library_names_spec='$libname.dll.a' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog .libs/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' ;; yes,mingw*) library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"` ;; yes,pw32*) library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' ;; *) library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; *) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) version_type=irix ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case "$host_os" in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" hardcode_into_libs=yes ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Report the final consequences. echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 ## ## END FIXME if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; cygwin* | mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; *) echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else f = shl_load; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else f = dlopen; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ## FIXME: this should be a separate macro ## if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 if test "${lt_cv_archive_cmds_need_lc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else $rm conftest* echo 'static int dummy;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_cv_prog_cc_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 fi fi echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 ;; esac fi need_lc=${lt_cv_archive_cmds_need_lc-yes} ## ## END FIXME ## FIXME: this should be a separate macro ## # The second clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then : else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi if test -f "$ltmain"; then trap "$rm \"${ofile}T\"; exit 1" 1 2 15 $rm -f "${ofile}T" echo creating $ofile # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS SED \ AR AR_FLAGS CC LD LN_S NM SHELL \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ old_striplib striplib file_magic_cmd export_symbols_cmds \ deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ global_symbol_to_c_name_address \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case $var in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done cat <<__EOF__ > "${ofile}T" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996-2000 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="${SED} -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$need_lc # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # The default C compiler. CC=$lt_CC # Is the compiler the GNU C compiler? with_gcc=$GCC # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_pic_flag pic_mode=$pic_mode # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$lt_compiler_o_lo # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "${ofile}T" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac case $host_os in cygwin* | mingw* | pw32* | os2*) cat <<'EOF' >> "${ofile}T" # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments # /* impgen.c starts here */ # /* Copyright (C) 1999-2000 Free Software Foundation, Inc. # # This file is part of GNU libtool. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # */ # # #include /* for printf() */ # #include /* for open(), lseek(), read() */ # #include /* for O_RDONLY, O_BINARY */ # #include /* for strdup() */ # # /* O_BINARY isn't required (or even defined sometimes) under Unix */ # #ifndef O_BINARY # #define O_BINARY 0 # #endif # # static unsigned int # pe_get16 (fd, offset) # int fd; # int offset; # { # unsigned char b[2]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 2); # return b[0] + (b[1]<<8); # } # # static unsigned int # pe_get32 (fd, offset) # int fd; # int offset; # { # unsigned char b[4]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 4); # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # static unsigned int # pe_as32 (ptr) # void *ptr; # { # unsigned char *b = ptr; # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # int # main (argc, argv) # int argc; # char *argv[]; # { # int dll; # unsigned long pe_header_offset, opthdr_ofs, num_entries, i; # unsigned long export_rva, export_size, nsections, secptr, expptr; # unsigned long name_rvas, nexp; # unsigned char *expdata, *erva; # char *filename, *dll_name; # # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); # if (dll < 1) # return 1; # # dll_name = filename; # # for (i=0; filename[i]; i++) # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') # dll_name = filename + i +1; # # pe_header_offset = pe_get32 (dll, 0x3c); # opthdr_ofs = pe_header_offset + 4 + 20; # num_entries = pe_get32 (dll, opthdr_ofs + 92); # # if (num_entries < 1) /* no exports */ # return 1; # # export_rva = pe_get32 (dll, opthdr_ofs + 96); # export_size = pe_get32 (dll, opthdr_ofs + 100); # nsections = pe_get16 (dll, pe_header_offset + 4 +2); # secptr = (pe_header_offset + 4 + 20 + # pe_get16 (dll, pe_header_offset + 4 + 16)); # # expptr = 0; # for (i = 0; i < nsections; i++) # { # char sname[8]; # unsigned long secptr1 = secptr + 40 * i; # unsigned long vaddr = pe_get32 (dll, secptr1 + 12); # unsigned long vsize = pe_get32 (dll, secptr1 + 16); # unsigned long fptr = pe_get32 (dll, secptr1 + 20); # lseek(dll, secptr1, SEEK_SET); # read(dll, sname, 8); # if (vaddr <= export_rva && vaddr+vsize > export_rva) # { # expptr = fptr + (export_rva - vaddr); # if (export_rva + export_size > vaddr + vsize) # export_size = vsize - (export_rva - vaddr); # break; # } # } # # expdata = (unsigned char*)malloc(export_size); # lseek (dll, expptr, SEEK_SET); # read (dll, expdata, export_size); # erva = expdata - export_rva; # # nexp = pe_as32 (expdata+24); # name_rvas = pe_as32 (expdata+32); # # printf ("EXPORTS\n"); # for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) mv -f "${ofile}T" "$ofile" || \ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") chmod +x "$ofile" fi ## ## END FIXME # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion v="cannot open"; # Extract the first word of "file", so it can be a program name with args. set dummy file; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_FILEUTIL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $FILEUTIL in [\\/]* | ?:[\\/]*) ac_cv_path_FILEUTIL="$FILEUTIL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FILEUTIL="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_FILEUTIL" && ac_cv_path_FILEUTIL="FILE_UTILITY_NOT_FOUND" ;; esac fi FILEUTIL=$ac_cv_path_FILEUTIL if test -n "$FILEUTIL"; then echo "$as_me:$LINENO: result: $FILEUTIL" >&5 echo "${ECHO_T}$FILEUTIL" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$FILEUTIL" != "FILE_UTILITY_NOT_FOUND" ; then if ${FILEUTIL} - /dev/null ; then echo "the '${FILEUTIL} -' operates correctly"; else echo "Please use a file utility that handles 'file - 'correctly"; echo "You can obtain one from: ftp://ftp.astron.com/pub/file/"; echo " or ftp://ftp.lprng.com/pub/LPRng/UNIXTOOLS/file/"; echo "if necessary, use the FILEUTIL environment variable to specify the path" exit 1 fi fi # Extract the first word of "gzip", so it can be a program name with args. set dummy gzip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GZIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GZIP in [\\/]* | ?:[\\/]*) ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_GZIP" && ac_cv_path_GZIP="GZIP_NOT_FOUND" ;; esac fi GZIP=$ac_cv_path_GZIP if test -n "$GZIP"; then echo "$as_me:$LINENO: result: $GZIP" >&5 echo "${ECHO_T}$GZIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "gs", so it can be a program name with args. set dummy gs; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GS in [\\/]* | ?:[\\/]*) ac_cv_path_GS="$GS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GS="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_GS" && ac_cv_path_GS="GHOSTSCRIPT_NOT_FOUND" ;; esac fi GS=$ac_cv_path_GS if test -n "$GS"; then echo "$as_me:$LINENO: result: $GS" >&5 echo "${ECHO_T}$GS" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "a2ps", so it can be a program name with args. set dummy a2ps; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_A2PS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $A2PS in [\\/]* | ?:[\\/]*) ac_cv_path_A2PS="$A2PS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_A2PS="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_A2PS" && ac_cv_path_A2PS="A2PS_NOT_FOUND" ;; esac fi A2PS=$ac_cv_path_A2PS if test -n "$A2PS"; then echo "$as_me:$LINENO: result: $A2PS" >&5 echo "${ECHO_T}$A2PS" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "cat", so it can be a program name with args. set dummy cat; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_CAT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $CAT in [\\/]* | ?:[\\/]*) ac_cv_path_CAT="$CAT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CAT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_CAT" && ac_cv_path_CAT="CAT_NOT_FOUND" ;; esac fi CAT=$ac_cv_path_CAT if test -n "$CAT"; then echo "$as_me:$LINENO: result: $CAT" >&5 echo "${ECHO_T}$CAT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi echo "$as_me:$LINENO: checking directory where to install the ifhp.conf file" >&5 echo $ECHO_N "checking directory where to install the ifhp.conf file... $ECHO_C" >&6 # Check whether --with-ifhp_conf or --without-ifhp_conf was given. if test "${with_ifhp_conf+set}" = set; then withval="$with_ifhp_conf" IFHP_CONF=$withval else IFHP_CONF=\${sysconfdir}/ifhp.conf fi; echo "$as_me:$LINENO: result: $IFHP_CONF" >&5 echo "${ECHO_T}$IFHP_CONF" >&6 echo "$as_me:$LINENO: checking use snmp" >&5 echo $ECHO_N "checking use snmp... $ECHO_C" >&6 # Check whether --enable-snmp or --disable-snmp was given. if test "${enable_snmp+set}" = set; then enableval="$enable_snmp" if test "$enableval" = "yes" ; then SNMP="yes"; else SNMP="no"; fi else SNMP="yes"; fi; echo "$as_me:$LINENO: result: $SNMP" >&5 echo "${ECHO_T}$SNMP" >&6 if test "$SNMP" = yes ; then if perl -MNet::SNMP -e exit ; then : else { { echo "$as_me:$LINENO: error: SNMP support enabled and the Net::SNMP module not installed. Get the NET-SNMP libraries from http://www.sourceforge.net Get the Net::SNMP perl modules from http://www.cpan.org " >&5 echo "$as_me: error: SNMP support enabled and the Net::SNMP module not installed. Get the NET-SNMP libraries from http://www.sourceforge.net Get the Net::SNMP perl modules from http://www.cpan.org " >&2;} { (exit 1); exit 1; }; }; fi fi echo "$as_me:$LINENO: checking foomatic-rip" >&5 echo $ECHO_N "checking foomatic-rip... $ECHO_C" >&6 # Check whether --with-foomatic-rip or --without-foomatic-rip was given. if test "${with_foomatic_rip+set}" = set; then withval="$with_foomatic_rip" FOOMATIC_RIP=$withval else # Extract the first word of "foomatic-rip", so it can be a program name with args. set dummy foomatic-rip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_FOOMATIC_RIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $FOOMATIC_RIP in [\\/]* | ?:[\\/]*) ac_cv_path_FOOMATIC_RIP="$FOOMATIC_RIP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FOOMATIC_RIP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi FOOMATIC_RIP=$ac_cv_path_FOOMATIC_RIP if test -n "$FOOMATIC_RIP"; then echo "$as_me:$LINENO: result: $FOOMATIC_RIP" >&5 echo "${ECHO_T}$FOOMATIC_RIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi; echo "$as_me:$LINENO: checking use foomatic" >&5 echo $ECHO_N "checking use foomatic... $ECHO_C" >&6 # Check whether --enable-foomatic or --disable-foomatic was given. if test "${enable_foomatic+set}" = set; then enableval="$enable_foomatic" if test "$enableval" = "yes" ; then FOOMATIC="1"; else FOOMATIC="0"; fi else FOOMATIC="1"; fi; echo "$as_me:$LINENO: result: $FOOMATIC" >&5 echo "${ECHO_T}$FOOMATIC" >&6 if test "${FOOMATIC}" "!=" 0 -a "${FOOMATIC_RIP}" = "" ; then { { echo "$as_me:$LINENO: error: foomatic enabled and foomatic-rip not found Download foomatic-filters from: http://www.linuxprinting.org/download/foomatic " >&5 echo "$as_me: error: foomatic enabled and foomatic-rip not found Download foomatic-filters from: http://www.linuxprinting.org/download/foomatic " >&2;} { (exit 1); exit 1; }; }; fi echo "$as_me:$LINENO: checking default page size" >&5 echo $ECHO_N "checking default page size... $ECHO_C" >&6 # Check whether --with-pagesize or --without-pagesize was given. if test "${with_pagesize+set}" = set; then withval="$with_pagesize" PAGE_SIZE=$withval else PAGE_SIZE=letter fi; echo "$as_me:$LINENO: result: $PAGE_SIZE" >&5 echo "${ECHO_T}$PAGE_SIZE" >&6 echo "$as_me:$LINENO: checking filter directory" >&5 echo $ECHO_N "checking filter directory... $ECHO_C" >&6 # Check whether --with-filterdir or --without-filterdir was given. if test "${with_filterdir+set}" = set; then withval="$with_filterdir" FILTER_DIR=$withval else FILTER_DIR=\${libexecdir}/filters fi; echo "$as_me:$LINENO: result: $FILTER_DIR" >&5 echo "${ECHO_T}$FILTER_DIR" >&6 echo "$as_me:$LINENO: checking font directory" >&5 echo $ECHO_N "checking font directory... $ECHO_C" >&6 # Check whether --with-fontdir or --without-fontdir was given. if test "${with_fontdir+set}" = set; then withval="$with_fontdir" FONT_DIR=$withval else FONT_DIR=\${libexecdir}/filters/fonts fi; echo "$as_me:$LINENO: result: $FONT_DIR" >&5 echo "${ECHO_T}$FONT_DIR" >&6 echo "$as_me:$LINENO: checking strip binaries" >&5 echo $ECHO_N "checking strip binaries... $ECHO_C" >&6 # Check whether --enable-strip or --disable-strip was given. if test "${enable_strip+set}" = set; then enableval="$enable_strip" if test "$enableval" = "yes" ; then v=yes; STRIP_OPTION=" -s "; else v=no; STRIP_OPTION=""; fi else v=yes; STRIP_OPTION=" -s "; fi; echo "$as_me:$LINENO: result: $v" >&5 echo "${ECHO_T}$v" >&6 echo "$as_me:$LINENO: checking GhostScript check" >&5 echo $ECHO_N "checking GhostScript check... $ECHO_C" >&6 # Check whether --enable-gscheck or --disable-gscheck was given. if test "${enable_gscheck+set}" = set; then enableval="$enable_gscheck" if test "$enableval" = "yes" ; then GSCHECK=yes; else GSCHECK=no; fi else GSCHECK=no; fi; echo "$as_me:$LINENO: result: $GSCHECK" >&5 echo "${ECHO_T}$GSCHECK" >&6 if test "$GS" != "GHOSTSCRIPT_NOT_FOUND" -a "$GSCHECK" != "no" ; then echo "$as_me:$LINENO: checking GhostScript -dSAFER and -dPARANOIDSAFER option" >&5 echo $ECHO_N "checking GhostScript -dSAFER and -dPARANOIDSAFER option... $ECHO_C" >&6 if $GS -q -dBATCH -dNOPAUSE -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- $srcdir/gsQuit ; then if $GS -q -dBATCH -dNOPAUSE -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- $srcdir/gsTest 1>/dev/null 2>/dev/null ; then { echo "$as_me:$LINENO: WARNING: WARNING: '($GS) -dSAFER -dPARANOIDSAFER ' allows files to be read Please read README.GhostScriptSecurityProblem and fix your distribution of GhostScript OR use: configure --disable-gscheck " >&5 echo "$as_me: WARNING: WARNING: '($GS) -dSAFER -dPARANOIDSAFER ' allows files to be read Please read README.GhostScriptSecurityProblem and fix your distribution of GhostScript OR use: configure --disable-gscheck " >&2;} echo "$as_me:$LINENO: result: GhostScript security hole found!" >&5 echo "${ECHO_T}GhostScript security hole found!" >&6 exit 1 else echo "$as_me:$LINENO: result: no GhostScript security hole found" >&5 echo "${ECHO_T}no GhostScript security hole found" >&6 fi else echo "$as_me:$LINENO: result: Error with: $GS -q -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- " >&5 echo "${ECHO_T}Error with: $GS -q -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- " >&6 fi fi echo "$as_me:$LINENO: checking how to redirect GhostScript output to fd 3" >&5 echo $ECHO_N "checking how to redirect GhostScript output to fd 3... $ECHO_C" >&6 if test "$DEVFD3" = "" ; then v=`( if test -d /dev/fd ; then echo 3 >/dev/fd/3; fi) 2>/dev/null 3>&1 1>&2` if test "$v" != "" ; then DEVFD3=/dev/fd/3 FD3=/dev/fd/3 else DEVFD3="|$CAT >\&3" FD3="|$CAT >&3" fi rm -f gs_out gs -q -dBATCH -dNOPAUSE -dSAFER -dPARANOIDSAFER -sDEVICE=laserjet "-sOutputFile=${FD3}" ${srcdir}/gsPrint 3>gs_out if test "!" -s gs_out ; then { { echo "$as_me:$LINENO: error: \"ERROR - gs cannot handle -sOutputFile=$OUT\" " >&5 echo "$as_me: error: \"ERROR - gs cannot handle -sOutputFile=$OUT\" " >&2;} { (exit 1); exit 1; }; }; fi fi echo "$as_me:$LINENO: result: $DEVFD3" >&5 echo "${ECHO_T}$DEVFD3" >&6 ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift set dummy "$as_dir/$ac_word" ${1+"$@"} shift ac_cv_prog_CC="$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "$ac_cv_c_compiler_gnu" = yes; then cat >conftest.c </dev/null 2>&1; then gcc -v { echo "$as_me:$LINENO: WARNING: WARNING: gcc -O (version 2.4.5 and below) produces incorrect code for lpd.c and other large routines. " >&5 echo "$as_me: WARNING: WARNING: gcc -O (version 2.4.5 and below) produces incorrect code for lpd.c and other large routines. " >&2;} fi; fi; LDCC="$CC" echo "$as_me:$LINENO: result: using CPPFLAGS=\"${CPPFLAGS}\"" >&5 echo "${ECHO_T}using CPPFLAGS=\"${CPPFLAGS}\"" >&6 release=`uname -r 2>/dev/null; exit 0`; version=`echo $target_os | sed -e 's/[^0-9][^0-9]*//' -e 's/\./X/' -e 's/\.//g' -e 's/X/./' \ | awk '{ v=$1+0; if( v > 0 ){ while( v < 100 || int(v) != v ){v = v * 10;}}; print v; }' `; if test "$version" -eq 0 ; then version=`echo $release | sed -e 's/-.*//' -e 's/\.//g' \ | awk '{ v=$1+0; if( v > 0 ){ while( v < 100 || int(v) != v ){v = v * 10;}}; print v; }' `; fi osword=`echo $target_os | sed -e 's/[0-9].*//'`; export osword echo "$as_me:$LINENO: result: Target is $target, arch $target_cpu, os $target_os, release $release, version $version" >&5 echo "${ECHO_T}Target is $target, arch $target_cpu, os $target_os, release $release, version $version" >&6 cat >>confdefs.h <<_ACEOF #define ARCHITECTURE "$target_cpu" _ACEOF cat >>confdefs.h <<_ACEOF #define OSNAME "$osword" _ACEOF cat >>confdefs.h <<_ACEOF #define OSVERSION $version _ACEOF ARCHITECTURE=$target_cpu OSNAME=$osword OSVERSION=$version echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++ccp; p = (char**) ccp; ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF #define const _ACEOF fi echo "$as_me:$LINENO: checking for inline" >&5 echo $ECHO_N "checking for inline... $ECHO_C" >&6 if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifndef __cplusplus static $ac_kw int static_foo () {return 0; } $ac_kw int foo () {return 0; } #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_inline=$ac_kw; break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done fi echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 echo "${ECHO_T}$ac_cv_c_inline" >&6 case $ac_cv_c_inline in inline | yes) ;; no) cat >>confdefs.h <<\_ACEOF #define inline _ACEOF ;; *) cat >>confdefs.h <<_ACEOF #define inline $ac_cv_c_inline _ACEOF ;; esac echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #include #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include <$ac_hdr> #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo "$as_me:$LINENO: checking for library containing opendir" >&5 echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 if test "${ac_cv_search_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { opendir (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_opendir="none required" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_opendir" = no; then for ac_lib in dir; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { opendir (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_opendir="-l$ac_lib" break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext done fi LIBS=$ac_func_search_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 echo "${ECHO_T}$ac_cv_search_opendir" >&6 if test "$ac_cv_search_opendir" != no; then test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" fi else echo "$as_me:$LINENO: checking for library containing opendir" >&5 echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 if test "${ac_cv_search_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { opendir (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_opendir="none required" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_opendir" = no; then for ac_lib in x; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { opendir (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_opendir="-l$ac_lib" break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext done fi LIBS=$ac_func_search_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 echo "${ECHO_T}$ac_cv_search_opendir" >&6 if test "$ac_cv_search_opendir" != no; then test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" fi fi echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6 if test "${ac_cv_header_sys_wait_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int s; wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_sys_wait_h=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_sys_wait_h=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 if test $ac_cv_header_sys_wait_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_WAIT_H 1 _ACEOF fi echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 if test "${ac_cv_header_time+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_time=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_time=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 echo "${ECHO_T}$ac_cv_header_time" >&6 if test $ac_cv_header_time = yes; then cat >>confdefs.h <<\_ACEOF #define TIME_WITH_SYS_TIME 1 _ACEOF fi echo "$as_me:$LINENO: checking return type of signal handlers" >&5 echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 if test "${ac_cv_type_signal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef signal # undef signal #endif #ifdef __cplusplus extern "C" void (*signal (int, void (*)(int)))(int); #else void (*signal ()) (); #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int i; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_signal=void else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_signal=int fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 echo "${ECHO_T}$ac_cv_type_signal" >&6 cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 if test "${ac_cv_type_uid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "uid_t" >/dev/null 2>&1; then ac_cv_type_uid_t=yes else ac_cv_type_uid_t=no fi rm -f conftest* fi echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 echo "${ECHO_T}$ac_cv_type_uid_t" >&6 if test $ac_cv_type_uid_t = no; then cat >>confdefs.h <<\_ACEOF #define uid_t int _ACEOF cat >>confdefs.h <<\_ACEOF #define gid_t int _ACEOF fi echo "$as_me:$LINENO: checking for size_t" >&5 echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((size_t *) 0) return 0; if (sizeof (size_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_size_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned _ACEOF fi echo "$as_me:$LINENO: checking for mode_t" >&5 echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 if test "${ac_cv_type_mode_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((mode_t *) 0) return 0; if (sizeof (mode_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_mode_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_mode_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 echo "${ECHO_T}$ac_cv_type_mode_t" >&6 if test $ac_cv_type_mode_t = yes; then : else cat >>confdefs.h <<_ACEOF #define mode_t int _ACEOF fi echo "$as_me:$LINENO: checking for off_t" >&5 echo $ECHO_N "checking for off_t... $ECHO_C" >&6 if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((off_t *) 0) return 0; if (sizeof (off_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_off_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_off_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 echo "${ECHO_T}$ac_cv_type_off_t" >&6 if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF #define off_t long _ACEOF fi echo "$as_me:$LINENO: checking for pid_t" >&5 echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 if test "${ac_cv_type_pid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((pid_t *) 0) return 0; if (sizeof (pid_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_pid_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_pid_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 echo "${ECHO_T}$ac_cv_type_pid_t" >&6 if test $ac_cv_type_pid_t = yes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi echo "$as_me:$LINENO: checking checking for long long" >&5 echo $ECHO_N "checking checking for long long... $ECHO_C" >&6 if test "${ac_cv_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",sizeof(long long)); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_long_long=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_long_long=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_long_long" >&5 echo "${ECHO_T}$ac_cv_long_long" >&6 if test $ac_cv_long_long = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LONG_LONG 1 _ACEOF fi echo "$as_me:$LINENO: checking checking for long double" >&5 echo $ECHO_N "checking checking for long double... $ECHO_C" >&6 if test "${ac_cv_long_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",sizeof(long double)); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_long_double=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_long_double=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_long_double" >&5 echo "${ECHO_T}$ac_cv_long_double" >&6 if test $ac_cv_long_double = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LONG_DOUBLE 1 _ACEOF fi echo "$as_me:$LINENO: checking checking for quad_t" >&5 echo $ECHO_N "checking checking for quad_t... $ECHO_C" >&6 if test "${ac_cv_quad_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",sizeof(quad_t)); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_quad_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_quad_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_quad_t" >&5 echo "${ECHO_T}$ac_cv_quad_t" >&6 if test $ac_cv_quad_t = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_QUAD_T 1 _ACEOF fi checklibs= case $target_os in *linux* ) no_resolv_lib=yes; ;; *bsdi* ) LDCC=shlicc echo "$as_me:$LINENO: checking for setproctitle in -lutil" >&5 echo $ECHO_N "checking for setproctitle in -lutil... $ECHO_C" >&6 if test "${ac_cv_lib_util_setproctitle+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lutil $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char setproctitle (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { setproctitle (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_util_setproctitle=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_util_setproctitle=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_util_setproctitle" >&5 echo "${ECHO_T}$ac_cv_lib_util_setproctitle" >&6 if test $ac_cv_lib_util_setproctitle = yes; then LIBS="-lutil $LIBS" fi ;; *bsd* ) echo "$as_me:$LINENO: checking for setproctitle in -lutil" >&5 echo $ECHO_N "checking for setproctitle in -lutil... $ECHO_C" >&6 if test "${ac_cv_lib_util_setproctitle+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lutil $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char setproctitle (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { setproctitle (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_util_setproctitle=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_util_setproctitle=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_util_setproctitle" >&5 echo "${ECHO_T}$ac_cv_lib_util_setproctitle" >&6 if test $ac_cv_lib_util_setproctitle = yes; then LIBS="-lutil $LIBS" fi ;; *unicos* ) checklibs=no ;; *irix6* ) checklibs=no cat >>confdefs.h <<_ACEOF #define IRIX $version _ACEOF ;; *irix5* ) checklibs=no cat >>confdefs.h <<\_ACEOF #define HAVE_BROKEN_TIOCEXCL 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define SVR4 1 _ACEOF cat >>confdefs.h <<_ACEOF #define IRIX $version _ACEOF ;; *irix* ) checklibs=no cat >>confdefs.h <<_ACEOF #define IRIX $version _ACEOF ;; *solaris* ) cat >>confdefs.h <<\_ACEOF #define SVR4 1 _ACEOF cat >>confdefs.h <<_ACEOF #define SOLARIS $version _ACEOF no_resolv_lib=yes; ;; *hpux* ) cat >>confdefs.h <<\_ACEOF #define _HPUX_SOURCE 1 _ACEOF CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE=1" CFLAGS="$CFLAGS -D_HPUX_SOURCE=1" cat >>confdefs.h <<_ACEOF #define HPUX $version _ACEOF ;; *sunos* ) cat >>confdefs.h <<_ACEOF #define SUNOS $version _ACEOF ;; osf* ) cat >>confdefs.h <<_ACEOF #define DECALPHA $version _ACEOF if test "$ac_cv_c_compiler_gnu" != yes; then CPPFLAGS="$CPPFLAGS -std"; CFLAGS="$CFLAGS -std"; else CPPFLAGS="$CPPFLAGS -DAES_SOURCE" CFLAGS="$CFLAGS -DAES_SOURCE" fi ;; *mips-sni* ) ;; esac for ac_header in a_out.h aouthdr.h ar.h arpa/inet.h arpa/nameser.h assert.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in com_err.h compat.h ctype.h ctypes.h dirent.h errno.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in exechdr.h fcntl.h filehdr.h grp.h limits.h locale.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in machine/vmparam.h malloc.h memory.h ndir.h netdb.h netinet/in.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in nlist.h pwd.h reloc.h resolv.h select.h setjmp.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sgs.h sgtty.h signal.h stab.h stdarg.h stdio.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in stdlib.h string.h strings.h sys/dir.h sys/exec.h sys/exechdr.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/fcntl.h sys/file.h sys/ioctl.h sys/loader.h sys/mount.h sys/ndir.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/param.h sys/pstat.h sys/resource.h sys/select.h sys/signal.h sys/socket.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/stat.h sys/statfs.h sys/statvfs.h sys/syslog.h sys/systeminfo.h sys/termio.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/termiox.h sys/time.h sys/ttold.h sys/ttycom.h sys/types.h sys/utsname.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/vfs.h sys/wait.h syslog.h term.h termcap.h termio.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in termios.h time.h unistd.h utsname.h varargs.h vmparam.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test -z "$checklibs"; then echo "$as_me:$LINENO: checking for getpwent in -lposix" >&5 echo $ECHO_N "checking for getpwent in -lposix... $ECHO_C" >&6 if test "${ac_cv_lib_posix_getpwent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char getpwent (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { getpwent (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_posix_getpwent=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_posix_getpwent=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_posix_getpwent" >&5 echo "${ECHO_T}$ac_cv_lib_posix_getpwent" >&6 if test $ac_cv_lib_posix_getpwent = yes; then LIBS="$LIBS -lposix" fi echo "$as_me:$LINENO: checking for socket in -lsocket_s" >&5 echo $ECHO_N "checking for socket in -lsocket_s... $ECHO_C" >&6 if test "${ac_cv_lib_socket_s_socket+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket_s -lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char socket (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { socket (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_s_socket=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_socket_s_socket=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_s_socket" >&5 echo "${ECHO_T}$ac_cv_lib_socket_s_socket" >&6 if test $ac_cv_lib_socket_s_socket = yes; then LIBS="$LIBS -lsocket_s"; have_socket=1 fi if test -z "$have_socket"; then echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_socket+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket -lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char socket (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { socket (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_socket=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_socket_socket=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 if test $ac_cv_lib_socket_socket = yes; then LIBS="$LIBS -lsocket" fi fi cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int gethostbyaddr; return (gethostbyaddr); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then have_gethost=1 else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test -z "$have_gethost" ; then h="you need additional libs for gethostbyaddr"; else h="no additional libs for gethostbyaddr"; fi echo "$as_me:$LINENO: result: $h" >&5 echo "${ECHO_T}$h" >&6 if test -z "$have_gethost" ; then echo "$as_me:$LINENO: checking for gethostbyaddr in -lnsl_s" >&5 echo $ECHO_N "checking for gethostbyaddr in -lnsl_s... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_s_gethostbyaddr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl_s $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyaddr (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostbyaddr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_s_gethostbyaddr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_nsl_s_gethostbyaddr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_s_gethostbyaddr" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_s_gethostbyaddr" >&6 if test $ac_cv_lib_nsl_s_gethostbyaddr = yes; then LIBS="$LIBS -lnsl_s"; have_gethost=1 fi fi if test -z "$have_gethost"; then echo "$as_me:$LINENO: checking for gethostbyaddr in -lnsl" >&5 echo $ECHO_N "checking for gethostbyaddr in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_gethostbyaddr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyaddr (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostbyaddr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyaddr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyaddr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyaddr" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyaddr" >&6 if test $ac_cv_lib_nsl_gethostbyaddr = yes; then LIBS="$LIBS -lnsl"; have_gethost=1 fi fi if test -z "$have_gethost"; then echo "$as_me:$LINENO: checking for gethostbyaddr in -lnet_s" >&5 echo $ECHO_N "checking for gethostbyaddr in -lnet_s... $ECHO_C" >&6 if test "${ac_cv_lib_net_s_gethostbyaddr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnet_s $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyaddr (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostbyaddr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_net_s_gethostbyaddr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_net_s_gethostbyaddr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_net_s_gethostbyaddr" >&5 echo "${ECHO_T}$ac_cv_lib_net_s_gethostbyaddr" >&6 if test $ac_cv_lib_net_s_gethostbyaddr = yes; then LIBS="$LIBS -lnet_s"; have_gethost=1 fi fi if test -z "$have_gethost"; then echo "$as_me:$LINENO: checking for gethostbyaddr in -lnet" >&5 echo $ECHO_N "checking for gethostbyaddr in -lnet... $ECHO_C" >&6 if test "${ac_cv_lib_net_gethostbyaddr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnet $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyaddr (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostbyaddr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_net_gethostbyaddr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_net_gethostbyaddr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_net_gethostbyaddr" >&5 echo "${ECHO_T}$ac_cv_lib_net_gethostbyaddr" >&6 if test $ac_cv_lib_net_gethostbyaddr = yes; then LIBS="$LIBS -lnet"; have_gethost=1 fi fi if test -z "$no_resolv_lib"; then echo "$as_me:$LINENO: checking for inet_ntop" >&5 echo $ECHO_N "checking for inet_ntop... $ECHO_C" >&6 if test "${ac_cv_func_inet_ntop+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char inet_ntop (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char inet_ntop (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_inet_ntop) || defined (__stub___inet_ntop) choke me #else f = inet_ntop; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_inet_ntop=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_inet_ntop=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_inet_ntop" >&5 echo "${ECHO_T}$ac_cv_func_inet_ntop" >&6 if test $ac_cv_func_inet_ntop = yes; then name2=yes fi if test -z "$name2" ; then echo "$as_me:$LINENO: checking for inet_ntop in -lresolv" >&5 echo $ECHO_N "checking for inet_ntop in -lresolv... $ECHO_C" >&6 if test "${ac_cv_lib_resolv_inet_ntop+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lresolv $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char inet_ntop (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { inet_ntop (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_resolv_inet_ntop=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_resolv_inet_ntop=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_inet_ntop" >&5 echo "${ECHO_T}$ac_cv_lib_resolv_inet_ntop" >&6 if test $ac_cv_lib_resolv_inet_ntop = yes; then LIBS="$LIBS -lresolv";name2=yes fi fi; fi fi for ac_func in _res cfsetispeed fcntl flock gethostbyname2 getdtablesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in gethostname getrlimit inet_aton inet_ntop inet_pton do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in innetgr killpg lockf mkstemp do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in mktemp openlog putenv random rand setenv seteuid setruid setlinebuf setlocale setpgid setproctitle do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in setresuid setreuid setsid setvbuf sigaction do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in sigprocmask siglongjmp socketpair strcasecmp do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in strchr strdup strerror strncasecmp sysconf sysinfo do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in tcdrain tcflush tcsetattr uname unsetenv wait3 waitpid do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if test ! "$ac_cv_func_setreuid" = yes -a ! "$ac_cv_func_seteuid" = yes -a ! "$ac_cv_func_setresuid" = yes; then { echo "$as_me:$LINENO: WARNING: WARNING: missing setreuid(), seteuid(), and setresuid() " >&5 echo "$as_me: WARNING: WARNING: missing setreuid(), seteuid(), and setresuid() " >&2;} fi for ac_header in unistd.h vfork.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in fork vfork do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ac_cv_func_fork_works=$ac_cv_func_fork if test "x$ac_cv_func_fork" = xyes; then echo "$as_me:$LINENO: checking for working fork" >&5 echo $ECHO_N "checking for working fork... $ECHO_C" >&6 if test "${ac_cv_func_fork_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_fork_works=cross else cat >conftest.$ac_ext <<_ACEOF /* By Ruediger Kuhlmann. */ #include #if HAVE_UNISTD_H # include #endif /* Some systems only have a dummy stub for fork() */ int main () { if (fork() < 0) exit (1); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_fork_works=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_fork_works=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_func_fork_works" >&5 echo "${ECHO_T}$ac_cv_func_fork_works" >&6 fi if test "x$ac_cv_func_fork_works" = xcross; then case $host in *-*-amigaos* | *-*-msdosdjgpp*) # Override, as these systems have only a dummy fork() stub ac_cv_func_fork_works=no ;; *) ac_cv_func_fork_works=yes ;; esac { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} fi ac_cv_func_vfork_works=$ac_cv_func_vfork if test "x$ac_cv_func_vfork" = xyes; then echo "$as_me:$LINENO: checking for working vfork" >&5 echo $ECHO_N "checking for working vfork... $ECHO_C" >&6 if test "${ac_cv_func_vfork_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_vfork_works=cross else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Thanks to Paul Eggert for this test. */ #include #include #include #if HAVE_UNISTD_H # include #endif #if HAVE_VFORK_H # include #endif /* On some sparc systems, changes by the child to local and incoming argument registers are propagated back to the parent. The compiler is told about this with #include , but some compilers (e.g. gcc -O) don't grok . Test for this by using a static variable whose address is put into a register that is clobbered by the vfork. */ static #ifdef __cplusplus sparc_address_test (int arg) # else sparc_address_test (arg) int arg; #endif { static pid_t child; if (!child) { child = vfork (); if (child < 0) { perror ("vfork"); _exit(2); } if (!child) { arg = getpid(); write(-1, "", 0); _exit (arg); } } } int main () { pid_t parent = getpid (); pid_t child; sparc_address_test (); child = vfork (); if (child == 0) { /* Here is another test for sparc vfork register problems. This test uses lots of local variables, at least as many local variables as main has allocated so far including compiler temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should reuse the register of parent for one of the local variables, since it will think that parent can't possibly be used any more in this routine. Assigning to the local variable will thus munge parent in the parent process. */ pid_t p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); /* Convince the compiler that p..p7 are live; otherwise, it might use the same hardware register for all 8 local variables. */ if (p != p1 || p != p2 || p != p3 || p != p4 || p != p5 || p != p6 || p != p7) _exit(1); /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent from child file descriptors. If the child closes a descriptor before it execs or exits, this munges the parent's descriptor as well. Test for this by closing stdout in the child. */ _exit(close(fileno(stdout)) != 0); } else { int status; struct stat st; while (wait(&status) != child) ; exit( /* Was there some problem with vforking? */ child < 0 /* Did the child fail? (This shouldn't happen.) */ || status /* Did the vfork/compiler bug occur? */ || parent != getpid() /* Did the file descriptor bug occur? */ || fstat(fileno(stdout), &st) != 0 ); } } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_vfork_works=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_vfork_works=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_func_vfork_works" >&5 echo "${ECHO_T}$ac_cv_func_vfork_works" >&6 fi; if test "x$ac_cv_func_fork_works" = xcross; then ac_cv_func_vfork_works=ac_cv_func_vfork { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} fi if test "x$ac_cv_func_vfork_works" = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_WORKING_VFORK 1 _ACEOF else cat >>confdefs.h <<\_ACEOF #define vfork fork _ACEOF fi if test "x$ac_cv_func_fork_works" = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_WORKING_FORK 1 _ACEOF fi for ac_func in vprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF echo "$as_me:$LINENO: checking for _doprnt" >&5 echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 if test "${ac_cv_func__doprnt+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char _doprnt (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char _doprnt (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub__doprnt) || defined (__stub____doprnt) choke me #else f = _doprnt; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func__doprnt=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func__doprnt=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 echo "${ECHO_T}$ac_cv_func__doprnt" >&6 if test $ac_cv_func__doprnt = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_DOPRNT 1 _ACEOF fi fi done echo "$as_me:$LINENO: checking how to manipulate tty attributes" >&5 echo $ECHO_N "checking how to manipulate tty attributes... $ECHO_C" >&6 if test "${ac_cv_struct_term+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_header_termios_h" = yes; then ac_cv_struct_term=termios fi if test "$ac_cv_header_sys_termios_h" = yes; then ac_cv_struct_term=termios fi if test -z "$ac_cv_struct_term" ; then cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_TERMIO_H #include #endif #ifdef HAVE_SYS_TERMIO_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct termio t;t.c_iflag = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_struct_term=termio else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi if test -z "$ac_cv_struct_term" ; then cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct sgttyb s;s.sg_flags = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_struct_term=sgttyb else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi if test -z "$ac_cv_struct_term" ; then ac_cv_struct_term=UNDEFINED fi fi echo "$as_me:$LINENO: result: $ac_cv_struct_term" >&5 echo "${ECHO_T}$ac_cv_struct_term" >&6 if test "$ac_cv_struct_term" = "sgttyb"; then cat >>confdefs.h <<\_ACEOF #define USE_SGTTYB 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define USE_STTY SGTTYB _ACEOF fi if test "$ac_cv_struct_term" = "termio"; then cat >>confdefs.h <<\_ACEOF #define USE_TERMIO 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define USE_STTY TERMIO _ACEOF fi if test "$ac_cv_struct_term" = "termios"; then cat >>confdefs.h <<\_ACEOF #define USE_TERMIOS 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define USE_STTY TERMIOS _ACEOF if test "$ac_cv_header_sys_termiox_h" = yes; then cat >>confdefs.h <<\_ACEOF #define USE_TERMIOX 1 _ACEOF fi fi echo "$as_me:$LINENO: checking checking for struct exec" >&5 echo $ECHO_N "checking checking for struct exec... $ECHO_C" >&6 if test "${ac_cv_struct_exec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_struct_exec=no if test "$ac_cv_header_a_out_h" != no ; then cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct exec b; b.a_text = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_struct_exec=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_struct_exec=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_struct_exec" >&5 echo "${ECHO_T}$ac_cv_struct_exec" >&6 if test "$ac_cv_struct_exec" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_STRUCT_EXEC 1 _ACEOF fi echo "$as_me:$LINENO: checking checking for lseek prototype" >&5 echo $ECHO_N "checking checking for lseek prototype... $ECHO_C" >&6 if test "${ac_cv_lseek_proto+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_UNISTD_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { off_t x; x = lseek(0,"test",SEEK_SET); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lseek_proto=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lseek_proto=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_lseek_proto" >&5 echo "${ECHO_T}$ac_cv_lseek_proto" >&6 if test "$ac_cv_lseek_proto" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LSEEK_PROTO 1 _ACEOF fi echo "$as_me:$LINENO: checking how to get filesystem free space" >&5 echo $ECHO_N "checking how to get filesystem free space... $ECHO_C" >&6 if test "${ac_cv_struct_fstype+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else fstype= if test "$ac_cv_func_statvfs" != no ; then #{ cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATVFS_H # include #endif #ifdef HAVE_SYS_STATFS_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct statvfs s; statvfs ("/", &s); return(s.f_bavail+s.f_bsize) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then fstype=statvfs else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi #} if test "$ac_cv_func_statfs" != no ; then #{ if test -z "$fstype" ; then #{ cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATFS_H # include #endif #ifdef HAVE_SYS_STATVFS_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct fs_data s; return(s.fd_bfree+s.fd_bsize) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then fstype=Ultrix-statfs else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi #} if test -z "$fstype" ; then #{ cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATFS_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_VFS_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct statfs s; return(s.f_bavail+s.f_bsize) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then fstype=statfs else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi # } if test -z "$fstype" ; then # { cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATFS_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_VFS_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct statfs s; return(s.f_bfree+s.f_bsize) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then fstype=SVR3-statfs else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi # } fi # } if test -z "$fstype" ; then echo "cannot find a valid statfs-like structure!" fstype=UNKNOWN fi ac_cv_struct_fstype=$fstype fi echo "$as_me:$LINENO: result: $ac_cv_struct_fstype" >&5 echo "${ECHO_T}$ac_cv_struct_fstype" >&6 if test "$ac_cv_struct_fstype" = SVR3-statfs; then cat >>confdefs.h <<\_ACEOF #define USE_STATFS_TYPE SVR3_STATFS _ACEOF fi if test "$ac_cv_struct_fstype" = Ultrix-statfs; then cat >>confdefs.h <<\_ACEOF #define USE_STATFS_TYPE ULTRIX_STATFS _ACEOF fi if test "$ac_cv_struct_fstype" = statfs; then cat >>confdefs.h <<\_ACEOF #define USE_STATFS_TYPE STATFS _ACEOF fi if test "$ac_cv_struct_fstype" = statvfs; then cat >>confdefs.h <<\_ACEOF #define USE_STATFS_TYPE STATVFS _ACEOF fi echo "$as_me:$LINENO: checking for errno" >&5 echo $ECHO_N "checking for errno... $ECHO_C" >&6 if test "${ac_cv_errno+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int errno; return (errno); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_errno=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_errno=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_errno" >&5 echo "${ECHO_T}$ac_cv_errno" >&6 if test "$ac_cv_errno" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ERRNO 1 _ACEOF echo "$as_me:$LINENO: checking for errno declaration" >&5 echo $ECHO_N "checking for errno declaration... $ECHO_C" >&6 if test "${ac_cv_decl_errno+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_ERRNO_H #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { return(sys_nerr); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_errno=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_errno=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_errno" >&5 echo "${ECHO_T}$ac_cv_decl_errno" >&6 if test "$ac_cv_decl_errno" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_DECL_ERRNO 1 _ACEOF fi; fi echo "$as_me:$LINENO: checking for sys_nerr" >&5 echo $ECHO_N "checking for sys_nerr... $ECHO_C" >&6 if test "${ac_cv_sys_nerr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int sys_nerr; return (sys_nerr); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sys_nerr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_sys_nerr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_sys_nerr" >&5 echo "${ECHO_T}$ac_cv_sys_nerr" >&6 if test "$ac_cv_sys_nerr" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_NERR 1 _ACEOF echo "$as_me:$LINENO: checking for sys_nerr declaration" >&5 echo $ECHO_N "checking for sys_nerr declaration... $ECHO_C" >&6 if test "${ac_cv_decl_sys_nerr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { return(sys_nerr); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_sys_nerr_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_sys_nerr_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_sys_nerr" >&5 echo "${ECHO_T}$ac_cv_decl_sys_nerr" >&6 if test "$ac_cv_decl_sys_nerr" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_DECL_SYS_NERR 1 _ACEOF fi fi echo "$as_me:$LINENO: checking for sys_errlist array" >&5 echo $ECHO_N "checking for sys_errlist array... $ECHO_C" >&6 if test "${ac_cv_sys_errlist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern char *sys_errlist[]; sys_errlist[0]; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sys_errlist=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_sys_errlist=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_sys_errlist" >&5 echo "${ECHO_T}$ac_cv_sys_errlist" >&6 if test "$ac_cv_sys_errlist" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_ERRLIST 1 _ACEOF echo "$as_me:$LINENO: checking for sys_errlist declaration" >&5 echo $ECHO_N "checking for sys_errlist declaration... $ECHO_C" >&6 if test "${ac_cv_sys_errlist_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { char *s = sys_errlist[0]; return(*s); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_sys_errlist=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_sys_errlist=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_sys_errlist_def" >&5 echo "${ECHO_T}$ac_cv_sys_errlist_def" >&6 if test "$ac_cv_decl_sys_errlist" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_DECL_SYS_ERRLIST 1 _ACEOF fi fi echo "$as_me:$LINENO: checking for setproctitle declaration" >&5 echo $ECHO_N "checking for setproctitle declaration... $ECHO_C" >&6 if test "${ac_cv_decl_setproctitle_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { setproctitle(0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_setproctitle_def=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_setproctitle_def=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_setproctitle_def" >&5 echo "${ECHO_T}$ac_cv_decl_setproctitle_def" >&6 if test "$ac_cv_decl_setproctitle_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SETPROCTITLE_DEF 1 _ACEOF fi echo "$as_me:$LINENO: checking for sys_siglist declaration" >&5 echo $ECHO_N "checking for sys_siglist declaration... $ECHO_C" >&6 if test "${ac_cv_decl_sys_siglist_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%s",sys_siglist[0]); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_sys_siglist_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_sys_siglist_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_sys_siglist_def" >&5 echo "${ECHO_T}$ac_cv_decl_sys_siglist_def" >&6 if test "$ac_cv_decl_sys_siglist_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_SIGLIST_DEF 1 _ACEOF ac_cv_sys_siglist=yes fi echo "$as_me:$LINENO: checking for _sys_siglist declaration" >&5 echo $ECHO_N "checking for _sys_siglist declaration... $ECHO_C" >&6 if test "${ac_cv_decl__sys_siglist_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%s",_sys_siglist[0]); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl__sys_siglist_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl__sys_siglist_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl__sys_siglist_def" >&5 echo "${ECHO_T}$ac_cv_decl__sys_siglist_def" >&6 if test "$ac_cv_decl__sys_siglist_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE__SYS_SIGLIST_DEF 1 _ACEOF ac_cv__sys_siglist=yes fi echo "$as_me:$LINENO: checking for sys_siglist array" >&5 echo $ECHO_N "checking for sys_siglist array... $ECHO_C" >&6 if test "${ac_cv_sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int sys_siglist; printf("%d",sys_siglist); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sys_siglist=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_sys_siglist=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_sys_siglist" >&5 echo "${ECHO_T}$ac_cv_sys_siglist" >&6 if test "$ac_cv_sys_siglist" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_SIGLIST 1 _ACEOF fi echo "$as_me:$LINENO: checking for _sys_siglist array" >&5 echo $ECHO_N "checking for _sys_siglist array... $ECHO_C" >&6 if test "${ac_cv__sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int _sys_siglist; printf("%d",_sys_siglist); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv__sys_siglist=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv__sys_siglist=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv__sys_siglist" >&5 echo "${ECHO_T}$ac_cv__sys_siglist" >&6 if test "$ac_cv__sys_siglist" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE__SYS_SIGLIST 1 _ACEOF fi echo "$as_me:$LINENO: checking for getprgp() or getpgrp(0) form" >&5 echo $ECHO_N "checking for getprgp() or getpgrp(0) form... $ECHO_C" >&6 if test "${ac_cv_func_getpgrp_0+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #ifdef HAVE_UNISTD_H # include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { getpgrp(0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_getpgrp_0=getpgrp_0 else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_getpgrp_0=getpgrp fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_getpgrp_0" >&5 echo "${ECHO_T}$ac_cv_func_getpgrp_0" >&6 if test "$ac_cv_func_getpgrp_0" = getpgrp_0; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETPGRP_0 0 _ACEOF else cat >>confdefs.h <<\_ACEOF #define HAVE_GETPGRP_0 1 _ACEOF fi echo "$as_me:$LINENO: checking for setprgp form" >&5 echo $ECHO_N "checking for setprgp form... $ECHO_C" >&6 if test "${ac_cv_func_setpgrp_0+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { setpgrp(0,0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_setpgrp_0=setpgrp_0 else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_setpgrp_0=setpgrp fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_setpgrp_0" >&5 echo "${ECHO_T}$ac_cv_func_setpgrp_0" >&6 if test "$ac_cv_func_setpgrp_0" = setpgrp_0; then cat >>confdefs.h <<\_ACEOF #define HAVE_SETPGRP_0 1 _ACEOF fi echo "$as_me:$LINENO: checking for obsolete union wait compatibility" >&5 echo $ECHO_N "checking for obsolete union wait compatibility... $ECHO_C" >&6 if test "${ac_cv_unionwait+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { union wait x;WIFEXITED(x); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_unionwait=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_unionwait=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_unionwait" >&5 echo "${ECHO_T}$ac_cv_unionwait" >&6 if test "$ac_cv_unionwait" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_UNION_WAIT 1 _ACEOF fi echo "$as_me:$LINENO: checking for gethostname declaration" >&5 echo $ECHO_N "checking for gethostname declaration... $ECHO_C" >&6 if test "${ac_cv_decl_gethostname_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostname(1); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_gethostname_def=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_gethostname_def=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_gethostname_def" >&5 echo "${ECHO_T}$ac_cv_decl_gethostname_def" >&6 if test "$ac_cv_decl_gethostname_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETHOSTNAME_DEF 1 _ACEOF fi echo "$as_me:$LINENO: checking for innetgr declaration" >&5 echo $ECHO_N "checking for innetgr declaration... $ECHO_C" >&6 if test "${ac_cv_decl_innetgr_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_NETDB_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d", innetgr(1)); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_innetgr_def=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_innetgr_def=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_innetgr_def" >&5 echo "${ECHO_T}$ac_cv_decl_innetgr_def" >&6 if test "$ac_cv_decl_innetgr_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_INNETGR_DEF 1 _ACEOF fi echo "$as_me:$LINENO: checking for openlog declaration" >&5 echo $ECHO_N "checking for openlog declaration... $ECHO_C" >&6 if test "${ac_cv_decl_openlog_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_STDARG_H #include #endif #ifdef HAVE_SYSLOG_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",openlog); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_openlog_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_openlog_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_openlog_def" >&5 echo "${ECHO_T}$ac_cv_decl_openlog_def" >&6 if test "$ac_cv_decl_openlog_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_OPENLOG_DEF 1 _ACEOF fi echo "$as_me:$LINENO: checking for syslog declaration" >&5 echo $ECHO_N "checking for syslog declaration... $ECHO_C" >&6 if test "${ac_cv_decl_syslog_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef HAVE_STDARG_H #include #endif #ifdef HAVE_SYSLOG_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",syslog); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_syslog_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_syslog_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_syslog_def" >&5 echo "${ECHO_T}$ac_cv_decl_syslog_def" >&6 if test "$ac_cv_decl_syslog_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYSLOG_DEF 1 _ACEOF fi echo "$as_me:$LINENO: checking for struct in6_addr declaration" >&5 echo $ECHO_N "checking for struct in6_addr declaration... $ECHO_C" >&6 if test "${ac_cv_decl_in6_addr_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct in6_addr v; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_in6_addr_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_in6_addr_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_in6_addr_def" >&5 echo "${ECHO_T}$ac_cv_decl_in6_addr_def" >&6 if test "$ac_cv_decl_in6_addr_def" = yes; then cat >>confdefs.h <<\_ACEOF #define IN6_ADDR 1 _ACEOF fi echo "$as_me:$LINENO: checking for struct in_addr6 declaration (LINUX)" >&5 echo $ECHO_N "checking for struct in_addr6 declaration (LINUX)... $ECHO_C" >&6 if test "${ac_cv_decl_in_addr6_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct in_addr6 v; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_in_addr6_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_in_addr6_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_in_addr6_def" >&5 echo "${ECHO_T}$ac_cv_decl_in_addr6_def" >&6 if test "$ac_cv_decl_in_addr6_def" = yes; then cat >>confdefs.h <<\_ACEOF #define IN_ADDR6 1 _ACEOF fi echo "$as_me:$LINENO: checking for struct stat has st_mtimespec.tv_nsec" >&5 echo $ECHO_N "checking for struct stat has st_mtimespec.tv_nsec... $ECHO_C" >&6 if test "${ac_cv_decl_st_mtimespec_tv_nsec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #ifdef HAVE_SYS_TIME_H #include #endif #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct stat statb; statb.st_mtimespec.tv_nsec; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_st_mtimespec_tv_nsec=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_st_mtimespec_tv_nsec=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_st_mtimespec_tv_nsec" >&5 echo "${ECHO_T}$ac_cv_decl_st_mtimespec_tv_nsec" >&6 if test "$ac_cv_decl_st_mtimespec_tv_nsec" = yes; then cat >>confdefs.h <<_ACEOF #define ST_MTIMESPEC_TV_NSEC 1 _ACEOF fi echo "$as_me:$LINENO: checking for struct stat has st_mtimensec" >&5 echo $ECHO_N "checking for struct stat has st_mtimensec... $ECHO_C" >&6 if test "${ac_cv_decl_st_mtimensec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #if defined(HAVE_SYS_TIME_H) #include #endif #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct stat statb; statb.st_mtimensec; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_st_mtimensec=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_st_mtimensec=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_st_mtimensec" >&5 echo "${ECHO_T}$ac_cv_decl_st_mtimensec" >&6 if test "$ac_cv_decl_st_mtimensec" = yes; then cat >>confdefs.h <<_ACEOF #define ST_MTIMENSEC 1 _ACEOF fi echo "$as_me:$LINENO: checking for strcasecmp definition" >&5 echo $ECHO_N "checking for strcasecmp definition... $ECHO_C" >&6 if test "${ac_cv_decl_strcasecmp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #if defined(HAVE_STDLIB_H) #include #endif #if defined(HAVE_STRING_H) #include #endif #if defined(HAVE_STRINGS_H) #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { strcasecmp(1) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_strcasecmp=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_strcasecmp=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_strcasecmp" >&5 echo "${ECHO_T}$ac_cv_decl_strcasecmp" >&6 if test "$ac_cv_decl_strcasecmp" = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_STRCASECMP_DEF 1 _ACEOF fi echo "$as_me:$LINENO: checking for flock definition" >&5 echo $ECHO_N "checking for flock definition... $ECHO_C" >&6 if test "${ac_cv_decl_flock+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #if defined(HAVE_STDLIB_H) #include #endif #if defined(HAVE_SYS_FILE_H) #include #endif #if defined(HAVE_FCNTL_H) #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { flock(1) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_flock=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_flock=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_decl_flock" >&5 echo "${ECHO_T}$ac_cv_decl_flock" >&6 if test "$ac_cv_decl_flock" = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_FLOCK_DEF 1 _ACEOF fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # Extract the first word of "auxman", so it can be a program name with args. set dummy auxman; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_INSTALL_MAN+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$INSTALL_MAN"; then ac_cv_prog_INSTALL_MAN="$INSTALL_MAN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_INSTALL_MAN="auxman" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_INSTALL_MAN" && ac_cv_prog_INSTALL_MAN="$INSTALL -m 644" fi fi INSTALL_MAN=$ac_cv_prog_INSTALL_MAN if test -n "$INSTALL_MAN"; then echo "$as_me:$LINENO: result: $INSTALL_MAN" >&5 echo "${ECHO_T}$INSTALL_MAN" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \${MAKE}" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="${MAKE}"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi echo "$as_me:$LINENO: checking for shell" >&5 echo $ECHO_N "checking for shell... $ECHO_C" >&6 SHELL=/bin/sh echo "$as_me:$LINENO: result: using $SHELL (FORCED)" >&5 echo "${ECHO_T}using $SHELL (FORCED)" >&6 MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi echo "$as_me:$LINENO: checking whether NLS is requested" >&5 echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" USE_NLS=$enableval else USE_NLS=no fi; echo "$as_me:$LINENO: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then echo "$as_me:$LINENO: result: $MSGFMT" >&5 echo "${ECHO_T}$MSGFMT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then echo "$as_me:$LINENO: result: $GMSGFMT" >&5 echo "${ECHO_T}$GMSGFMT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then echo "$as_me:$LINENO: result: $XGETTEXT" >&5 echo "${ECHO_T}$XGETTEXT" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f messages.po # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGMERGE+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then echo "$as_me:$LINENO: result: $MSGMERGE" >&5 echo "${ECHO_T}$MSGMERGE" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$GMSGFMT" != ":"; then if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 GMSGFMT=":" fi fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 XGETTEXT=":" fi rm -f messages.po fi ac_config_commands="$ac_config_commands default-1" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by GCC" >&5 echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${acl_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then echo "$as_me:$LINENO: result: $LD" >&5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${acl_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 with_gnu_ld=$acl_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for shared library run path origin" >&5 echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 if test "${acl_cv_rpath+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 echo "${ECHO_T}$acl_cv_rpath" >&6 wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath or --disable-rpath was given. if test "${enable_rpath+set}" = set; then enableval="$enable_rpath" : else enable_rpath=yes fi; use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then withval="$with_libiconv_prefix" if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi; LIBICONV= LTLIBICONV= INCICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi echo "$as_me:$LINENO: checking whether NLS is requested" >&5 echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" USE_NLS=$enableval else USE_NLS=no fi; echo "$as_me:$LINENO: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 LIBINTL= LTLIBINTL= POSUB= if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext1_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_func_gnugettext1_libc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 gt_cv_func_gnugettext1_libc=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 if test "$gt_cv_func_gnugettext1_libc" != "yes"; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done echo "$as_me:$LINENO: checking for iconv" >&5 echo $ECHO_N "checking for iconv... $ECHO_C" >&6 if test "${am_cv_func_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_func_iconv=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_lib_iconv=yes am_cv_func_iconv=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 echo "${ECHO_T}$am_cv_func_iconv" >&6 if test "$am_cv_func_iconv" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ICONV 1 _ACEOF fi if test "$am_cv_lib_iconv" = yes; then echo "$as_me:$LINENO: checking how to link with libiconv" >&5 echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $LIBICONV" >&5 echo "${ECHO_T}$LIBICONV" >&6 else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix or --without-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then withval="$with_libintl_prefix" if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi; LIBINTL= LTLIBINTL= INCINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_func_gnugettext1_libintl=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 gt_cv_func_gnugettext1_libintl=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext1_libintl=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 fi if test "$gt_cv_func_gnugettext1_libc" = "yes" \ || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then cat >>confdefs.h <<\_ACEOF #define ENABLE_NLS 1 _ACEOF else USE_NLS=no fi fi echo "$as_me:$LINENO: checking whether to use NLS" >&5 echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 if test "$USE_NLS" = "yes"; then echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6 if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi echo "$as_me:$LINENO: result: $gt_source" >&5 echo "${ECHO_T}$gt_source" >&6 fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then echo "$as_me:$LINENO: checking how to link with libintl" >&5 echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $LIBINTL" >&5 echo "${ECHO_T}$LIBINTL" >&6 for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi cat >>confdefs.h <<\_ACEOF #define HAVE_GETTEXT 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi POSUB=po fi INTLLIBS="$LIBINTL" if test "$ac_cv_c_compiler_gnu" = yes; then CPPFLAGS="$CPPFLAGS -g -W -Wall -Werror -Wno-unused " CFLAGS="$CFLAGS -g -W -Wall -Werror -Wno-unused " fi; ac_config_files="$ac_config_files Makefile src/Makefile man/Makefile fonts/Makefile DOCS/Makefile UTILS/accounting.sh UTILS/sendhp.sh UTILS/supported UTILS/fixupdate src/extract_pjl src/wrapper po/Makefile.in" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overriden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if cmp -s $cache_file confcache; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # NLS nuisances. # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi (set +x; test -n "`(LANG=C; export LANG) 2>&1`") && { $as_unset LANG || test "${LANG+set}" != set; } || { LANG=C; export LANG; } (set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || { LC_ALL=C; export LC_ALL; } (set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || { LC_TIME=C; export LC_TIME; } (set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || { LC_CTYPE=C; export LC_CTYPE; } (set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || { LANGUAGE=C; export LANGUAGE; } (set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || { LC_COLLATE=C; export LC_COLLATE; } (set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || { LC_NUMERIC=C; export LC_NUMERIC; } (set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || { LC_MESSAGES=C; export LC_MESSAGES; } # Name of the executable. as_me=`(basename "$0") 2>/dev/null || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conftest.sh echo "exit 0" >>conftest.sh chmod +x conftest.sh if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conftest.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by $as_me, which was generated by GNU Autoconf 2.53. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.53, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` shift set dummy "$ac_option" "$ac_optarg" ${1+"$@"} shift ;; -*);; *) # This is not an option, so the user has probably given explicit # arguments. ac_need_defaults=false;; esac case $1 in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) shift CONFIG_FILES="$CONFIG_FILES $1" ac_need_defaults=false;; --header | --heade | --head | --hea ) shift CONFIG_HEADERS="$CONFIG_HEADERS $1" ac_need_defaults=false;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "fonts/Makefile" ) CONFIG_FILES="$CONFIG_FILES fonts/Makefile" ;; "DOCS/Makefile" ) CONFIG_FILES="$CONFIG_FILES DOCS/Makefile" ;; "UTILS/accounting.sh" ) CONFIG_FILES="$CONFIG_FILES UTILS/accounting.sh" ;; "UTILS/sendhp.sh" ) CONFIG_FILES="$CONFIG_FILES UTILS/sendhp.sh" ;; "UTILS/supported" ) CONFIG_FILES="$CONFIG_FILES UTILS/supported" ;; "UTILS/fixupdate" ) CONFIG_FILES="$CONFIG_FILES UTILS/fixupdate" ;; "src/extract_pjl" ) CONFIG_FILES="$CONFIG_FILES src/extract_pjl" ;; "src/wrapper" ) CONFIG_FILES="$CONFIG_FILES src/wrapper" ;; "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. : ${TMPDIR=/tmp} { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=$TMPDIR/cs$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@target@,$target,;t t s,@target_cpu@,$target_cpu,;t t s,@target_vendor@,$target_vendor,;t t s,@target_os@,$target_os,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@CPP@,$CPP,;t t s,@INSTALL@,$INSTALL,;t t s,@INSTALL_MAN@,$INSTALL_MAN,;t t s,@LDCC@,$LDCC,;t t s,@AWK@,$AWK,;t t s,@PERL@,$PERL,;t t s,@LOCALEDIR@,$LOCALEDIR,;t t s,@LN_S@,$LN_S,;t t s,@ECHO@,$ECHO,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@LIBTOOL@,$LIBTOOL,;t t s,@FILEUTIL@,$FILEUTIL,;t t s,@GZIP@,$GZIP,;t t s,@GS@,$GS,;t t s,@A2PS@,$A2PS,;t t s,@CAT@,$CAT,;t t s,@IFHP_CONF@,$IFHP_CONF,;t t s,@SNMP@,$SNMP,;t t s,@FOOMATIC_RIP@,$FOOMATIC_RIP,;t t s,@FOOMATIC@,$FOOMATIC,;t t s,@PAGE_SIZE@,$PAGE_SIZE,;t t s,@FILTER_DIR@,$FILTER_DIR,;t t s,@FONT_DIR@,$FONT_DIR,;t t s,@STRIP_OPTION@,$STRIP_OPTION,;t t s,@GSCHECK@,$GSCHECK,;t t s,@DEVFD3@,$DEVFD3,;t t s,@ARCHITECTURE@,$ARCHITECTURE,;t t s,@OSNAME@,$OSNAME,;t t s,@OSVERSION@,$OSVERSION,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t s,@USE_NLS@,$USE_NLS,;t t s,@MSGFMT@,$MSGFMT,;t t s,@GMSGFMT@,$GMSGFMT,;t t s,@XGETTEXT@,$XGETTEXT,;t t s,@MSGMERGE@,$MSGMERGE,;t t s,@LIBICONV@,$LIBICONV,;t t s,@LTLIBICONV@,$LTLIBICONV,;t t s,@INTLLIBS@,$INTLLIBS,;t t s,@LIBINTL@,$LIBINTL,;t t s,@LTLIBINTL@,$LTLIBINTL,;t t s,@POSUB@,$POSUB,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { case "$ac_dir" in [\\/]* | ?:[\\/]* ) as_incr_dir=;; *) as_incr_dir=.;; esac as_dummy="$ac_dir" for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do case $as_mkdir_dir in # Skip DOS drivespec ?:) as_incr_dir=$as_mkdir_dir ;; *) as_incr_dir=$as_incr_dir/$as_mkdir_dir test -d "$as_incr_dir" || mkdir "$as_incr_dir" || { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; } ;; esac done; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; *) # Relative if test -f "$f"; then # Build tree echo $f elif test -f "$srcdir/$f"; then # Source tree echo $srcdir/$f else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; *) # Relative if test -f "$f"; then # Build tree echo $f elif test -f "$srcdir/$f"; then # Source tree echo $srcdir/$f else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # egrep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if cmp -s $ac_file $tmp/config.h 2>/dev/null; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { case "$ac_dir" in [\\/]* | ?:[\\/]* ) as_incr_dir=;; *) as_incr_dir=.;; esac as_dummy="$ac_dir" for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do case $as_mkdir_dir in # Skip DOS drivespec ?:) as_incr_dir=$as_mkdir_dir ;; *) as_incr_dir=$as_incr_dir/$as_mkdir_dir test -d "$as_incr_dir" || mkdir "$as_incr_dir" || { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; } ;; esac done; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in default-1 ) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: exec 5>/dev/null $SHELL $CONFIG_STATUS || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi ifhp-3.5.20/install-sh0100755000175100017510000001124310130541264014763 0ustar papowellpapowell#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. # # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" tranformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 ifhp-3.5.20/mkinstalldirs0100755000175100017510000000370410130541264015570 0ustar papowellpapowell#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain errstatus=0 dirmode="" usage="\ Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" 1>&2 exit 0 ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac case $dirmode in '') if mkdir -p -- . 2>/dev/null; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" fi ;; *) if mkdir -m "$dirmode" -p -- . 2>/dev/null; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" fi ;; esac for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr="" chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp="$pathcomp/" done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # End: # mkinstalldirs ends here ifhp-3.5.20/po/0040755000175100017510000000000010130541267013402 5ustar papowellpapowellifhp-3.5.20/po/fr.po0100644000175100017510000003521310130541265014350 0ustar papowellpapowell# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: ifhp 3.5.20\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2004-09-24 13:18-0700\n" "PO-Revision-Date: 2000-08-21 18:06-0700\n" "Last-Translator: Patrick Powell \n" "Language-Team: fr \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: src/accounting.c:38 #, c-format msgid "Do_accounting: pagecounter %d" msgstr "" #: src/accounting.c:40 #, c-format msgid "Do_accounting: pagecounter %d, pages %d" msgstr "" #: src/accounting.c:113 msgid "ACCOUNTING" msgstr "" #: src/accounting.c:117 #, c-format msgid "Do_accounting: script '%s' failed" msgstr "" #: src/ifhp.c:129 msgid "ifhp: stdin is not open" msgstr "" #: src/ifhp.c:133 msgid "ifhp: stdout is not open" msgstr "" #: src/ifhp.c:138 msgid "ifhp: open /dev/null failed" msgstr "" #: src/ifhp.c:227 msgid "TRANSLATE TEST" msgstr "" #: src/ifhp.c:238 #, c-format msgid "main: '%s'" msgstr "" #: src/ifhp.c:243 #, c-format msgid "main: no config file information in '%s'" msgstr "" #: src/ifhp.c:316 msgid "main: you opened the statusfile too early!!!" msgstr "" #: src/ifhp.c:320 #, c-format msgid "main: using model '%s'" msgstr "" #: src/ifhp.c:320 msgid "DEFAULT" msgstr "" #: src/ifhp.c:342 #, c-format msgid "main: Appsocket and bad printcap :lp='%s'" msgstr "" #: src/ifhp.c:369 msgid "ifhp: requires socketpair() system call for snmp monitoring" msgstr "" #: src/ifhp.c:373 msgid "ifhp: socketpair() failed" msgstr "" #: src/ifhp.c:378 msgid "ifhp: missing snmp_sync_status value" msgstr "" #: src/ifhp.c:382 msgid "ifhp: missing snmp_end_status value" msgstr "" #: src/ifhp.c:386 msgid "ifhp: missing snmp_monitor value" msgstr "" #: src/ifhp.c:396 msgid "ifhp: missing snmp_dev device" msgstr "" #: src/ifhp.c:406 #, c-format msgid "ifhp: missing snmp_program '%s'" msgstr "" #: src/ifhp.c:411 msgid "ifhp: fork failed" msgstr "" #: src/ifhp.c:420 src/ifhp.c:5378 src/ifhp.c:5822 #, c-format msgid "execv '%s' failed - %s" msgstr "" #: src/ifhp.c:797 #, c-format msgid "Put_outbuf_len: realloc %d failed" msgstr "" #: src/ifhp.c:918 #, c-format msgid "Pr_status: printer status '%s'" msgstr "" #: src/ifhp.c:1147 #, c-format msgid "Check_device_status: code = %s, '%s'%s" msgstr "" #: src/ifhp.c:1152 #, c-format msgid "Check_device_status: write(fd %d) failed" msgstr "" #: src/ifhp.c:1156 msgid "Check_device_status: lseek failed" msgstr "" #: src/ifhp.c:1158 msgid "ALERT" msgstr "" #: src/ifhp.c:1206 msgid "yes" msgstr "" #: src/ifhp.c:1207 msgid "on" msgstr "" #: src/ifhp.c:1253 msgid "Process_job: setting up printer" msgstr "" #: src/ifhp.c:1258 msgid "Process_job: dup(0) failed" msgstr "" #: src/ifhp.c:1262 msgid "Process_job: dup(1) failed" msgstr "" #: src/ifhp.c:1265 msgid "Process_job: starting OF mode passthrough" msgstr "" #: src/ifhp.c:1271 msgid "Process_job: lseek of tempfd failed" msgstr "" #: src/ifhp.c:1275 msgid "Process_job: ftruncate of tempfd failed" msgstr "" #: src/ifhp.c:1280 #, c-format msgid "Process_job: tempfd dup2(%d,1) failed" msgstr "" #: src/ifhp.c:1285 msgid "Process_job: stat failed" msgstr "" #: src/ifhp.c:1292 msgid "Process_job: lseek failed" msgstr "" #: src/ifhp.c:1296 msgid "Process_job: tempfd dup2() failed" msgstr "" #: src/ifhp.c:1303 src/ifhp.c:1346 #, c-format msgid "Process_job: outfd dup2(%d,1) failed" msgstr "" #: src/ifhp.c:1306 #, c-format msgid "Process_job: sending %0.0f bytes of OF input" msgstr "" #: src/ifhp.c:1319 msgid "Process_job: using shutdown on appsocket connection" msgstr "" #: src/ifhp.c:1331 msgid "Process_job: OF process suspending" msgstr "" #: src/ifhp.c:1337 msgid "Process_job: OF process running" msgstr "" #: src/ifhp.c:1341 #, c-format msgid "Process_job: infd dup2(%d,1) failed" msgstr "" #: src/ifhp.c:1353 msgid "Process_job: ending OF mode passthrough" msgstr "" #: src/ifhp.c:1357 msgid "Process_job: sending job file" msgstr "" #: src/ifhp.c:1359 msgid "Process_job: sent job file" msgstr "" #: src/ifhp.c:1363 msgid "Process_job: done" msgstr "" #: src/ifhp.c:1383 msgid "Start_of_job: fd 1 not open" msgstr "" #: src/ifhp.c:1442 msgid "Start_of_job: timeout" msgstr "" #: src/ifhp.c:1472 msgid "End_of_job: FD 1 IS CLOSED AND ifhp DID NOT CLOSE IT" msgstr "" #: src/ifhp.c:1503 msgid "End_of_job: timeout" msgstr "" #: src/ifhp.c:1826 msgid "plp_block_all_signals: sigprocmask failed" msgstr "" #: src/ifhp.c:1840 msgid "plp_unblock_all_signals: sigprocmask failed" msgstr "" #: src/ifhp.c:1850 msgid "plp_set_signal_mask: sigprocmask failed" msgstr "" #: src/ifhp.c:1868 msgid "plp_unblock_one_signal: sigprocmask failed" msgstr "" #: src/ifhp.c:1883 msgid "plp_block_one_signal: sigprocmask failed" msgstr "" #: src/ifhp.c:2061 src/ifhp.c:2204 msgid "Write_read_timeout: write error" msgstr "" #: src/ifhp.c:2098 msgid "Write_read_timeout: EOF or TIMEOUT on output" msgstr "" #: src/ifhp.c:2107 msgid "Write_read_timeout: EOF on input" msgstr "" #: src/ifhp.c:2158 msgid "Write_read_timeout: select error" msgstr "" #: src/ifhp.c:2171 msgid "Write_read_timeout: read from printer failed" msgstr "" #: src/ifhp.c:2627 #, c-format msgid "Fix_option_str: bad form '%s'" msgstr "" #: src/ifhp.c:2809 #, c-format msgid "Find_sub_value: bad conditional format '%s'" msgstr "" #: src/ifhp.c:3010 #, c-format msgid "Font_download: no value for %sfontdir" msgstr "" #: src/ifhp.c:3031 msgid "Font_download: no 'font' value" msgstr "" #: src/ifhp.c:3319 #, c-format msgid "" "Pjl_setvar: WARNING - value for PJL variable '%s' = '%s' is not one of '%s'" msgstr "" #: src/ifhp.c:3329 #, c-format msgid "Pjl_setvar: WARNING - missing value for PJL variable '%s'" msgstr "" #: src/ifhp.c:3368 #, c-format msgid "" "Pjl_setvar: WARNING - bad value for PJL variable '%s' = '%s', not in range %s" msgstr "" #: src/ifhp.c:3376 #, c-format msgid "Pjl_setvar: WARNING - unknown type for PJL variable '%s' = '%s', %s" msgstr "" #: src/ifhp.c:3400 #, c-format msgid "Pjl_setvar: PJL option too long! '%s'" msgstr "" #: src/ifhp.c:3510 #, c-format msgid "Do_sync: sync '%s' and method not supported" msgstr "" #: src/ifhp.c:3518 #, c-format msgid "Do_sync: getting sync using '%s'%s" msgstr "" #: src/ifhp.c:3572 #, c-format msgid "Do_sync: sync '%s' and no ps_status_code value" msgstr "" #: src/ifhp.c:3618 msgid "Do_sync: printer not detected, trying again" msgstr "" #: src/ifhp.c:3619 msgid "Do_sync: Perhaps printer offline or not detected by Operating System" msgstr "" #: src/ifhp.c:3620 msgid "" "Do_sync: If on a parallel port then parallel port may not be bidirectional" msgstr "" #: src/ifhp.c:3621 msgid "Do_sync: Use the 'status@' filter option to suppress this check" msgstr "" #: src/ifhp.c:3622 msgid "Do_sync: See the ifhp man page or the ifhp HOWTO for details" msgstr "" #: src/ifhp.c:3660 msgid "Do_sync: EOF on connection" msgstr "" #: src/ifhp.c:3666 #, c-format msgid "Do_sync: error '%s'" msgstr "" #: src/ifhp.c:3675 msgid "Do_sync: sync done" msgstr "" #: src/ifhp.c:3732 #, c-format msgid "Do_waitend: invalid endstatus value '%s'" msgstr "" #: src/ifhp.c:3747 #, c-format msgid "Do_waitend: waitend '%s' and interactive method not supported" msgstr "" #: src/ifhp.c:3757 #, c-format msgid "Do_waitend: getting end using '%s'%s" msgstr "" #: src/ifhp.c:3841 #, c-format msgid "Do_waitend: sleep %d before getting SNMP status" msgstr "" #: src/ifhp.c:3911 msgid "Do_waitend: EOF reading status" msgstr "" #: src/ifhp.c:3956 msgid "Do_waitend: job canceled" msgstr "" #: src/ifhp.c:3962 msgid "Do_waitend: ECHO END detected" msgstr "" #: src/ifhp.c:3993 #, c-format msgid "Do_waitend: error '%s'" msgstr "" #: src/ifhp.c:3998 #, c-format msgid "Do_waitend: no end response from printer, timeout %d" msgstr "" #: src/ifhp.c:4001 #, c-format msgid "Do_waitend: %s detected %s END" msgstr "" #: src/ifhp.c:4001 msgid "BANNER PAGE" msgstr "" #: src/ifhp.c:4001 msgid "JOB" msgstr "" #: src/ifhp.c:4069 #, c-format msgid "Check_pagecount: pagecount '%s' and method not supported" msgstr "" #: src/ifhp.c:4077 #, c-format msgid "Check_pagecount: pagecount using '%s'%s" msgstr "" #: src/ifhp.c:4102 #, c-format msgid "Do_pagecount: pagecounter %d from program" msgstr "" #: src/ifhp.c:4104 #, c-format msgid "Do_pagecount: pagecounter %d" msgstr "" #: src/ifhp.c:4110 #, c-format msgid "" "Do_pagecount: polling pagecounter %d times at %d second intervals, max " "timeout %d" msgstr "" #: src/ifhp.c:4133 msgid "Do_pagecount: timeout getting pagecount" msgstr "" #: src/ifhp.c:4136 msgid "Do_pagecount: IO error getting pagecount" msgstr "" #: src/ifhp.c:4155 #, c-format msgid "Do_pagecount: pagecounter %d after %d attempts" msgstr "" #: src/ifhp.c:4201 msgid "Current_pagecounter: no ps_pagecount_code config info" msgstr "" #: src/ifhp.c:4254 msgid "Current_pagecounter: EOF reading status" msgstr "" #: src/ifhp.c:4264 #, c-format msgid "Current_pagecounter: error '%s'" msgstr "" #: src/ifhp.c:4325 msgid "Send_job: starting transfer" msgstr "" #: src/ifhp.c:4346 src/ifhp.c:4365 src/ifhp.c:4409 src/ifhp.c:4548 #: src/ifhp.c:4602 src/ifhp.c:4688 msgid "Send_job: lseek failed" msgstr "" #: src/ifhp.c:4357 src/ifhp.c:4611 src/ifhp.c:4723 src/ifhp.c:4856 msgid "Send_job: read error on stdin" msgstr "" #: src/ifhp.c:4360 src/ifhp.c:4726 msgid "Send_job: zero length job file" msgstr "" #: src/ifhp.c:4376 msgid "Send_job: missing file_util_path value" msgstr "" #: src/ifhp.c:4413 msgid "Send_job: fstat3 failed" msgstr "" #: src/ifhp.c:4416 #, c-format msgid "Send_job: initial job type '%s', size %d" msgstr "" #: src/ifhp.c:4417 msgid "Send_job: HPGL/2 flag set" msgstr "" #: src/ifhp.c:4455 #, c-format msgid "Send_job: wrong number of fields in 'file_output_match' - '%s'" msgstr "" #: src/ifhp.c:4478 #, c-format msgid "Send_job: decoded job type '%s'" msgstr "" #: src/ifhp.c:4488 msgid "Send_job: job is PJL and PJL not supported" msgstr "" #: src/ifhp.c:4493 msgid "Send_job: job is HPGL2 and neither PCL nor HPGL2 are supported" msgstr "" #: src/ifhp.c:4496 msgid "Send_job: job is PCL and PCL not supported" msgstr "" #: src/ifhp.c:4500 msgid "Send_job: HPGL2 not supported, resorting to PCL" msgstr "" #: src/ifhp.c:4505 msgid "Send_job: job is PostScript and PostScript not supported" msgstr "" #: src/ifhp.c:4515 msgid "Send_job: foomatic enabled and no path to foomatic-rip" msgstr "" #: src/ifhp.c:4517 msgid "Send_job: foomatic enabled and no PPD file specified" msgstr "" #: src/ifhp.c:4527 msgid "Send_job: job is Text and Text not supported" msgstr "" #: src/ifhp.c:4533 msgid "Send_job: filter wanted and no filter specified" msgstr "" #: src/ifhp.c:4536 #, c-format msgid "Send_job: cannot process language '%s'" msgstr "" #: src/ifhp.c:4544 #, c-format msgid "Send_job: job type '%s', converter '%s'" msgstr "" #: src/ifhp.c:4560 msgid "CONVERTER" msgstr "" #: src/ifhp.c:4567 #, c-format msgid "Send_job: converter failed, exit code %d" msgstr "" #: src/ifhp.c:4578 msgid "Send_job: fstat2 failed" msgstr "" #: src/ifhp.c:4580 #, c-format msgid "Send_job: converter done, output %ld bytes" msgstr "" #: src/ifhp.c:4584 msgid "Send_job: zero length conversion output" msgstr "" #: src/ifhp.c:4589 msgid "Send_job: dup2 failed" msgstr "" #: src/ifhp.c:4593 #, c-format msgid "Send_job: close(tempfd %d) failed" msgstr "" #: src/ifhp.c:4599 #, c-format msgid "Send_job: job type '%s', stripping leading PJL " msgstr "" #: src/ifhp.c:4643 msgid "Send_job: write error to tempfile" msgstr "" #: src/ifhp.c:4652 src/ifhp.c:5093 msgid "Make_stdin_file: dup2 failed" msgstr "" #: src/ifhp.c:4659 #, c-format msgid "Send_job: job type '%s'" msgstr "" #: src/ifhp.c:4683 msgid "Send_job: cannot fstat fd 0" msgstr "" #: src/ifhp.c:4707 #, c-format msgid "Send_job: transferring %0.0f bytes" msgstr "" #: src/ifhp.c:4821 msgid "Send_job: job failed during copy" msgstr "" #: src/ifhp.c:4832 src/ifhp.c:4840 #, c-format msgid "Send_job: %d percent done" msgstr "" #: src/ifhp.c:4842 #, c-format msgid "Send_job: %d Kbytes done" msgstr "" #: src/ifhp.c:4923 msgid "Process_OF_mode: ftruncate fd 1 failed" msgstr "" #: src/ifhp.c:4936 src/ifhp.c:4941 src/ifhp.c:4946 msgid "Process_OF_mode: write failed" msgstr "" #: src/ifhp.c:4985 #, c-format msgid "Use_file_util: file program = '%s'" msgstr "" #: src/ifhp.c:4990 src/ifhp.c:5000 msgid "Use_file_util: lseek failed" msgstr "" #: src/ifhp.c:4993 msgid "FILE_UTIL" msgstr "" #: src/ifhp.c:4996 #, c-format msgid "Use_file_util: exit code %d" msgstr "" #: src/ifhp.c:5004 msgid "Use_file_util: read failed" msgstr "" #: src/ifhp.c:5026 #, c-format msgid "Use_file_util: file information = '%s'" msgstr "" #: src/ifhp.c:5059 msgid "Make_stdin_file: cannot fstat fd 1" msgstr "" #: src/ifhp.c:5074 #, c-format msgid "Make_stdin_file: write to tempfile fd %d failed" msgstr "" #: src/ifhp.c:5085 msgid "Make_stdin_file: read from stdin" msgstr "" #: src/ifhp.c:5099 msgid "Make_stdin_file: lseek failed" msgstr "" #: src/ifhp.c:5134 msgid "ifhp: fd is not open" msgstr "" #: src/ifhp.c:5159 #, c-format msgid "Fd_readable: cannot fstat fd %d" msgstr "" #: src/ifhp.c:5300 msgid "Term_job: job error on cleanup strings" msgstr "" #: src/ifhp.c:5326 #, c-format msgid "" "Filter_file: WARNING - 'ZOPTS' and 'TOPS' conversion options replaced by {Z} " "and {T} - '%s'" msgstr "" #: src/ifhp.c:5349 msgid "Filter_file: pipe failed" msgstr "" #: src/ifhp.c:5356 msgid "Filter_file: fork failed" msgstr "" #: src/ifhp.c:5360 src/ifhp.c:5364 msgid "Filter_file: open(/dev/null) failed" msgstr "" #: src/ifhp.c:5370 msgid "Filter_file: dup2 failed" msgstr "" #: src/ifhp.c:5393 #, c-format msgid "Filter_file: started %s- '%s'" msgstr "" #: src/ifhp.c:5402 src/ifhp.c:5408 #, c-format msgid "Filter_file: '%s' msg '%s'" msgstr "" #: src/ifhp.c:5414 msgid "ifhp: waitpid and no child!" msgstr "" #: src/ifhp.c:5426 #, c-format msgid "Filter_file: converter process died with signal %d, '%s'" msgstr "" #: src/ifhp.c:5702 #, c-format msgid "" "Select_model_info: looking for '%s' and recursion too deep at model '%s'" msgstr "" #: src/ifhp.c:5708 #, c-format msgid "" "Select_model_info: looking for '%s' %s cannot find information for model '%s'" msgstr "" #: src/ifhp.c:5801 msgid "Get_prog_status: pipe failed" msgstr "" #: src/ifhp.c:5808 msgid "Get_prog_status: fork failed" msgstr "" #: src/ifhp.c:5814 msgid "Get_prog_status: dup2 failed" msgstr "" #: src/ifhp.c:5837 #, c-format msgid "Get_prog_status: started '%s'" msgstr "" #: src/ifhp.c:5850 msgid "Get_prog_status: waitpid and no child!" msgstr "" #: src/ifhp.c:5864 #, c-format msgid "Get_prog_status: status process exited with %d, '%s'" msgstr "" #: src/ifhp.c:5876 #, c-format msgid "Get_prog_status: converter process died with signal %d, '%s'" msgstr "" ifhp-3.5.20/po/ifhp.pot0100644000175100017510000003532010130541265015052 0ustar papowellpapowell# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2004-09-24 13:18-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: src/accounting.c:38 #, c-format msgid "Do_accounting: pagecounter %d" msgstr "" #: src/accounting.c:40 #, c-format msgid "Do_accounting: pagecounter %d, pages %d" msgstr "" #: src/accounting.c:113 msgid "ACCOUNTING" msgstr "" #: src/accounting.c:117 #, c-format msgid "Do_accounting: script '%s' failed" msgstr "" #: src/ifhp.c:129 msgid "ifhp: stdin is not open" msgstr "" #: src/ifhp.c:133 msgid "ifhp: stdout is not open" msgstr "" #: src/ifhp.c:138 msgid "ifhp: open /dev/null failed" msgstr "" #: src/ifhp.c:227 msgid "TRANSLATE TEST" msgstr "" #: src/ifhp.c:238 #, c-format msgid "main: '%s'" msgstr "" #: src/ifhp.c:243 #, c-format msgid "main: no config file information in '%s'" msgstr "" #: src/ifhp.c:316 msgid "main: you opened the statusfile too early!!!" msgstr "" #: src/ifhp.c:320 #, c-format msgid "main: using model '%s'" msgstr "" #: src/ifhp.c:320 msgid "DEFAULT" msgstr "" #: src/ifhp.c:342 #, c-format msgid "main: Appsocket and bad printcap :lp='%s'" msgstr "" #: src/ifhp.c:369 msgid "ifhp: requires socketpair() system call for snmp monitoring" msgstr "" #: src/ifhp.c:373 msgid "ifhp: socketpair() failed" msgstr "" #: src/ifhp.c:378 msgid "ifhp: missing snmp_sync_status value" msgstr "" #: src/ifhp.c:382 msgid "ifhp: missing snmp_end_status value" msgstr "" #: src/ifhp.c:386 msgid "ifhp: missing snmp_monitor value" msgstr "" #: src/ifhp.c:396 msgid "ifhp: missing snmp_dev device" msgstr "" #: src/ifhp.c:406 #, c-format msgid "ifhp: missing snmp_program '%s'" msgstr "" #: src/ifhp.c:411 msgid "ifhp: fork failed" msgstr "" #: src/ifhp.c:420 src/ifhp.c:5378 src/ifhp.c:5822 #, c-format msgid "execv '%s' failed - %s" msgstr "" #: src/ifhp.c:797 #, c-format msgid "Put_outbuf_len: realloc %d failed" msgstr "" #: src/ifhp.c:918 #, c-format msgid "Pr_status: printer status '%s'" msgstr "" #: src/ifhp.c:1147 #, c-format msgid "Check_device_status: code = %s, '%s'%s" msgstr "" #: src/ifhp.c:1152 #, c-format msgid "Check_device_status: write(fd %d) failed" msgstr "" #: src/ifhp.c:1156 msgid "Check_device_status: lseek failed" msgstr "" #: src/ifhp.c:1158 msgid "ALERT" msgstr "" #: src/ifhp.c:1206 msgid "yes" msgstr "" #: src/ifhp.c:1207 msgid "on" msgstr "" #: src/ifhp.c:1253 msgid "Process_job: setting up printer" msgstr "" #: src/ifhp.c:1258 msgid "Process_job: dup(0) failed" msgstr "" #: src/ifhp.c:1262 msgid "Process_job: dup(1) failed" msgstr "" #: src/ifhp.c:1265 msgid "Process_job: starting OF mode passthrough" msgstr "" #: src/ifhp.c:1271 msgid "Process_job: lseek of tempfd failed" msgstr "" #: src/ifhp.c:1275 msgid "Process_job: ftruncate of tempfd failed" msgstr "" #: src/ifhp.c:1280 #, c-format msgid "Process_job: tempfd dup2(%d,1) failed" msgstr "" #: src/ifhp.c:1285 msgid "Process_job: stat failed" msgstr "" #: src/ifhp.c:1292 msgid "Process_job: lseek failed" msgstr "" #: src/ifhp.c:1296 msgid "Process_job: tempfd dup2() failed" msgstr "" #: src/ifhp.c:1303 src/ifhp.c:1346 #, c-format msgid "Process_job: outfd dup2(%d,1) failed" msgstr "" #: src/ifhp.c:1306 #, c-format msgid "Process_job: sending %0.0f bytes of OF input" msgstr "" #: src/ifhp.c:1319 msgid "Process_job: using shutdown on appsocket connection" msgstr "" #: src/ifhp.c:1331 msgid "Process_job: OF process suspending" msgstr "" #: src/ifhp.c:1337 msgid "Process_job: OF process running" msgstr "" #: src/ifhp.c:1341 #, c-format msgid "Process_job: infd dup2(%d,1) failed" msgstr "" #: src/ifhp.c:1353 msgid "Process_job: ending OF mode passthrough" msgstr "" #: src/ifhp.c:1357 msgid "Process_job: sending job file" msgstr "" #: src/ifhp.c:1359 msgid "Process_job: sent job file" msgstr "" #: src/ifhp.c:1363 msgid "Process_job: done" msgstr "" #: src/ifhp.c:1383 msgid "Start_of_job: fd 1 not open" msgstr "" #: src/ifhp.c:1442 msgid "Start_of_job: timeout" msgstr "" #: src/ifhp.c:1472 msgid "End_of_job: FD 1 IS CLOSED AND ifhp DID NOT CLOSE IT" msgstr "" #: src/ifhp.c:1503 msgid "End_of_job: timeout" msgstr "" #: src/ifhp.c:1826 msgid "plp_block_all_signals: sigprocmask failed" msgstr "" #: src/ifhp.c:1840 msgid "plp_unblock_all_signals: sigprocmask failed" msgstr "" #: src/ifhp.c:1850 msgid "plp_set_signal_mask: sigprocmask failed" msgstr "" #: src/ifhp.c:1868 msgid "plp_unblock_one_signal: sigprocmask failed" msgstr "" #: src/ifhp.c:1883 msgid "plp_block_one_signal: sigprocmask failed" msgstr "" #: src/ifhp.c:2061 src/ifhp.c:2204 msgid "Write_read_timeout: write error" msgstr "" #: src/ifhp.c:2098 msgid "Write_read_timeout: EOF or TIMEOUT on output" msgstr "" #: src/ifhp.c:2107 msgid "Write_read_timeout: EOF on input" msgstr "" #: src/ifhp.c:2158 msgid "Write_read_timeout: select error" msgstr "" #: src/ifhp.c:2171 msgid "Write_read_timeout: read from printer failed" msgstr "" #: src/ifhp.c:2627 #, c-format msgid "Fix_option_str: bad form '%s'" msgstr "" #: src/ifhp.c:2809 #, c-format msgid "Find_sub_value: bad conditional format '%s'" msgstr "" #: src/ifhp.c:3010 #, c-format msgid "Font_download: no value for %sfontdir" msgstr "" #: src/ifhp.c:3031 msgid "Font_download: no 'font' value" msgstr "" #: src/ifhp.c:3319 #, c-format msgid "" "Pjl_setvar: WARNING - value for PJL variable '%s' = '%s' is not one of '%s'" msgstr "" #: src/ifhp.c:3329 #, c-format msgid "Pjl_setvar: WARNING - missing value for PJL variable '%s'" msgstr "" #: src/ifhp.c:3368 #, c-format msgid "" "Pjl_setvar: WARNING - bad value for PJL variable '%s' = '%s', not in range %s" msgstr "" #: src/ifhp.c:3376 #, c-format msgid "Pjl_setvar: WARNING - unknown type for PJL variable '%s' = '%s', %s" msgstr "" #: src/ifhp.c:3400 #, c-format msgid "Pjl_setvar: PJL option too long! '%s'" msgstr "" #: src/ifhp.c:3510 #, c-format msgid "Do_sync: sync '%s' and method not supported" msgstr "" #: src/ifhp.c:3518 #, c-format msgid "Do_sync: getting sync using '%s'%s" msgstr "" #: src/ifhp.c:3572 #, c-format msgid "Do_sync: sync '%s' and no ps_status_code value" msgstr "" #: src/ifhp.c:3618 msgid "Do_sync: printer not detected, trying again" msgstr "" #: src/ifhp.c:3619 msgid "Do_sync: Perhaps printer offline or not detected by Operating System" msgstr "" #: src/ifhp.c:3620 msgid "" "Do_sync: If on a parallel port then parallel port may not be bidirectional" msgstr "" #: src/ifhp.c:3621 msgid "Do_sync: Use the 'status@' filter option to suppress this check" msgstr "" #: src/ifhp.c:3622 msgid "Do_sync: See the ifhp man page or the ifhp HOWTO for details" msgstr "" #: src/ifhp.c:3660 msgid "Do_sync: EOF on connection" msgstr "" #: src/ifhp.c:3666 #, c-format msgid "Do_sync: error '%s'" msgstr "" #: src/ifhp.c:3675 msgid "Do_sync: sync done" msgstr "" #: src/ifhp.c:3732 #, c-format msgid "Do_waitend: invalid endstatus value '%s'" msgstr "" #: src/ifhp.c:3747 #, c-format msgid "Do_waitend: waitend '%s' and interactive method not supported" msgstr "" #: src/ifhp.c:3757 #, c-format msgid "Do_waitend: getting end using '%s'%s" msgstr "" #: src/ifhp.c:3841 #, c-format msgid "Do_waitend: sleep %d before getting SNMP status" msgstr "" #: src/ifhp.c:3911 msgid "Do_waitend: EOF reading status" msgstr "" #: src/ifhp.c:3956 msgid "Do_waitend: job canceled" msgstr "" #: src/ifhp.c:3962 msgid "Do_waitend: ECHO END detected" msgstr "" #: src/ifhp.c:3993 #, c-format msgid "Do_waitend: error '%s'" msgstr "" #: src/ifhp.c:3998 #, c-format msgid "Do_waitend: no end response from printer, timeout %d" msgstr "" #: src/ifhp.c:4001 #, c-format msgid "Do_waitend: %s detected %s END" msgstr "" #: src/ifhp.c:4001 msgid "BANNER PAGE" msgstr "" #: src/ifhp.c:4001 msgid "JOB" msgstr "" #: src/ifhp.c:4069 #, c-format msgid "Check_pagecount: pagecount '%s' and method not supported" msgstr "" #: src/ifhp.c:4077 #, c-format msgid "Check_pagecount: pagecount using '%s'%s" msgstr "" #: src/ifhp.c:4102 #, c-format msgid "Do_pagecount: pagecounter %d from program" msgstr "" #: src/ifhp.c:4104 #, c-format msgid "Do_pagecount: pagecounter %d" msgstr "" #: src/ifhp.c:4110 #, c-format msgid "" "Do_pagecount: polling pagecounter %d times at %d second intervals, max " "timeout %d" msgstr "" #: src/ifhp.c:4133 msgid "Do_pagecount: timeout getting pagecount" msgstr "" #: src/ifhp.c:4136 msgid "Do_pagecount: IO error getting pagecount" msgstr "" #: src/ifhp.c:4155 #, c-format msgid "Do_pagecount: pagecounter %d after %d attempts" msgstr "" #: src/ifhp.c:4201 msgid "Current_pagecounter: no ps_pagecount_code config info" msgstr "" #: src/ifhp.c:4254 msgid "Current_pagecounter: EOF reading status" msgstr "" #: src/ifhp.c:4264 #, c-format msgid "Current_pagecounter: error '%s'" msgstr "" #: src/ifhp.c:4325 msgid "Send_job: starting transfer" msgstr "" #: src/ifhp.c:4346 src/ifhp.c:4365 src/ifhp.c:4409 src/ifhp.c:4548 #: src/ifhp.c:4602 src/ifhp.c:4688 msgid "Send_job: lseek failed" msgstr "" #: src/ifhp.c:4357 src/ifhp.c:4611 src/ifhp.c:4723 src/ifhp.c:4856 msgid "Send_job: read error on stdin" msgstr "" #: src/ifhp.c:4360 src/ifhp.c:4726 msgid "Send_job: zero length job file" msgstr "" #: src/ifhp.c:4376 msgid "Send_job: missing file_util_path value" msgstr "" #: src/ifhp.c:4413 msgid "Send_job: fstat3 failed" msgstr "" #: src/ifhp.c:4416 #, c-format msgid "Send_job: initial job type '%s', size %d" msgstr "" #: src/ifhp.c:4417 msgid "Send_job: HPGL/2 flag set" msgstr "" #: src/ifhp.c:4455 #, c-format msgid "Send_job: wrong number of fields in 'file_output_match' - '%s'" msgstr "" #: src/ifhp.c:4478 #, c-format msgid "Send_job: decoded job type '%s'" msgstr "" #: src/ifhp.c:4488 msgid "Send_job: job is PJL and PJL not supported" msgstr "" #: src/ifhp.c:4493 msgid "Send_job: job is HPGL2 and neither PCL nor HPGL2 are supported" msgstr "" #: src/ifhp.c:4496 msgid "Send_job: job is PCL and PCL not supported" msgstr "" #: src/ifhp.c:4500 msgid "Send_job: HPGL2 not supported, resorting to PCL" msgstr "" #: src/ifhp.c:4505 msgid "Send_job: job is PostScript and PostScript not supported" msgstr "" #: src/ifhp.c:4515 msgid "Send_job: foomatic enabled and no path to foomatic-rip" msgstr "" #: src/ifhp.c:4517 msgid "Send_job: foomatic enabled and no PPD file specified" msgstr "" #: src/ifhp.c:4527 msgid "Send_job: job is Text and Text not supported" msgstr "" #: src/ifhp.c:4533 msgid "Send_job: filter wanted and no filter specified" msgstr "" #: src/ifhp.c:4536 #, c-format msgid "Send_job: cannot process language '%s'" msgstr "" #: src/ifhp.c:4544 #, c-format msgid "Send_job: job type '%s', converter '%s'" msgstr "" #: src/ifhp.c:4560 msgid "CONVERTER" msgstr "" #: src/ifhp.c:4567 #, c-format msgid "Send_job: converter failed, exit code %d" msgstr "" #: src/ifhp.c:4578 msgid "Send_job: fstat2 failed" msgstr "" #: src/ifhp.c:4580 #, c-format msgid "Send_job: converter done, output %ld bytes" msgstr "" #: src/ifhp.c:4584 msgid "Send_job: zero length conversion output" msgstr "" #: src/ifhp.c:4589 msgid "Send_job: dup2 failed" msgstr "" #: src/ifhp.c:4593 #, c-format msgid "Send_job: close(tempfd %d) failed" msgstr "" #: src/ifhp.c:4599 #, c-format msgid "Send_job: job type '%s', stripping leading PJL " msgstr "" #: src/ifhp.c:4643 msgid "Send_job: write error to tempfile" msgstr "" #: src/ifhp.c:4652 src/ifhp.c:5093 msgid "Make_stdin_file: dup2 failed" msgstr "" #: src/ifhp.c:4659 #, c-format msgid "Send_job: job type '%s'" msgstr "" #: src/ifhp.c:4683 msgid "Send_job: cannot fstat fd 0" msgstr "" #: src/ifhp.c:4707 #, c-format msgid "Send_job: transferring %0.0f bytes" msgstr "" #: src/ifhp.c:4821 msgid "Send_job: job failed during copy" msgstr "" #: src/ifhp.c:4832 src/ifhp.c:4840 #, c-format msgid "Send_job: %d percent done" msgstr "" #: src/ifhp.c:4842 #, c-format msgid "Send_job: %d Kbytes done" msgstr "" #: src/ifhp.c:4923 msgid "Process_OF_mode: ftruncate fd 1 failed" msgstr "" #: src/ifhp.c:4936 src/ifhp.c:4941 src/ifhp.c:4946 msgid "Process_OF_mode: write failed" msgstr "" #: src/ifhp.c:4985 #, c-format msgid "Use_file_util: file program = '%s'" msgstr "" #: src/ifhp.c:4990 src/ifhp.c:5000 msgid "Use_file_util: lseek failed" msgstr "" #: src/ifhp.c:4993 msgid "FILE_UTIL" msgstr "" #: src/ifhp.c:4996 #, c-format msgid "Use_file_util: exit code %d" msgstr "" #: src/ifhp.c:5004 msgid "Use_file_util: read failed" msgstr "" #: src/ifhp.c:5026 #, c-format msgid "Use_file_util: file information = '%s'" msgstr "" #: src/ifhp.c:5059 msgid "Make_stdin_file: cannot fstat fd 1" msgstr "" #: src/ifhp.c:5074 #, c-format msgid "Make_stdin_file: write to tempfile fd %d failed" msgstr "" #: src/ifhp.c:5085 msgid "Make_stdin_file: read from stdin" msgstr "" #: src/ifhp.c:5099 msgid "Make_stdin_file: lseek failed" msgstr "" #: src/ifhp.c:5134 msgid "ifhp: fd is not open" msgstr "" #: src/ifhp.c:5159 #, c-format msgid "Fd_readable: cannot fstat fd %d" msgstr "" #: src/ifhp.c:5300 msgid "Term_job: job error on cleanup strings" msgstr "" #: src/ifhp.c:5326 #, c-format msgid "" "Filter_file: WARNING - 'ZOPTS' and 'TOPS' conversion options replaced by {Z} " "and {T} - '%s'" msgstr "" #: src/ifhp.c:5349 msgid "Filter_file: pipe failed" msgstr "" #: src/ifhp.c:5356 msgid "Filter_file: fork failed" msgstr "" #: src/ifhp.c:5360 src/ifhp.c:5364 msgid "Filter_file: open(/dev/null) failed" msgstr "" #: src/ifhp.c:5370 msgid "Filter_file: dup2 failed" msgstr "" #: src/ifhp.c:5393 #, c-format msgid "Filter_file: started %s- '%s'" msgstr "" #: src/ifhp.c:5402 src/ifhp.c:5408 #, c-format msgid "Filter_file: '%s' msg '%s'" msgstr "" #: src/ifhp.c:5414 msgid "ifhp: waitpid and no child!" msgstr "" #: src/ifhp.c:5426 #, c-format msgid "Filter_file: converter process died with signal %d, '%s'" msgstr "" #: src/ifhp.c:5702 #, c-format msgid "" "Select_model_info: looking for '%s' and recursion too deep at model '%s'" msgstr "" #: src/ifhp.c:5708 #, c-format msgid "" "Select_model_info: looking for '%s' %s cannot find information for model '%s'" msgstr "" #: src/ifhp.c:5801 msgid "Get_prog_status: pipe failed" msgstr "" #: src/ifhp.c:5808 msgid "Get_prog_status: fork failed" msgstr "" #: src/ifhp.c:5814 msgid "Get_prog_status: dup2 failed" msgstr "" #: src/ifhp.c:5837 #, c-format msgid "Get_prog_status: started '%s'" msgstr "" #: src/ifhp.c:5850 msgid "Get_prog_status: waitpid and no child!" msgstr "" #: src/ifhp.c:5864 #, c-format msgid "Get_prog_status: status process exited with %d, '%s'" msgstr "" #: src/ifhp.c:5876 #, c-format msgid "Get_prog_status: converter process died with signal %d, '%s'" msgstr "" ifhp-3.5.20/po/fr.gmo.po0100644000175100017510000003147410130541265015136 0ustar papowellpapowell# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: ifhp 3.5.20\n" "POT-Creation-Date: 2002-07-12 16:27-0700\n" "PO-Revision-Date: 2000-08-21 18:06-0700\n" "Last-Translator: Patrick Powell \n" "Language-Team: fr \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: src/accounting.c:38 #, c-format msgid "Do_accounting: pagecounter %d" msgstr "" #: src/accounting.c:40 #, c-format msgid "Do_accounting: pagecounter %d, pages %d" msgstr "" #: src/accounting.c:113 msgid "ACCOUNTING" msgstr "" #: src/accounting.c:117 #, c-format msgid "Do_accounting: script '%s' failed" msgstr "" #: src/ifhp.c:128 msgid "ifhp: stdin is not open" msgstr "" #: src/ifhp.c:132 msgid "ifhp: stdout is not open" msgstr "" #: src/ifhp.c:137 msgid "ifhp: open /dev/null failed" msgstr "" #: src/ifhp.c:204 msgid "TRANSLATE TEST" msgstr "" #: src/ifhp.c:215 #, c-format msgid "main: '%s'" msgstr "" #: src/ifhp.c:220 #, c-format msgid "main: no config file information in '%s'" msgstr "" #: src/ifhp.c:283 msgid "main: you opened the statusfile too early!!!" msgstr "" #: src/ifhp.c:287 #, c-format msgid "main: using model '%s'" msgstr "" #: src/ifhp.c:287 msgid "DEFAULT" msgstr "" #: src/ifhp.c:651 #, c-format msgid "Put_outbuf_len: realloc %d failed" msgstr "" #: src/ifhp.c:773 #, c-format msgid "Pr_status: printer status '%s'" msgstr "" #: src/ifhp.c:949 #, c-format msgid "Check_device_status: code = %s, '%s'%s" msgstr "" #: src/ifhp.c:954 #, c-format msgid "Check_device_status: write(fd %d) failed" msgstr "" #: src/ifhp.c:958 msgid "Check_device_status: lseek failed" msgstr "" #: src/ifhp.c:960 msgid "ALERT" msgstr "" #: src/ifhp.c:969 msgid "status" msgstr "" #: src/ifhp.c:970 msgid "error" msgstr "" #: src/ifhp.c:1015 msgid "yes" msgstr "" #: src/ifhp.c:1016 msgid "on" msgstr "" #: src/ifhp.c:1061 msgid "Process_job: setting up printer" msgstr "" #: src/ifhp.c:1066 msgid "Process_job: dup(0) failed" msgstr "" #: src/ifhp.c:1070 msgid "Process_job: dup(1) failed" msgstr "" #: src/ifhp.c:1073 msgid "Process_job: starting OF mode passthrough" msgstr "" #: src/ifhp.c:1079 msgid "Process_job: lseek of tempfd failed" msgstr "" #: src/ifhp.c:1083 msgid "Process_job: ftruncate of tempfd failed" msgstr "" #: src/ifhp.c:1088 #, c-format msgid "Process_job: tempfd dup2(%d,1) failed" msgstr "" #: src/ifhp.c:1093 msgid "Process_job: stat failed" msgstr "" #: src/ifhp.c:1100 msgid "Process_job: lseek failed" msgstr "" #: src/ifhp.c:1104 msgid "Process_job: tempfd dup2() failed" msgstr "" #: src/ifhp.c:1111 src/ifhp.c:1147 #, c-format msgid "Process_job: outfd dup2(%d,1) failed" msgstr "" #: src/ifhp.c:1114 #, c-format msgid "Process_job: sending %0.0f bytes of OF input" msgstr "" #: src/ifhp.c:1121 msgid "Process_job: using shutdown on appsocket connection" msgstr "" #: src/ifhp.c:1132 msgid "Process_job: OF process suspending" msgstr "" #: src/ifhp.c:1138 msgid "Process_job: OF process running" msgstr "" #: src/ifhp.c:1142 #, c-format msgid "Process_job: infd dup2(%d,1) failed" msgstr "" #: src/ifhp.c:1154 msgid "Process_job: ending OF mode passthrough" msgstr "" #: src/ifhp.c:1158 msgid "Process_job: sending job file" msgstr "" #: src/ifhp.c:1160 msgid "Process_job: sent job file" msgstr "" #: src/ifhp.c:1164 msgid "Process_job: done" msgstr "" #: src/ifhp.c:1184 msgid "Start_of_job: fd 1 not open" msgstr "" #: src/ifhp.c:1243 msgid "Start_of_job: timeout" msgstr "" #: src/ifhp.c:1273 msgid "End_of_job: FD 1 IS CLOSED AND ifhp DID NOT CLOSE IT" msgstr "" #: src/ifhp.c:1304 msgid "End_of_job: timeout" msgstr "" #: src/ifhp.c:1618 msgid "plp_block_all_signals: sigprocmask failed" msgstr "" #: src/ifhp.c:1632 msgid "plp_unblock_all_signals: sigprocmask failed" msgstr "" #: src/ifhp.c:1642 msgid "plp_set_signal_mask: sigprocmask failed" msgstr "" #: src/ifhp.c:1660 msgid "plp_unblock_one_signal: sigprocmask failed" msgstr "" #: src/ifhp.c:1675 msgid "plp_block_one_signal: sigprocmask failed" msgstr "" #: src/ifhp.c:1852 src/ifhp.c:1991 msgid "Write_read_timeout: write error" msgstr "" #: src/ifhp.c:1889 msgid "Write_read_timeout: EOF on output" msgstr "" #: src/ifhp.c:1896 msgid "Write_read_timeout: EOF on input" msgstr "" #: src/ifhp.c:1945 msgid "Write_read_timeout: select error" msgstr "" #: src/ifhp.c:1958 msgid "Write_read_timeout: read from printer failed" msgstr "" #: src/ifhp.c:2350 #, c-format msgid "Fix_option_str: bad form '%s'" msgstr "" #: src/ifhp.c:2532 #, c-format msgid "Find_sub_value: bad conditional format '%s'" msgstr "" #: src/ifhp.c:2733 #, c-format msgid "Font_download: no value for %sfontdir" msgstr "" #: src/ifhp.c:2754 msgid "Font_download: no 'font' value" msgstr "" #: src/ifhp.c:3079 #, c-format msgid "Do_sync: sync '%s' and method not supported" msgstr "" #: src/ifhp.c:3086 #, c-format msgid "Do_sync: getting sync using '%s'" msgstr "" #: src/ifhp.c:3134 #, c-format msgid "Do_sync: sync '%s' and no ps_status_code value" msgstr "" #: src/ifhp.c:3180 msgid "Do_sync: printer not detected, trying again" msgstr "" #: src/ifhp.c:3181 msgid "Do_sync: Perhaps printer offline or not detected by Operating System" msgstr "" #: src/ifhp.c:3182 msgid "" "Do_sync: If on a parallel port then parallel port may not be bidirectional" msgstr "" #: src/ifhp.c:3183 msgid "Do_sync: Use the 'status@' filter option to suppress this check" msgstr "" #: src/ifhp.c:3184 msgid "Do_sync: See the ifhp man page or the ifhp HOWTO for details" msgstr "" #: src/ifhp.c:3206 msgid "Do_sync: EOF on connection" msgstr "" #: src/ifhp.c:3212 #, c-format msgid "Do_sync: error '%s'" msgstr "" #: src/ifhp.c:3221 msgid "Do_sync: sync done" msgstr "" #: src/ifhp.c:3289 #, c-format msgid "Do_waitend: waitend '%s' and method not supported" msgstr "" #: src/ifhp.c:3297 #, c-format msgid "Do_waitend: getting end using '%s'" msgstr "" #. we have an error #: src/ifhp.c:3409 msgid "Do_waitend: EOF reading status" msgstr "" #: src/ifhp.c:3426 msgid "Do_waitend: job canceled" msgstr "" #: src/ifhp.c:3467 #, c-format msgid "Do_waitend: error '%s'" msgstr "" #: src/ifhp.c:3472 #, c-format msgid "Do_waitend: no end response from printer, timeout %d" msgstr "" #: src/ifhp.c:3475 #, c-format msgid "Do_waitend: end of %s detected" msgstr "" #: src/ifhp.c:3475 msgid "banner page" msgstr "" #: src/ifhp.c:3475 msgid "job" msgstr "" #: src/ifhp.c:3537 #, c-format msgid "Check_pagecount: pagecount '%s' and method not supported" msgstr "" #: src/ifhp.c:3540 msgid "pjl info pagecount" msgstr "" #: src/ifhp.c:3540 msgid "ps script" msgstr "" #: src/ifhp.c:3542 #, c-format msgid "Check_pagecount: pagecount using '%s'" msgstr "" #: src/ifhp.c:3565 #, c-format msgid "Do_pagecount: pagecounter %d from program" msgstr "" #: src/ifhp.c:3567 #, c-format msgid "Do_pagecount: pagecounter %d" msgstr "" #: src/ifhp.c:3573 #, c-format msgid "Do_pagecount: polling pagecounter %d times at %d second intervals" msgstr "" #: src/ifhp.c:3586 msgid "Do_pagecount: timeout getting pagecount" msgstr "" #: src/ifhp.c:3589 msgid "Do_pagecount: IO error getting pagecount" msgstr "" #: src/ifhp.c:3609 #, c-format msgid "Do_pagecount: pagecounter %d after %d attempts" msgstr "" #: src/ifhp.c:3655 msgid "Current_pagecounter: no ps_pagecount_code config info" msgstr "" #: src/ifhp.c:3707 msgid "Current_pagecount: EOF reading status" msgstr "" #: src/ifhp.c:3717 #, c-format msgid "Current_pagecounter: error '%s'" msgstr "" #: src/ifhp.c:3777 msgid "Send_job: starting transfer" msgstr "" #: src/ifhp.c:3797 src/ifhp.c:3816 src/ifhp.c:3856 src/ifhp.c:3964 #: src/ifhp.c:4021 src/ifhp.c:4101 msgid "Send_job: lseek failed" msgstr "" #: src/ifhp.c:3808 src/ifhp.c:4030 src/ifhp.c:4136 src/ifhp.c:4269 msgid "Send_job: read error on stdin" msgstr "" #: src/ifhp.c:3811 src/ifhp.c:4139 msgid "Send_job: zero length job file" msgstr "" #: src/ifhp.c:3827 msgid "Send_job: missing file_util_path value" msgstr "" #: src/ifhp.c:3859 #, c-format msgid "Send_job: initial job type '%s'" msgstr "" #: src/ifhp.c:3897 #, c-format msgid "Send_job: wrong number of fields in 'file_output_match' - '%s'" msgstr "" #: src/ifhp.c:3918 #, c-format msgid "Send_job: decoded job type '%s'" msgstr "" #: src/ifhp.c:3928 msgid "Send_job: job is PJL and PJL not supported" msgstr "" #: src/ifhp.c:3933 msgid "Send_job: job is PCL and PCL not supported" msgstr "" #: src/ifhp.c:3938 msgid "Send_job: job is PostScript and PostScript not supported" msgstr "" #: src/ifhp.c:3943 msgid "Send_job: job is Text and Text not supported" msgstr "" #: src/ifhp.c:3949 msgid "Send_job: filter wanted and no filter specified" msgstr "" #: src/ifhp.c:3952 #, c-format msgid "Send_job: cannot process language '%s'" msgstr "" #: src/ifhp.c:3960 #, c-format msgid "Send_job: job type '%s', converter '%s'" msgstr "" #: src/ifhp.c:3976 msgid "CONVERTER" msgstr "" #: src/ifhp.c:3984 #, c-format msgid "Send_job: converter failed, exit code %d" msgstr "" #: src/ifhp.c:3995 msgid "Send_job: fstat2 failed" msgstr "" #: src/ifhp.c:3997 #, c-format msgid "Send_job: converter done, output %ld bytes" msgstr "" #: src/ifhp.c:4001 msgid "Send_job: zero length conversion output" msgstr "" #: src/ifhp.c:4006 msgid "Send_job: dup2 failed" msgstr "" #: src/ifhp.c:4010 #, c-format msgid "Send_job: close(tempfd %d) failed" msgstr "" #: src/ifhp.c:4018 #, c-format msgid "Send_job: job type '%s', stripping leading PJL " msgstr "" #: src/ifhp.c:4062 msgid "Send_job: write error to tempfile" msgstr "" #: src/ifhp.c:4071 src/ifhp.c:4514 msgid "Make_stdin_file: dup2 failed" msgstr "" #: src/ifhp.c:4080 #, c-format msgid "Send_job: job type '%s'" msgstr "" #: src/ifhp.c:4096 msgid "Send_job: cannot fstat fd 0" msgstr "" #: src/ifhp.c:4120 #, c-format msgid "Send_job: transferring %0.0f bytes" msgstr "" #: src/ifhp.c:4234 msgid "Send_job: job failed during copy" msgstr "" #: src/ifhp.c:4245 src/ifhp.c:4253 #, c-format msgid "Send_job: %d percent done" msgstr "" #: src/ifhp.c:4255 #, c-format msgid "Send_job: %d Kbytes done" msgstr "" #: src/ifhp.c:4336 msgid "Process_OF_mode: ftruncate fd 1 failed" msgstr "" #: src/ifhp.c:4349 src/ifhp.c:4354 src/ifhp.c:4359 msgid "Process_OF_mode: write failed" msgstr "" #: src/ifhp.c:4398 #, c-format msgid "Use_file_util: file program = '%s'" msgstr "" #: src/ifhp.c:4403 src/ifhp.c:4413 msgid "Use_file_util: lseek failed" msgstr "" #: src/ifhp.c:4406 msgid "FILE_UTIL" msgstr "" #: src/ifhp.c:4409 #, c-format msgid "Use_file_util: exit code %d" msgstr "" #: src/ifhp.c:4417 msgid "Use_file_util: read failed" msgstr "" #: src/ifhp.c:4439 #, c-format msgid "Use_file_util: file information = '%s'" msgstr "" #: src/ifhp.c:4479 msgid "Make_stdin_file: cannot fstat fd 1" msgstr "" #: src/ifhp.c:4495 #, c-format msgid "Make_stdin_file: write to tempfile fd %d failed" msgstr "" #: src/ifhp.c:4506 msgid "Make_stdin_file: read from stdin" msgstr "" #: src/ifhp.c:4522 msgid "Make_stdin_file: lseek failed" msgstr "" #: src/ifhp.c:4556 msgid "ifhp: fd is not open" msgstr "" #: src/ifhp.c:4581 #, c-format msgid "Fd_readable: cannot fstat fd %d" msgstr "" #: src/ifhp.c:4718 msgid "Term_job: job error on cleanup strings" msgstr "" #: src/ifhp.c:4744 #, c-format msgid "" "Filter_file: WARNING - 'ZOPTS' and 'TOPS' conversion options replaced by {Z} " "and {T} - '%s'" msgstr "" #: src/ifhp.c:4767 msgid "Filter_file: pipe failed" msgstr "" #: src/ifhp.c:4774 msgid "Filter_file: fork failed" msgstr "" #: src/ifhp.c:4778 src/ifhp.c:4782 msgid "Filter_file: open(/dev/null) failed" msgstr "" #: src/ifhp.c:4788 msgid "Filter_file: dup2 failed" msgstr "" #. ooops... error #: src/ifhp.c:4796 src/ifhp.c:5242 #, c-format msgid "execv '%s' failed - %s" msgstr "" #: src/ifhp.c:4811 #, c-format msgid "Filter_file: started %s- '%s'" msgstr "" #: src/ifhp.c:4820 src/ifhp.c:4826 #, c-format msgid "Filter_file: '%s' error msg '%s'" msgstr "" #: src/ifhp.c:4832 msgid "ifhp: waitpid and no child!" msgstr "" #: src/ifhp.c:4844 #, c-format msgid "Filter_file: converter process died with signal %d, '%s'" msgstr "" #: src/ifhp.c:5122 #, c-format msgid "" "Select_model_info: looking for '%s' and recursion too deep at model '%s'" msgstr "" #: src/ifhp.c:5128 #, c-format msgid "" "Select_model_info: looking for '%s' %s cannot find information for model '%s'" msgstr "" #: src/ifhp.c:5221 msgid "Get_prog_status: pipe failed" msgstr "" #: src/ifhp.c:5228 msgid "Get_prog_status: fork failed" msgstr "" #: src/ifhp.c:5234 msgid "Get_prog_status: dup2 failed" msgstr "" #: src/ifhp.c:5257 #, c-format msgid "Get_prog_status: started '%s'" msgstr "" #: src/ifhp.c:5270 msgid "Get_prog_status: waitpid and no child!" msgstr "" #: src/ifhp.c:5284 #, c-format msgid "Get_prog_status: status process exited with %d, '%s'" msgstr "" #: src/ifhp.c:5296 #, c-format msgid "Get_prog_status: converter process died with signal %d, '%s'" msgstr "" ifhp-3.5.20/po/Rules-quot0100644000175100017510000000323110130541265015377 0ustar papowellpapowell# Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header ifhp-3.5.20/po/fr.gmo0100644000175100017510000000056610130541265014517 0ustar papowellpapowellÞ•$,8<9Project-Id-Version: ifhp 3.5.20 Report-Msgid-Bugs-To: POT-Creation-Date: 2004-09-24 13:18-0700 PO-Revision-Date: 2000-08-21 18:06-0700 Last-Translator: Patrick Powell Language-Team: fr MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit ifhp-3.5.20/po/stamp-po0100644000175100017510000000001210130541265015051 0ustar papowellpapowelltimestamp ifhp-3.5.20/po/boldquot.sed0100644000175100017510000000033110130541265015720 0ustar papowellpapowells/"\([^"]*\)"/“\1â€/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“â€/""/g s/“/“/g s/â€/â€/g s/‘/‘/g s/’/’/g ifhp-3.5.20/po/en@boldquot.header0100644000175100017510000000247110130541265017027 0ustar papowellpapowell# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # ifhp-3.5.20/po/en@quot.header0100644000175100017510000000226310130541265016165 0ustar papowellpapowell# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # ifhp-3.5.20/po/insert-header.sin0100644000175100017510000000124010130541265016637 0ustar papowellpapowell# Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } ifhp-3.5.20/po/quot.sed0100644000175100017510000000023110130541265015056 0ustar papowellpapowells/"\([^"]*\)"/“\1â€/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“â€/""/g ifhp-3.5.20/po/remove-potcdate.sin0100644000175100017510000000066010130541265017210 0ustar papowellpapowell# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } ifhp-3.5.20/po/POTFILES.in0100644000175100017510000000030310130541265015146 0ustar papowellpapowellsrc/accounting.c src/checkcode.c src/errormsg.c src/globmatch.c src/ifhp.c src/linelist.c src/lpbanner_fnt.c src/monitor.c src/open_device.c src/plp_snprintf.c src/stty.c src/textps.c src/vars.c ifhp-3.5.20/po/Makevars0100644000175100017510000000341610130541265015075 0ustar papowellpapowell# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Free Software Foundation, Inc. # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = ifhp-3.5.20/po/Makefile.in.in0100644000175100017510000002747210130541265016063 0ustar papowellpapowell# Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2003 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # # Origin: gettext-0.13 PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = @datadir@ localedir = $(datadir)/locale gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSTALLDIRS = @MKINSTALLDIRS@ mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = @XGETTEXT@ MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot stamp-po \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: all-@USE_NLS@ all-yes: stamp-po all-no: # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @echo "touch stamp-po" @echo timestamp > stamp-poT @mv stamp-poT stamp-po # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address='$(MSGID_BUGS_ADDRESS)' test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all $(mkinstalldirs) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkinstalldirs) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: $(mkinstalldirs) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkinstalldirs) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(MAKE) update-po @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir); \ else \ cp -p $(srcdir)/$$file $(distdir); \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ $(SHELL) ./config.status force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ifhp-3.5.20/po/ChangeLog0100644000175100017510000000130010130541264015140 0ustar papowellpapowell2004-08-05 gettextize * Makefile.in.in: Upgrade to gettext-0.13.1. 2003-11-17 gettextize * Makefile.in.in: Upgrade to gettext-0.12.1. 2003-07-30 gettextize * Makefile.in.in: Upgrade to gettext-0.11.5. * Rules-quot: New file, from gettext-0.11.5. * boldquot.sed: New file, from gettext-0.11.5. * en@boldquot.header: New file, from gettext-0.11.5. * en@quot.header: New file, from gettext-0.11.5. * insert-header.sin: New file, from gettext-0.11.5. * quot.sed: New file, from gettext-0.11.5. * remove-potcdate.sin: New file, from gettext-0.11.5. * cat-id-tbl.c: Remove file. * stamp-cat-id: Remove file. ifhp-3.5.20/config.sub0100555000175100017510000007315310130541210014737 0ustar papowellpapowell#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003 Free Software Foundation, Inc. timestamp='2003-07-04' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | kfreebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k \ | m32r | m68000 | m68k | m88k | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | msp430 \ | ns16k | ns32k \ | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | amd64-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* \ | m32r-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | msp430-* \ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; mmix*) basic_machine=mmix-knuth os=-mmixware ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nv1) basic_machine=nv1-cray os=-unicosmp ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; or32 | or32-*) basic_machine=or32-unknown os=-coff ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sh64) basic_machine=sh64-unknown ;; sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -ptx*) vendor=sequent ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ifhp-3.5.20/README0100644000175100017510000002434210130541262013641 0ustar papowellpapowell README for IFHP =================== Patrick Powell Original Sun Oct 29 06:25:05 PST 1995 Revised Wed Dec 20 05:18:16 PST 2000 ifhp is a highly versatile print filter for BSD based print spoolers. It can be configured to handle text, PostScript, PJL, PCL, and raster printers, supports conversion from one format to another, and can be used as a stand-alone print utility. It is the primary supported print filter for the LPRng print spooler. Web Page and HOWTO in HTML format: http://www.lprng.com/ The software may be obtained from ftp://ftp.lprng.com/pub/LPRng (Main site) Mirrors: ftp://ftp.cs.columbia.edu/pub/archives/pkg/LPRng/FILTERS (US) ftp://ftp.cs.umn.edu/pub/LPRng/FILTERS (US) ftp://uiarchive.uiuc.edu/pub/packages/LPRng/FILTERS (US) ftp://ftp.sage-au.org.au/pub/printing/spooler/lprng//FILTERS (AU) ftp://mirror.aarnet.edu.au/pub/LPRng//FILTERS (AU/NZ) http://mirror.aarnet.edu.au/pub/LPRng//FILTERS (AU/NZ) ftp://sunsite.ualberta.ca/pub/Mirror/LPRng/FILTERS (CA) ftp://ftp.informatik.uni-hamburg.de/pub/os/unix/utils/LPRng/FILTERS (DE) ftp://ftp.uni-paderborn.de/pub/unix/printer/LPRng/FILTERS (DE) ftp://ftp.mono.org/pub/LPRng/FILTERS (UK) ftp://ftp.iona.com/pub/plp/LPRng/FILTERS (IE) ftp://uabgate.uab.ericsson.se/pub/unix/LPRng/FILTERS (SE) 0. The Express Install: configure (use defaults) or configure --prefix=/usr --sysconfdir=/etc or sh STANDARD_configuration (you can use this script) make clean all AS ROOT: make install 1. Problems, Questions, and Answers The best place to get answers is the LPRng mailing list. To subscribe, send mail to: lprng-request@iona.ie with the word subscribe in the body. Patrick Powell Astart Technologies papowell@astart.com 6741 Convoy Court Network and System San Diego, CA 92111 Consulting 858-874-6543 FAX 858-751-2435 LPRng - Print Spooler (http://www.lprng.com) 2. You will need to: Use GNU Make or BSD Make. Don't even think about trying to use another make unless you are a Wizard. And even the Wizards would download the GNU Make. Use an ANSI C compiler. GCC is preferred. READ the README file. All the way through... Come on now, it's not THAT long. THEN do the install. 3. Utilities If you want to do text to postscript or whatever conversions, you will need a converter and program to determine input file type. file - utility to determine file type ftp://ftp.astron.com/pub/file/ ftp://ftp.deshaw.com/pub/file/ OR ftp://ftp.lprng.com/pub/LPRng/UNIXTOOLS/file/ A2PS - Ascii Text to PostScript Converter http://www-inf.enst.fr/~demaille/a2ps ftp://ftp.enst.fr/pub/unix/a2ps/ GhostScript - PostScript converter http://www.cs.wisc.edu/~ghost/index.html http://www.ghost.com/ 4. Read the Warnings Below For Your System Solaris Users: You can get precompiled versions of the GCC compiler and GMAKE from: www.sunfreeware.com Use the install in '/usr/local/' versions. This code has NOT been tested with the Sun Microsystems compilers, and NOT been tested with 64 bit support enabled. You have been warned. You MUST repeat MUST set your PATH so that the GNU gcc and other utilities in /usr/local/bin are found FIRST and then you MUST have the /usr/ccs/bin next in your path. PATH=/usr/local/bin:/usr/ccs/bin:$PATH If you have ANY problems with compilation, and you are NOT using a 'clean' GCC installation, please install GCC from a package (see http://www.sunfreeware.com) or recompile gcc and reinstall it. Also, please make sure that the include files are correct for your version of Solaris. In fact, I recommend that you do the compilation on a 'clean' machine that has nothing but a 'virgin' Solaris Install + utilities BEFORE reporting problems. HPUX Users: See the following site for precompiled GCC and other tools: http://hpux.cae.wisc.edu/ I STRONGLY recommend installing GCC and using GCC, especially on HPUX 9.X and 10.X. Make sure that your include files are the correct ones for your particular OS. 5. Installation and File Locations The configure utility is used to set the various file locations: ${prefix} - default /usr/local ${exec_prefix} - default ${prefix} (/usr/local) ${libexecdir} - default ${exec_prefix}/libexec (/usr/local/libexec) ifhp filter executables installed here by default over-ride --with-filterdir ${sysconfdir} - default ${prefix}/etc (/usr/local/etc) ifhp.conf, ifhp.conf.sample installed here override location and name --with-ifhp_conf The following options to configure allow you to override or specify these value: --prefix=PREFIX install architecture-independent files in PREFIX --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX --libexecdir=DIR program executables in DIR [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] --with-ifhp_conf=path ifhp.conf explicit locations, override defaults --with-filterdir=DIR override for filter directory ${libexecdir}/filters) Files: ${sysconfdir}/ifhp.conf - configuration file ${filterdir}/ifhp - filter (${libexecdir}/filters/ifhp) To do the install in /usr/local/libexec/filters, /usr/local/etc use: configure To do the install in /usr/libexec/filters, /usr/local/etc use: configure --prefix=/usr --sysconfdir=/etc 7. Testing and Configuration Read the ifhp.conf file, and see if your printer is listed. If it is, then you can try printing to it DIRECTLY and see if it works. The ifhp/UTILS/one.ps file is a handy PostScript test file. In the following, NAME is the configuration entry for the printer. a) cp ifhp/UTILS/one.ps /tmp NAME=ifhp.conf configuration entry for printer b) print to a file FIRST: ifhp -Tmodel=${NAME},dev=/tmp/out,trace # Default filter :filter=/usr/local/libexec/filters/ifhp: Example: lp: :ifhp=model=postscript,a4 :filter=/usr/local/libexec/filters/ifhp: By default, the ifhp filter will check the job files for printability and/or postscript format. If it is PostScript, it will set the printer to PostScript mode using the PJL commands, otherwise it will set the printer to PCL. If you do not want this to happen, then print the job as a binary file; this normall suppresses this checks. If you are doing banner page printing then add the following: lp: # Default filter and options :ifhp=model=postscript,a4 :filter=/usr/local/libexec/filters/ifhp: # banner page support - disable 'suppress header page' :sh@ :of=/usr/local/libexec/filters/ifhp: # PostScript banner :bp=/usr/local/libexec/filters/psbannner # PCL banner #:bp=/usr/local/libexec/filters/pclbannner 9. ifhp accepts the full range of LPD filter options and uses or or ignores them as applicable. The following command line options are used: -c cleartext - dump file this directly to the printer, no fonts, no nothing done. For those desperate people trying to find a way to print those obnoxious files. This is enabled by lpr -b or lpr -l -sstatusfile - the name of a status file that is updated with 'rolling status' - i.e. - the last few log messages. The statusfile value is set from the 'ps=statusfile' printcap option -nuser, -hhost, -Jjob - used by ifhp for accounting -Z[filteroptions,]* - filter options See the ifhp man page for filteroption details. Note: -T is not supplied by LPRng, and can be used to pass command line options to ifhp. -T[filteroptions,]* - filter options $Id: README,v 1.18 2003/09/04 18:38:29 papowell Exp papowell $ ifhp-3.5.20/VERSION0100644000175100017510000000001410130541263014020 0ustar papowellpapowellifhp-3.5.20 ifhp-3.5.20/config.h.in0100644000175100017510000003564610130541263015016 0ustar papowellpapowell/* config.h.in. Generated from configure.in by autoheader. */ /* target CPU */ #undef ARCHITECTURE /* DEC ALPHA version */ #undef DECALPHA /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* Define to 1 if you have the header file. */ #undef HAVE_AOUTHDR_H /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_INET_H /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_NAMESER_H /* Define to 1 if you have the header file. */ #undef HAVE_AR_H /* Define to 1 if you have the header file. */ #undef HAVE_ASSERT_H /* Define to 1 if you have the header file. */ #undef HAVE_A_OUT_H /* broken tiocexcl */ #undef HAVE_BROKEN_TIOCEXCL /* Define to 1 if you have the `cfsetispeed' function. */ #undef HAVE_CFSETISPEED /* Define to 1 if you have the header file. */ #undef HAVE_COMPAT_H /* Define to 1 if you have the header file. */ #undef HAVE_COM_ERR_H /* Define to 1 if you have the header file. */ #undef HAVE_CTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_CTYPE_H /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* have errno decl */ #undef HAVE_DECL_ERRNO /* have sys_errlist decl */ #undef HAVE_DECL_SYS_ERRLIST /* have sys_nerr decl */ #undef HAVE_DECL_SYS_NERR /* Define to 1 if you have the header file. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT /* have errno */ #undef HAVE_ERRNO /* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H /* Define to 1 if you have the header file. */ #undef HAVE_EXECHDR_H /* Define to 1 if you have the `fcntl' function. */ #undef HAVE_FCNTL /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the header file. */ #undef HAVE_FILEHDR_H /* Define to 1 if you have the `flock' function. */ #undef HAVE_FLOCK /* have flock def */ #undef HAVE_FLOCK_DEF /* Define to 1 if you have the `fork' function. */ #undef HAVE_FORK /* Define to 1 if you have the `getdtablesize' function. */ #undef HAVE_GETDTABLESIZE /* Define to 1 if you have the `gethostbyname2' function. */ #undef HAVE_GETHOSTBYNAME2 /* Define to 1 if you have the `gethostname' function. */ #undef HAVE_GETHOSTNAME /* have getbostname def */ #undef HAVE_GETHOSTNAME_DEF /* set getpgrgp 1 */ #undef HAVE_GETPGRP_0 /* Define to 1 if you have the `getrlimit' function. */ #undef HAVE_GETRLIMIT /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_GRP_H /* Define if you have the iconv() function. */ #undef HAVE_ICONV /* Define to 1 if you have the `inet_aton' function. */ #undef HAVE_INET_ATON /* Define to 1 if you have the `inet_ntop' function. */ #undef HAVE_INET_NTOP /* Define to 1 if you have the `inet_pton' function. */ #undef HAVE_INET_PTON /* Define to 1 if you have the `innetgr' function. */ #undef HAVE_INNETGR /* have innetgr def */ #undef HAVE_INNETGR_DEF /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `killpg' function. */ #undef HAVE_KILLPG /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the `lockf' function. */ #undef HAVE_LOCKF /* have long double */ #undef HAVE_LONG_DOUBLE /* have long long */ #undef HAVE_LONG_LONG /* have lseek proto */ #undef HAVE_LSEEK_PROTO /* Define to 1 if you have the header file. */ #undef HAVE_MACHINE_VMPARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `mkstemp' function. */ #undef HAVE_MKSTEMP /* Define to 1 if you have the `mktemp' function. */ #undef HAVE_MKTEMP /* Define to 1 if you have the header file. */ #undef HAVE_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_NETDB_H /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H /* Define to 1 if you have the header file. */ #undef HAVE_NLIST_H /* Define to 1 if you have the `openlog' function. */ #undef HAVE_OPENLOG /* have openlog def */ #undef HAVE_OPENLOG_DEF /* Define to 1 if you have the `putenv' function. */ #undef HAVE_PUTENV /* Define to 1 if you have the header file. */ #undef HAVE_PWD_H /* have quad_t */ #undef HAVE_QUAD_T /* Define to 1 if you have the `rand' function. */ #undef HAVE_RAND /* Define to 1 if you have the `random' function. */ #undef HAVE_RANDOM /* Define to 1 if you have the header file. */ #undef HAVE_RELOC_H /* Define to 1 if you have the header file. */ #undef HAVE_RESOLV_H /* Define to 1 if you have the header file. */ #undef HAVE_SELECT_H /* Define to 1 if you have the `setenv' function. */ #undef HAVE_SETENV /* Define to 1 if you have the `seteuid' function. */ #undef HAVE_SETEUID /* Define to 1 if you have the header file. */ #undef HAVE_SETJMP_H /* Define to 1 if you have the `setlinebuf' function. */ #undef HAVE_SETLINEBUF /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE /* Define to 1 if you have the `setpgid' function. */ #undef HAVE_SETPGID /* set setpgrp 0 */ #undef HAVE_SETPGRP_0 /* Define to 1 if you have the `setproctitle' function. */ #undef HAVE_SETPROCTITLE /* have setproctitle */ #undef HAVE_SETPROCTITLE_DEF /* Define to 1 if you have the `setresuid' function. */ #undef HAVE_SETRESUID /* Define to 1 if you have the `setreuid' function. */ #undef HAVE_SETREUID /* Define to 1 if you have the `setruid' function. */ #undef HAVE_SETRUID /* Define to 1 if you have the `setsid' function. */ #undef HAVE_SETSID /* Define to 1 if you have the `setvbuf' function. */ #undef HAVE_SETVBUF /* Define to 1 if you have the header file. */ #undef HAVE_SGS_H /* Define to 1 if you have the header file. */ #undef HAVE_SGTTY_H /* Define to 1 if you have the `sigaction' function. */ #undef HAVE_SIGACTION /* Define to 1 if you have the `siglongjmp' function. */ #undef HAVE_SIGLONGJMP /* Define to 1 if you have the header file. */ #undef HAVE_SIGNAL_H /* Define to 1 if you have the `sigprocmask' function. */ #undef HAVE_SIGPROCMASK /* Define to 1 if you have the `socketpair' function. */ #undef HAVE_SOCKETPAIR /* Define to 1 if you have the header file. */ #undef HAVE_STAB_H /* Define to 1 if you have the header file. */ #undef HAVE_STDARG_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strcasecmp' function. */ #undef HAVE_STRCASECMP /* have strcasecmp def */ #undef HAVE_STRCASECMP_DEF /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strncasecmp' function. */ #undef HAVE_STRNCASECMP /* have struct_exec */ #undef HAVE_STRUCT_EXEC /* Define to 1 if you have the `sysconf' function. */ #undef HAVE_SYSCONF /* Define to 1 if you have the `sysinfo' function. */ #undef HAVE_SYSINFO /* have syslog def */ #undef HAVE_SYSLOG_DEF /* Define to 1 if you have the header file. */ #undef HAVE_SYSLOG_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_DIR_H /* have sys_errlist */ #undef HAVE_SYS_ERRLIST /* Define to 1 if you have the header file. */ #undef HAVE_SYS_EXECHDR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_EXEC_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FCNTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_LOADER_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MOUNT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_NDIR_H /* have sys_nerr */ #undef HAVE_SYS_NERR /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PSTAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H /* have sys_siglist */ #undef HAVE_SYS_SIGLIST /* have sys_siglist def */ #undef HAVE_SYS_SIGLIST_DEF /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SIGNAL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STATFS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STATVFS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SYSLOG_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SYSTEMINFO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TERMIOX_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TERMIO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TTOLD_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TTYCOM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UTSNAME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_VFS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the `tcdrain' function. */ #undef HAVE_TCDRAIN /* Define to 1 if you have the `tcflush' function. */ #undef HAVE_TCFLUSH /* Define to 1 if you have the `tcsetattr' function. */ #undef HAVE_TCSETATTR /* Define to 1 if you have the header file. */ #undef HAVE_TERMCAP_H /* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H /* Define to 1 if you have the header file. */ #undef HAVE_TERMIO_H /* Define to 1 if you have the header file. */ #undef HAVE_TERM_H /* Define to 1 if you have the header file. */ #undef HAVE_TIME_H /* Define to 1 if you have the `uname' function. */ #undef HAVE_UNAME /* have union wait */ #undef HAVE_UNION_WAIT /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `unsetenv' function. */ #undef HAVE_UNSETENV /* Define to 1 if you have the header file. */ #undef HAVE_UTSNAME_H /* Define to 1 if you have the header file. */ #undef HAVE_VARARGS_H /* Define to 1 if you have the `vfork' function. */ #undef HAVE_VFORK /* Define to 1 if you have the header file. */ #undef HAVE_VFORK_H /* Define to 1 if you have the header file. */ #undef HAVE_VMPARAM_H /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Define to 1 if you have the `wait3' function. */ #undef HAVE_WAIT3 /* Define to 1 if you have the `waitpid' function. */ #undef HAVE_WAITPID /* Define to 1 if `fork' works. */ #undef HAVE_WORKING_FORK /* Define to 1 if `vfork' works. */ #undef HAVE_WORKING_VFORK /* Define to 1 if you have the `_res' function. */ #undef HAVE__RES /* have _sys_siglist */ #undef HAVE__SYS_SIGLIST /* have _sys_siglist def */ #undef HAVE__SYS_SIGLIST_DEF /* HPUX version */ #undef HPUX /* have in6_addr */ #undef IN6_ADDR /* have in_addr6 */ #undef IN_ADDR6 /* IRIX */ #undef IRIX /* target os name */ #undef OSNAME /* target os version */ #undef OSVERSION /* package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE /* solaris */ #undef SOLARIS /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* have mtimensec */ #undef ST_MTIMENSEC /* have mtimespec */ #undef ST_MTIMESPEC_TV_NSEC /* SUNOS version */ #undef SUNOS /* have SVR4 */ #undef SVR4 /* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* use sgttyb */ #undef USE_SGTTYB /* statfs type sysv */ #undef USE_STATFS_TYPE /* define use_stty */ #undef USE_STTY /* use termio */ #undef USE_TERMIO /* use termios */ #undef USE_TERMIOS /* use termiox */ #undef USE_TERMIOX /* version */ #undef VERSION /* Define to 1 if on AIX 3. System headers sometimes define this. We just want to avoid a redefinition error message. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* HPUX Source */ #undef _HPUX_SOURCE /* Define to 1 if on MINIX. */ #undef _MINIX /* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE /* Define to 1 if you need to in order for `stat' and other things to work. */ #undef _POSIX_SOURCE /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `int' if doesn't define. */ #undef gid_t /* Define as `__inline' if that's what the C compiler calls it, or to nothing if it is not supported. */ #undef inline /* Define to `int' if does not define. */ #undef mode_t /* Define to `long' if does not define. */ #undef off_t /* Define to `int' if does not define. */ #undef pid_t /* Define to `unsigned' if does not define. */ #undef size_t /* Define to `int' if doesn't define. */ #undef uid_t /* Define as `fork' if `vfork' does not work. */ #undef vfork ifhp-3.5.20/UPDATE0100644000175100017510000000171410130541263013665 0ustar papowellpapowell#!/bin/sh DIR=`pwd | sed -e 's,.*/,,'` PREFIX=`echo $DIR | sed -e 's,-.*,,'` TAIL=`echo $DIR | sed -e 's,^[^-]*-,,'` LAST=`echo $TAIL | sed -e 's,^.*\.,,'` BEFORE=`echo $TAIL | sed -e 's,\.[0-9]*$,.,'` INCR=`expr $LAST "+" 1` #if [ $INCR -ge 10 ] ; then # echo $DIR needs to be modified to next minor version # BEFORE=`echo $TAIL | sed -e 's,\.[0-9]*\.[0-9]*$,.,'` # LAST=`echo $TAIL | sed -e 's,\.[0-9]*$,,' -e 's,^.*\.,,'` # INCR=`expr $LAST "+" 1` # if [ $INCR -eq 10 ] ; then # echo $DIR needs to be modified to next major version # BEFORE=""; # LAST=`echo $TAIL | sed -e 's,\.[0-9]*\.[0-9]*$,,' -e 's,^.*\-,,'` # INCR=`expr $LAST "+" 1` # INCR="$INCR.0" # fi # INCR="$INCR.0" #fi NEW=$PREFIX-$BEFORE$INCR echo NEW $NEW ( cd ..; mv $DIR $NEW; rm -f $PREFIX; ln -s $NEW $PREFIX ) ( echo Version $NEW - `date` echo "" echo "" cat CHANGES ; ) >/tmp/CHANGES$NEW mv CHANGES CHANGES.OLD cp /tmp/CHANGES$NEW CHANGES if [ ! -f Makefile ] ; then configure; fi make update ifhp-3.5.20/DISTRIBUTIONS/0040755000175100017510000000000007756240372015043 5ustar papowellpapowellifhp-3.5.20/DISTRIBUTIONS/Solaris.pkg/0040755000175100017510000000000010130541204017211 5ustar papowellpapowellifhp-3.5.20/DISTRIBUTIONS/Solaris.pkg/Makefile0100644000175100017510000000473410130541204020656 0ustar papowellpapowell# # Build a pkg for Solaris # Makefile,v 1.3 2000/05/10 18:33:26 papowell Exp # # Hacked, mangled, twisted and warped by Patrick Powell # # 1. We make the package in WORKING # 2. install it in /var/tmp/ifhp # 3. generate a packing list using pkgproto + massage # PKG=ifhp PKG_NAME='ifhp Line Printer Filter' VENDOR='Patrick Powell ' VERSION=3.5.20 PREFIX=/usr FILTERDIR=/usr/libexec/filters SYSCONFDIR=/etc CONFIGURE_ARGS=--prefix=${PREFIX} --sysconfdir=${SYSCONFDIR} --with-filterdir=${FILTERDIR} WORKING?=../.. CONFIG?=../.. WORKING:=$(shell cd ${WORKING}; pwd) CONFIG:=$(shell cd ${CONFIG}; pwd) COPY_DIR=/var/tmp/ifhp TMP=/tmp .PHONY: all add remove rebuild clean check all: ${PKG}.pkg addit: pkgadd -d ${PKG}.pkg removeit: pkgrm ${PKG} ${PKG}.pkg: pkginfo prototype pkgmk -o -d ${TMP} -f prototype -p `date +%Y%m%d%H%M` pkgtrans -s ${TMP} `pwd`/${PKG}.pkg ${PKG} rm -rf ${TMP}/${PKG} pkginfo: Makefile echo CONFIG ${CONFIG} WORKING ${WORKING} COPY_DIR ${COPY_DIR} rm -f pkginfo echo "PKG=${PKG}" >> pkginfo echo "NAME=ifhp-${VERSION}" >> pkginfo echo "ARCH=`uname -p`" >> pkginfo echo "VERSION=${VERSION}" >> pkginfo echo "CATEGORY=application" >> pkginfo echo "DESC=${PKG_NAME}" >> pkginfo echo "CLASSES=none preserve" >> pkginfo echo "VENDOR=${VENDOR}" >> pkginfo echo "BASEDIR=/" >> pkginfo SCRIPTS:= $(shell echo $(wildcard *.sh) | sed -e 's,\.sh$$,,g' ) prototype: prototype.pre prototype.files ${COPY_DIR}${FILTERDIR}/ifhp ${SCRIPTS} cat prototype.pre prototype.files >prototype ${COPY_DIR}${FILTERDIR}/ifhp: ${WORKING}/config.h -rm -rf ${COPY_DIR} cd ${WORKING}; make install DESTDIR=${COPY_DIR} ${WORKING}/config.h: if [ '!' -d ${WORKING} ] ; then mkdir ${WORKING} ; fi cd ${WORKING}; ${CONFIG}/configure ${CONFIGURE_ARGS} ${SCRIPTS}: prototype.files cat ${WORKING}/header $@.sh >>$@ prototype.files: ${COPY_DIR}${FILTERDIR}/ chown -R root ${COPY_DIR} chgrp -R bin ${COPY_DIR} pkgproto ${COPY_DIR}=/ \ | awk '$$3 == "/"{ next; } \ /ifhp.conf=/{ next; } \ /^d/{ print $$1,$$2,$$3," ? ? ? "; next; } \ { print; }' >prototype.files rebuild: -rm -rf ${COPY_DIR} cd ${WORKING}; make clean clean: -rm -f pkginfo prototype prototype.files ${PKG}.pkg \ postinstall preremove postremove /tmp/ifhp -rm -rf ${COPY_DIR} if [ -d ${WORKING} ] ; then cd ${WORKING}; rm -f config.h; fi checkit: cd ../..; configure ${CONFIGURE_ARGS}; make all install make clean all -make removeit make addit removeit # # end of file # ifhp-3.5.20/DISTRIBUTIONS/Solaris.pkg/copyright0100644000175100017510000000044207106326543021161 0ustar papowellpapowell *LPRng and IFHP LICENSE* GNU GPL and Artistic License (Version 4, Jan 24, 2000) Copyright Patrick Powell, Astart Technologies All rights reserved. ifhp-3.5.20/DISTRIBUTIONS/Solaris.pkg/i.preserve0100644000175100017510000000047407106326544021241 0ustar papowellpapowell#!/bin/sh # ---------------------------------------------------------------------- # i.preserve # # copy only if file does not exists # while read src dest do if [ ! -f $dest ] ; then cp $src $dest fi done exit 0 # # end of file # ---------------------------------------------------------------------- ifhp-3.5.20/DISTRIBUTIONS/Solaris.pkg/UNPACKifhp0100644000175100017510000000050007117240376020775 0ustar papowellpapowell#!/bin/sh PATH=.:/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/contrib/bin:/usr/ccs/bin:/usr/openwin/bin export PATH for i in ifhp*[0-9] ; do mv $i $i.x; rm -rf $i.x & done f=`ls ifhp*gz | tail -1` if [ -n $f ] ; then tar zxvf $f; fi cd ifhp*[0-9]/DISTRIBUTIONS/Solaris.pkg ; make checkit ifhp-3.5.20/DISTRIBUTIONS/Solaris.pkg/prototype.pre0100644000175100017510000000025707106410313021774 0ustar papowellpapowell# # written by Willi Burmeister (wib@cs.uni-kiel.de) for LPRng # # prototype # i pkginfo i copyright i i.preserve i r.preserve # # our default value # !default 0755 root bin ifhp-3.5.20/DISTRIBUTIONS/Solaris.pkg/r.preserve0100644000175100017510000000041607106326544021246 0ustar papowellpapowell#!/bin/sh # ---------------------------------------------------------------------- # r.preserve # # don't remove file # while read src do echo "$src NOT removed" done exit 0 # # end of file # ---------------------------------------------------------------------- ifhp-3.5.20/DISTRIBUTIONS/BSDI/0040755000175100017510000000000010130541204015536 5ustar papowellpapowellifhp-3.5.20/DISTRIBUTIONS/BSDI/Makefile0100644000175100017510000000007110130541204017171 0ustar papowellpapowellall: check: cd ../..; configure; make clean all install ifhp-3.5.20/DISTRIBUTIONS/Makefile.in0100644000175100017510000000172107106326544017101 0ustar papowellpapowell# Generated automatically from Makefile.in by configure. ########################################################################### # LPRng - An Extended Print Spooler System # # Copyright 1988-1997 Patrick Powell, San Diego, California # papowell@sdsu.edu # See LICENSE for conditions of use. # ########################################################################### # MODULE: DISTRIBUTIONS/Makefile # PURPOSE: generate distribution package and checkout # Makefile.in,v 3.7 1998/03/30 01:54:50 papowell Exp ########################################################################## all: ci .PHONY: all clean install ci install.zman CI= CO=-kv cifast ci: checkin() { \ rcs -l $$*; \ ci $(CI) -mUpdate -t-Initial $$*; \ yes |co $(CO) $$*; \ }; \ dirs=`find . -type d -name RCS -print | sed -e s/.RCS//`; \ echo dirs $$dirs; \ for i in $$dirs ; do \ (cd $$i; echo CWD `pwd`; \ for j in * ; do if [ -f $$j ] ; then checkin $$j; fi ; done; \ ); done; ifhp-3.5.20/DISTRIBUTIONS/RPM.RedHat/0040755000175100017510000000000010130541204016621 5ustar papowellpapowellifhp-3.5.20/DISTRIBUTIONS/RPM.RedHat/ifhp.spec0100644000175100017510000000604710130541204020427 0ustar papowellpapowellSummary: The IFHP filter for the LPRng print spooler. Name: ifhp Version: 3.5.20 Release: 1 Vendor: Patrick Powell, LPRng.com License: GPL and Artistic Group: System Environment/Daemons Source: ftp://ftp.lprng.com/pub/LPRng/ifhp/%{name}-%{version}.tgz URL: http://www.lprng.com Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root Provides: ifhp Prereq: mktemp, fileutils, textutils, gawk, ghostscript BuildPreReq: gettext %description The ifhp print filter is the main print filter for the LPRng print spooler. It has support for PCL, PostScript, PJL, and text printers, as well as a flexible configuration system that allows it to be configured to handle a wide variety of unusual or legacy printers. %changelog * Sat Sep 29 2001 Patrick Powell - added warning about GhostScript able to read files - added --disable-gscheck to configuration options * Mon Aug 27 2001 Patrick Powell - Updated the installation files * Tue Nov 28 2000 Patrick Powell - Updated the installation and files generation Require PostScript, a2ps or mpage * Thu Jun 15 2000 Patrick Powell - Updated the installation and files generation * Sun May 7 2000 Patrick Powell - update the scripts. Added a dynamic %files capability added preinstall, preremove, and postinstall scripts * Sat Sep 4 1999 Patrick Powell - did ugly things to put the script in the spec file * Sat Aug 28 1999 Giulio Orsero - 3.6.8 * Fri Aug 27 1999 Giulio Orsero - 3.6.7 First RPM build. %prep %setup -q # pick up configure.in changes # set up gettext ( cd po rm -f Makefile.in.in ln -s /usr/share/gettext/po/Makefile.in.in . ) # sh CREATE_CONFIGURE %build CFLAGS="$RPM_OPT_FLAGS" ; export CFLAGS %configure --enable-nls --disable-gscheck make %install rm -rf %{buildroot} # Installation of locales is broken... Work around it! #perl -pi -e "s,prefix =.*,prefix = ${RPM_BUILD_ROOT}%{_prefix},g" po/Makefile #perl -pi -e "s,datadir =.*,datadir = ${RPM_BUILD_ROOT}%{_prefix}/share,g" po/Makefile #perl -pi -e "s,localedir =.*,localedir = ${RPM_BUILD_ROOT}%{_prefix}/share/locale,g" po/Makefile #perl -pi -e "s,gettextsrcdir =.*,gettextsrcdir = ${RPM_BUILD_ROOT}%{_prefix}/share/gettext/po,g" po/Makefile make mandir=%{_mandir} DESTDIR=${RPM_BUILD_ROOT} install %post echo "(/etc/hosts) (r) file quit" | gs -q -dPARANOIDSAFER -dSAFER -sDEVICE=nullpage -sOutputFile=- - status=$? if [ "$status" = "0" ] ; then echo "WARNING: security loophole in GhostScript will allow files to be read" echo "See the README.GhostScriptSecurityProblem document for details" fi %clean rm -rf %{buildroot} %files %defattr(-,root,root) %attr(644,root,root) %{_sysconfdir}/ifhp.conf.sample %config %{_sysconfdir}/ifhp.conf %{_libexecdir}/filters/* %{_bindir}/* %{_mandir}/*/* %attr(755,root,root) %{_prefix}/share/locale/* %doc CHANGES Copyright INSTALL LICENSE %doc README* VERSION %doc DOCS/*.html DOCS/*.pdf DOCS/*.jpg ifhp-3.5.20/DISTRIBUTIONS/RPM.RedHat/Makefile0100644000175100017510000000167210130541204020264 0ustar papowellpapowellPACKAGE=ifhp VERSION=3.5.20 RELEASE=1 RPM=/usr/src/redhat/RPMS/i386/${PACKAGE}-${VERSION}-${RELEASE}.i386.rpm CONFIGURE_ARGS=--prefix=/usr --sysconfdir=/etc --with-filterdir=/usr/libexec/filters --with-ld_library_path=/lib:/usr/lib:/usr/local/lib --with-filter_path=/bin:/usr/bin:/usr/libexec:/usr/local/libexec:/usr/sbin:/var/spool/bin COPY_HERE= .PHONY: all rpm testi testu dou doU undo update clean checkit all: make update chown root.bin * make rpm rpm: ${RPM} testi: rpm -i --test ${RPM} testu: rpm -U --test ${RPM} || echo $$? dou: rpm -U ${RPM} || echo ERROR $$? doU: rpm -U --force ${RPM} || echo ERROR $$? undo: rpm -e --nodeps ${PACKAGE} ${RPM}: ${PACKAGE}.spec rpmbuild -ba ${PACKAGE}.spec clean: rm -f *.tgz rm -rf /usr/src/redhat/BUILD/${PACKAGE}-* update: perl -spi -e "\ s|^Version: .*|Version: ${VERSION}|; \ s|^Release: .*|Release: ${RELEASE}|; \ " ${PACKAGE}.spec; checkit: update chown root.bin * make rpm ifhp-3.5.20/DISTRIBUTIONS/RPM.RedHat/SENDTOifhp0100644000175100017510000000063007342312640020416 0ustar papowellpapowell#!/bin/sh f=`ls ifhp*tgz |tail -1`; # RPM ssh -l root h101 "set f=`ls /usr/src/redhat/SOURCES/ifhp* /usr/src/redhat/SRPMS/ifhp* /usr/src/redhat/RPMS/* /ifhp* 2>/dev/null`; echo REMOVE $f; rm -f $f;" scp $f root@h101:/usr/src/redhat/SOURCES ssh -l root h101 'sh UNPACKifhp' # FreeBSD #ssh -l root h21 "rm -f /usr/ports/distfiles/ifhp*" #scp $f root@h21:/usr/ports/distfiles #ssh -l root h21 'sh UNPACKifhp' ifhp-3.5.20/DISTRIBUTIONS/RPM.RedHat/UNPACKifhp0100644000175100017510000000107207402765324020414 0ustar papowellpapowell#!/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/kerberos/bin:/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin export PATH DIST=ifhp for i in `echo ${DIST}*[0-9]` ; do echo RM $i; mv $i x.$i ; rm -rf x.$i & done; echo REMOVE /usr/src/redhat/SRPM/${DIST}*tgz /usr/src/redhat/RPMS/*/${DIST}*rpm rm -f /usr/src/redhat/SRPM/${DIST}*tgz /usr/src/redhat/RPMS/*/${DIST}*rpm f=`ls /usr/src/redhat/SOURCES/${DIST}*tgz | tail -1` echo Using $f if [ -n "$f" ] ; then tar zxvf $f cd ${DIST}*/D*/RP* make checkit doU fi ifhp-3.5.20/DISTRIBUTIONS/FreeBSD-4.ports.print.ifhp0120755000000000017510000000000007756240371021551 2ifhpustar rootpapowellifhp-3.5.20/DISTRIBUTIONS/README0100644000175100017510000000164107112563363015714 0ustar papowellpapowell Distribution Support Tue Apr 18 02:49:45 PDT 2000 The files in this directory are used as a starting point for various distribution packaging schemes FreeBSD: Use the UNPACKifhp in the DISTRIBTIONS/FreeBSD* a) copy the distribution (xx.tgz) to the /usr/ports/distfiles b) sh UNPACKifhp This will run the various commands to make a package OR: cd DISTRIBUTIONS/FreeBSD* make checkit Solaris: Use the UNPACKifhp in the DISTRIBTIONS/Solaris* a) copy the distribution (xx.tgz) to the current directory b) sh UNPACKifhp This will run the various commands to make a package OR: cd DISTRIBUTIONS/Solaris* make checkit Linux/RedHat RPM: Use the UNPACKifhp in the DISTRIBTIONS/RPM* a) copy the distribution (xx.tgz) to the current directory b) sh UNPACKifhp This will run the various commands to make a package OR: cd DISTRIBUTIONS/Solaris* make checkit ifhp-3.5.20/DISTRIBUTIONS/ifhp/0040755000175100017510000000000010130541204015743 5ustar papowellpapowellifhp-3.5.20/DISTRIBUTIONS/ifhp/Makefile0100644000175100017510000000432410130541204017403 0ustar papowellpapowell# Ports collection makefile for: ifhp # Date created: 10 Oct 2001 # Whom: papowell@astart.com # # $FreeBSD: ports/print/ifhp/Makefile,v 1.5 2002/04/02 17:38:39 dwcjr Exp $ # PORTNAME= ifhp PORTVERSION= 3.5.20 CATEGORIES= print MASTER_SITES= ftp://ftp.lprng.com/pub/%SUBDIR%/ \ ftp://ftp.cise.ufl.edu/pub/mirrors/%SUBDIR%/ \ ftp://ftp.cs.umn.edu/pub/%SUBDIR%/ \ ftp://ftp.informatik.uni-hamburg.de/pub/os/unix/utils/%SUBDIR%/ \ ftp://ftp.uni-paderborn.de/pub/unix/printer/%SUBDIR%/ MASTER_SITE_SUBDIR= LPRng/ifhp EXTRACT_SUFX= .tgz MAINTAINER= papowell@astart.com COMMENT= IFHP - A highly configurable print filter for LPRng GNU_CONFIGURE= yes INSTALLS_SHLIB= yes CONFIGURE_ARGS= \ LDFLAGS="-L${LOCALBASE}/lib" \ CPPFLAG="-I${LOCALBASE}/include" .if defined(PREFIX) CONFIGURE_ARGS+= --prefix="${PREFIX}" .endif .if defined(SYSCONFDIR) CONFIGURE_ARGS+= --sysconfdir="${SYSCONFDIR}" .endif .if !defined(FOOMATIC) CONFIGURE_ARGS+= --disable-foomatic .endif MAN8= ifhp.8 textps.8 pre-everything:: @${ECHO_MSG} "If you want to replace the default printing system with LPRng, use:" @${ECHO_MSG} " make PREFIX=/usr SYSCONFDIR=/etc clean all install" @if [ "${PREFIX}" = "/usr" -a ! -d /usr/man ] ; then \ ${ECHO_MSG} "The man pages will be installed in /usr/man." ; \ ${ECHO_MSG} "You should make a symbolic link /usr/share/man from /usr/man"; \ ${ECHO_MSG} " ln -s /usr/share/man /usr/man"; \ ${ECHO_MSG} "If you do not, you will retain the old FreeBSD man pages."; \ ${ECHO_MSG} "See the hier(7) man page for details of the FreeBSD file system"; \ ${ECHO_MSG} "layout. Configure is not equipped to determine the location of"; \ ${ECHO_MSG} 'man pages and defaults to $${PREFIX}/man, which is incorrect for FreeBSD.'; \ fi @${ECHO_MSG} "Configuring with '${CONFIGURE_ARGS}'" post-install: .if !defined(NOPORTSDOCS) @${INSTALL} -d -o ${SHAREOWN} -g ${SHAREGRP} -m 0555 ${DOCSDIR}/Reference .for ext in html pdf ppt ps txt gif jpg png if test -n "VERBOSE_INSTALL"; then set -x; fi; \ src=${WRKSRC}/DOCS; \ for i in `ls $${src} | ${GREP} "\.${ext}$$"`; \ do ${INSTALL_DATA} $${src}/$$i ${DOCSDIR}/Reference; done; .endfor .endif @${SED} -e "s!DOCSDIR!${DOCSDIR}/!" ${PKGMESSAGE} .include ifhp-3.5.20/DISTRIBUTIONS/ifhp/Makefile.build0100644000175100017510000001322307756250157020527 0ustar papowellpapowell# FreeBSD ifhp Distribution Port Generation # Patrick Powell # Tue Jun 6 18:06:07 PDT 2000 # # The scripts in this directory largely automate the process # of building a ifhp port or package for FreeBSD. They # a) ${MAKE} the pkg-plist and other files # b) do a slew of regression tests, etc. # c) make a port or package # # Added targets for package/port/testers: # All REPEAT ALL of these targets have security loopholes and should NOT # be used on a system where other users are active. You have been # warned. # # plist: this makes the pkg-plist. It is assumed # that you will do this on a standalone system, so # it is not paranoid about testing for files, etc. # You are warned. # checkit: you should use this target to (literally) checkit # to ${MAKE} sure the package installs # cleanit: you should use this target to clean things up. # This is the equivalent of 'distclean' # packageit: ${MAKE} a package, install it, clean it, abuse it, # and otherwise torture test it. Used for checking # to ${MAKE} sure scripts work # addit: use pkg_add # removeit: use pkg_delete # #Step 1: untar the distribution and then go the the FreeBSD support directory: # tar zxvf ifhp-...tgz # cd ifhp*/DI*/FR* # #Step 2: (For the VERY paranoid) # read the rest of this Makefile! # ${MAKE} -f Makefile.build checkit # this does all sorts of tests, etc. # The final result is ifhp installed and a port made in this # directory. # #Step 2: (For the blithely accepting) # ${MAKE} -f Makefile.build plist # ${MAKE} port # all: @echo "checkit: you should use this target to (literally) checkit" @echo " to ${MAKE} sure the package installs and to generate a port." @echo " Does: make makesum plist deinstall reinstall package port" @echo "cleanit: you should use this target to clean things up." @echo " This is the equivalent of 'distclean'" @echo "packageit: ${MAKE} a package, install it, clean it, abuse it," @echo " and otherwise torture test it. Used for checking" @echo " to ${MAKE} sure scripts work" @echo "plist: this makes the pkg-plist. It is assumed" @echo " that you will do this on a standalone system, so" @echo " it is not paranoid about testing for files, etc." @echo "addit: use pkg_add" @echo "removeit: use pkg_delete" localupdate: echo ${PORTNAME} set -x; \ cd ../../..; f=`ls |grep ${PORTNAME} |grep 'tgz$$' | tail -1`; \ echo FILE $$f; \ if [ -f $$f ] ; then cp $$f /usr/ports/distfiles; fi ${MAKE} makesum checkit: -v=`pkg_info |grep ${PORTNAME} | sed -e 's/ .*//'`; pkg_delete $$v ${MAKE} clean makesum ${MAKE} -f Makefile.build plist -${MAKE} deinstall ${MAKE} reinstall FORCE_PKG_REGISTER=YES ${MAKE} package FORCE_PKG_REGISTER=YES ${MAKE} deinstall pkg_add ${DISTNAME}*z pkg_delete ${DISTNAME} ${MAKE} -f Makefile.build port # do the tests in the book. But we cheat a bit packageit: -${RM} -f *.*z -${MAKE} deinstall #${MAKE} clean #${MAKE} makesum #make ${MAKE} install ${MAKE} package ${MAKE} deinstall pkg_add *.*z ${MAKE} deinstall pkg_add *.*z pkg_delete ${DISTNAME} plist: cp /dev/null pkg-plist -${MAKE} deinstall ${MAKE} all MAN1=`cd work/*/man; for i in *1; do if [ -f $$i ] ; then printf " $$i" ; fi; done`; \ MAN5=`cd work/*/man; for i in *5; do if [ -f $$i ] ; then printf " $$i "; fi; done`; \ MAN8=`cd work/*/man; for i in *8; do if [ -f $$i ] ; then printf " $$i "; fi; done`; \ perl -spi \ -e "s/^MAN1=.*/MAN1=$$MAN1/;" \ -e "s/^MAN5=.*/MAN5=$$MAN5/;" \ -e "s/^MAN8=.*/MAN8=$$MAN8/;" \ Makefile ${MAKE} FORCE_PKG_REGISTER=YES VERBOSE_INSTALL="set -x" reinstall MAKEPACKAGE=YES 2>&1 |tee /tmp/install.log L: grep -e '^+* */usr/bin/install' /tmp/install.log >/tmp/install.lines grep -e '^ *SYMLINK' /tmp/install.log >>/tmp/install.lines sed -n -e "/\/man\//d" -e "s,^.*${PREFIX}/,,p" /tmp/install.lines >pkg-plist M: find ${DOCSDIR} -type f | sed -e 's,${DOCSDIR}/,%%PORTDOCS%%%%DOCSDIR%%/,' >>pkg-plist find ${DOCSDIR} -type d | sed -n -e 's,${DOCSDIR}/,@dirrm %%PORTDOCS%%%%DOCSDIR%%/,p' | sort -r |uniq >>pkg-plist echo "@dirrm %%PORTDOCS%%%%DOCSDIR%%" >>pkg-plist # put the updated postinstall script into the package directory if [ -f ${WRKSRC}/preremove ] ; then ${CP} ${WRKSRC}/preremove pkg-deinstall; fi if [ -f ${WRKSRC}/postinstall ] ; then ${CP} ${WRKSRC}/postinstall pkg-install; fi sed -e 's!DOCSDIR!${DOCSDIR}!' files-pkg-message >pkg-message -${MAKE} deinstall addit: pkg_add ${DISTNAME}.*z removeit: pkg_delete ${DISTNAME} port: ${MAKE} deinstall rm -rf *.*z *.bak /tmp/${PORTNAME} mkdir /tmp/${PORTNAME} -cp Makefile distinfo pkg-* /tmp/${PORTNAME} cd /tmp; shar ` find ${PORTNAME} -print` >${PORTNAME}.port ; rm -rf ${PORTNAME} cd /tmp; sh ${PORTNAME}.port; cd ${PORTNAME}; ${MAKE} install cleanit clean: rm -rf pkg-plist distinfo *.*z work pkg-install pkg-deinstall /usr/ports/distfiles/${PORTNAME}* ${MAKE} clean TESTDIR=/tmp/DISTDIR test-fetch: -rm -rf ${TESTDIR} ${MKDIR} ${TESTDIR} (cd ${TESTDIR}; \ for file in ${DISTFILES}; do \ md5 /usr/ports/distfiles/$${file}; \ for site in `${SORTED_MASTER_SITES_CMD}`; do \ ${ECHO_MSG} ">> Attempting to fetch from $${site}."; \ DIR=${DIST_SUBDIR}; \ case $${file} in \ */*) ${MKDIR} $${file%/*}; \ args="-o $${file} $${site}$${file}";; \ *) args=$${site}$${file};; \ esac; \ if ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} ${FETCH_AFTER_ARGS}; then \ ${ECHO_MSG} ">> OK $${file} from $${site}"; \ md5 $${file}; \ else \ ${ECHO_MSG} ">> FAIL $${file} from $${site}";\ fi \ done; \ done) .include "Makefile" ifhp-3.5.20/DISTRIBUTIONS/ifhp/UNPACKifhp0100644000175100017510000000065007454132356017537 0ustar papowellpapowell#!/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/kerberos/bin:/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin export PATH f=`echo ifhp*[0-9]`; if [ -n "$f" ] ; then for i in $f ; do mv $i $i.x; rm -rf $i.x & done fi f=`ls /usr/ports/distfiles/ifhp*z | tail -1` echo Using $f if [ -n "$f" ] ; then tar zxvf $f fi cd ifhp*[0-9]/DIS*/F* ; make checkit ifhp-3.5.20/DISTRIBUTIONS/ifhp/distinfo0100644000175100017510000000007107756250253017525 0ustar papowellpapowellMD5 (ifhp-3.5.13.tgz) = 07cd3062c785c475445b250e66085909 ifhp-3.5.20/DISTRIBUTIONS/ifhp/pkg-descr0100644000175100017510000000056407454132356017572 0ustar papowellpapowellifhp is a highly versatile print filter for BSD based print spoolers. It can be configured to handle text, PostScript, PJL, PCL, and raster printers, supports conversion from one format to another, and can be used as a stand-alone print utility. It is the primary supported print filter for the LPRng print spooler. WWW: http://www.lprng.com/ FTP: ftp://ftp.lprng.com/ ifhp-3.5.20/DISTRIBUTIONS/ifhp/pkg-message0100644000175100017510000000071707756241102020111 0ustar papowellpapowellThe ifhp configuration file is ifhp.conf For further information, have a look at: /usr/local/share/doc/ifhp also: WWW: http://www.lprng.com/ Commercial support is available from Astart Technologies: Patrick Powell Astart Technologies papowell@astart.com 6741 Convoy Court Network and System San Diego, CA 92111 Consulting 858-874-6543 FAX 858-751-2435 LPRng - Print Spooler (http://www.lprng.com) ifhp-3.5.20/DISTRIBUTIONS/ifhp/pkg_plist0100644000175100017510000000000007726144510017665 0ustar papowellpapowellifhp-3.5.20/DISTRIBUTIONS/ifhp/pkg-plist0100644000175100017510000000000007756250253017610 0ustar papowellpapowellifhp-3.5.20/DISTRIBUTIONS/ifhp/files-pkg-message0100644000175100017510000000067507756214441021222 0ustar papowellpapowellThe ifhp configuration file is ifhp.conf For further information, have a look at: DOCSDIR also: WWW: http://www.lprng.com/ Commercial support is available from Astart Technologies: Patrick Powell Astart Technologies papowell@astart.com 6741 Convoy Court Network and System San Diego, CA 92111 Consulting 858-874-6543 FAX 858-751-2435 LPRng - Print Spooler (http://www.lprng.com) ifhp-3.5.20/ltmain.sh0100644000175100017510000042671510130541264014615 0ustar papowellpapowell# ltmain.sh - Provide generalized library-building support services. SED=sed # ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" # Parse our command line options once, thoroughly. while test $# -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in execute_dlfiles) execute_dlfiles="$execute_dlfiles $arg" ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case $arg in --help) show_help=yes ;; --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" exit 0 ;; --config) ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 exit 0 ;; --debug) echo "$progname: enabling shell trace mode" set -x ;; --dry-run | -n) run=: ;; --features) echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit 0 ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --preserve-dup-deps) duplicate_deps="yes" ;; --quiet | --silent) show=: ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit 1 ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then case $nonopt in *cc | *++ | gcc* | *-gcc* | xlc*) mode=link for arg do case $arg in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit 1 fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= prev= lastarg= srcfile="$nonopt" suppress_output= user_target=no for arg do case $prev in "") ;; xcompiler) # Aesthetically quote the previous argument. prev= lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac # Add the previous argument to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi continue ;; esac # Accept any command-line options. case $arg in -o) if test "$user_target" != "no"; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit 1 fi user_target=next ;; -static) build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; -Xcompiler) prev=xcompiler continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac lastarg="$lastarg $arg" done IFS="$save_ifs" lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` # Add the arguments to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi continue ;; esac case $user_target in next) # The next one is the -o target name user_target=yes continue ;; yes) # We got the output file user_target=set libobj="$arg" continue ;; esac # Accept the current argument as the source file. lastarg="$srcfile" srcfile="$arg" # Aesthetically quote the previous argument. # Backslashify any backslashes, double quotes, and dollar signs. # These are the only characters that are still specially # interpreted inside of double-quoted scrings. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $lastarg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") lastarg="\"$lastarg\"" ;; esac # Add the previous argument to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi done case $user_target in set) ;; no) # Get the name of the library object. libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; *) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit 1 ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSfmso]' case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.f90) xform=f90 ;; *.for) xform=for ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit 1 ;; esac if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit 1 fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $libobj" else removelist="$libobj" fi $run $rm $removelist trap "$run $rm $removelist; exit 1" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit 1" 1 2 15 else need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $run ln "$0" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi echo $srcfile > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then # All platforms use -DPIC, to notify preprocessed assembler code. command="$base_compile $srcfile $pic_flag -DPIC" else # Don't build PIC code command="$base_compile $srcfile" fi if test "$build_old_libs" = yes; then lo_libobj="$libobj" dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$libobj"; then dir="$objdir" else dir="$dir/$objdir" fi libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` if test -d "$dir"; then $show "$rm $libobj" $run $rm $libobj else $show "$mkdir $dir" $run $mkdir $dir status=$? if test $status -ne 0 && test ! -d $dir; then exit $status fi fi fi if test "$compiler_o_lo" = yes; then output_obj="$libobj" command="$command -o $output_obj" elif test "$compiler_c_o" = yes; then output_obj="$obj" command="$command -o $output_obj" fi $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else test -n "$output_obj" && $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed, then go on to compile the next one if test x"$output_obj" != x"$libobj"; then $show "$mv $output_obj $libobj" if $run $mv $output_obj $libobj; then : else error=$? $run $rm $removelist exit $error fi fi # If we have no pic_flag, then copy the object into place and finish. if (test -z "$pic_flag" || test "$pic_mode" != default) && test "$build_old_libs" = yes; then # Rename the .lo from within objdir to obj if test -f $obj; then $show $rm $obj $run $rm $obj fi $show "$mv $libobj $obj" if $run $mv $libobj $obj; then : else error=$? $run $rm $removelist exit $error fi xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` # Now arrange that obj and lo_libobj become the same file $show "(cd $xdir && $LN_S $baseobj $libobj)" if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then # Unlock the critical section if it was locked if test "$need_locks" != no; then $run $rm "$lockfile" fi exit 0 else error=$? $run $rm $removelist exit $error fi fi # Allow error messages only from the first compilation. suppress_output=' >/dev/null 2>&1' fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $srcfile" else # All platforms use -DPIC, to notify preprocessed assembler code. command="$base_compile $srcfile $pic_flag -DPIC" fi if test "$compiler_c_o" = yes; then command="$command -o $obj" output_obj="$obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed if test x"$output_obj" != x"$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Create an invalid libtool object if no PIC, so that we do not # accidentally link it into a program. if test "$build_libtool_libs" != yes; then $show "echo timestamp > $libobj" $run eval "echo timestamp > \$libobj" || exit $? else # Move the .lo from within objdir $show "$mv $libobj $lo_libobj" if $run $mv $libobj $lo_libobj; then : else error=$? $run $rm $removelist exit $error fi fi fi # Unlock the critical section if it was locked if test "$need_locks" != no; then $run $rm "$lockfile" fi exit 0 ;; # libtool link mode link | relink) modename="$modename: link" case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invokation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args="$nonopt" compile_command="$nonopt" finalize_command="$nonopt" compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` avoid_version=no dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= # We need to know -static, to get the right output filenames. for arg do case $arg in -all-static | -static) if test "X$arg" = "X-all-static"; then if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test $# -gt 0; do arg="$1" shift case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; esac libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit 1 fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= compile_command="$compile_command $wl$qarg" finalize_command="$finalize_command $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n $prev prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" exit 1 fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | no/*-*-nonstopux*) compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" ;; esac continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 exit 1 fi dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$dir:"*) ;; *) dllsearchpath="$dllsearchpath:$dir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-pw32* | *-*-beos*) # These systems don't actually have a C or math library (as such) continue ;; *-*-mingw* | *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd4*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -module) module=yes case $host in *-*-freebsd*) # Do not build the useless static library build_old_libs=no ;; esac continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # The PATH hackery in wrapper scripts is required on Windows # in order for the loader to find any dlls it needs. $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -o) prev=output ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Wl,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $wl$flag" linker_flags="$linker_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; *.lo | *.$objext) # A library or standard object. if test "$prev" = dlfiles; then # This file was specified with -dlopen. if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $arg" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` prev= else case $arg in *.lo) libobjs="$libobjs $arg" ;; *) objs="$objs $arg" ;; esac fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done # argument parsing loop if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the object directory. if test ! -d $output_objdir; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test $status -ne 0 && test ! -d $output_objdir; then exit $status fi fi # Determine the type of output case $output in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit 1 ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if test "X$duplicate_deps" = "Xyes" ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 exit 1 ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do if test $linkmode = prog; then # Determine which files to process case $pass in dlopen) libs="$dlfiles" save_deplibs="$deplibs" # Collect dlpreopened libraries deplibs= ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi for deplib in $libs; do lib= found=no case $deplib in -l*) if test $linkmode = oldlib && test $linkmode = obj; then $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 continue fi if test $pass = conv; then deplibs="$deplib $deplibs" continue fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do # Search the libtool library lib="$searchdir/lib${name}.la" if test -f "$lib"; then found=yes break fi done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test $pass = conv && continue newdependency_libs="$deplib $newdependency_libs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; prog) if test $pass = conv; then deplibs="$deplib $deplibs" continue fi if test $pass = scan; then deplibs="$deplib $deplibs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2 ;; esac # linkmode continue ;; # -L -R*) if test $pass = link; then dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test $pass = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) if test "$deplibs_check_method" != pass_all; then echo echo "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not used here." else echo echo "*** Warning: Linking the shared library $output against the" echo "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi continue ;; prog) if test $pass != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test $found = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib'" 1>&2 exit 1 fi # Check to see that this really is a libtool archive. if (${SED} -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." dlname= dlopen= dlpreopen= libdir= library_names= old_library= # If the library was installed with an old release of libtool, # it will not redefine variable installed. installed=yes # Read the .la file case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test $linkmode = oldlib && test $linkmode = obj; }; then # Add dl[pre]opened files of deplib test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test $pass = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit 1 fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test $linkmode != prog && test $linkmode != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 exit 1 fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit 1 fi # This library was specified with -dlopen. if test $pass = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 exit 1 fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. dlprefiles="$dlprefiles $lib" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 abs_ladir="$ladir" fi ;; esac laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then $echo "$modename: warning: library \`$lib' was moved." 1>&2 dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` # This library was specified with -dlpreopen. if test $pass = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 exit 1 fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test $linkmode = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" fi continue fi if test $linkmode = prog && test $pass != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test esac # Need to link against all dependency_libs? if test $linkalldeplibs = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... link_static=no # Whether the deplib will be linked statically if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then # Link against this shared library if test "$linkmode,$pass" = "prog,link" || { test $linkmode = lib && test $hardcode_into_libs = yes; }; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac if test $linkmode = prog; then # We need to hardcode the library path if test -n "$shlibpath_var"; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *" $absdir "*) ;; *) temp_rpath="$temp_rpath $dir" ;; esac fi fi fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin*) major=`expr $current - $age` versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" soname=`echo $soroot | ${SED} -e 's/^.*\///'` newlib="libimp-`echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else $show "extracting exported symbol list from \`$soname'" save_ifs="$IFS"; IFS='~' eval cmds=\"$extract_expsyms_cmds\" for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" save_ifs="$IFS"; IFS='~' eval cmds=\"$old_archive_from_expsyms_cmds\" for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n $old_archive_from_expsyms_cmds if test $linkmode = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit 1 fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test $linkmode = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test $linkmode = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" add="-l$name" fi if test $linkmode = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test $linkmode = prog; then if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi # Try to link the static library # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo echo "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else convenience="$convenience $dir/$old_library" old_convenience="$old_convenience $dir/$old_library" deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test $linkmode = lib; then if test -n "$dependency_libs" && { test $hardcode_into_libs != yes || test $build_old_libs = yes || test $link_static = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test $link_all_deplibs != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$deplib" && dir="." # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" fi ;; esac if grep "^installed=no" $deplib > /dev/null; then path="-L$absdir/$objdir" else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit 1 fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 fi path="-L$absdir" fi ;; *) continue ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$deplibs $path" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test $pass = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test $pass != dlopen; then test $pass != scan && dependency_libs="$newdependency_libs" if test $pass != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do case $deplib in -L*) new_libs="$deplib $new_libs" ;; *) case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi if test "$pass" = "conv" && { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then libs="$deplibs" # reset libs deplibs= fi done # for pass if test $linkmode = prog; then dlfiles="$newdlfiles" dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 exit 1 else echo echo "*** Warning: Linking the shared library $output against the non-libtool" echo "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi if test "$dlself" != no; then $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test $# -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. libext=al oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit 1 fi current="$2" revision="$3" age="$4" # Check that each of the things are valid numbers. case $current in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case $revision in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case $age in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac if test $age -gt $current; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header major=.`expr $current - $age` versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; irix | nonstopux) major=`expr $current - $age + 1` case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test $loop != 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=.`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test $loop != 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. major=`expr $current - $age` versuffix="-$major" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= verstring="0.0" case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring="" ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi if test "$mode" != relink; then # Remove our outputs. $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. for path in $notinst_path; do lib_search_path=`echo "$lib_search_path " | ${SED} -e 's% $path % %g'` deplibs=`echo "$deplibs " | ${SED} -e 's% -L$path % %g'` dependency_libs=`echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test $hardcode_into_libs != yes || test $build_old_libs = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. ;; *) # Add libc to deplibs on all other systems if necessary. if test $build_libtool_need_lc = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behaviour. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | ${SED} 10q \ | egrep "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done if test -n "$a_deplib" ; then droppeddeps=yes echo echo "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then echo "*** with $libname but no candidates were found. (...for file magic test)" else echo "*** with $libname and none of the candidates passed a file format test" echo "*** using a file magic. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name="`expr $a_deplib : '-l\(.*\)'`" # If $name is empty we are operating on a -L argument. if test -n "$name" && test "$name" != "0"; then libname=`eval \\$echo \"$libname_spec\"` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check below in file_magic test if eval echo \"$potent_lib\" 2>/dev/null \ | ${SED} 10q \ | egrep "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done if test -n "$a_deplib" ; then droppeddeps=yes echo echo "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then echo "*** with $libname but no candidates were found. (...for regex pattern test)" else echo "*** with $libname and none of the candidates passed a file format test" echo "*** using a regex pattern. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | grep . >/dev/null; then echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" echo "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test $allow_undefined = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test $hardcode_into_libs = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi test -z "$dlname" && dlname=$soname lib="$output_objdir/$realname" for link do linknames="$linknames $link" done # Ensure that we have .o objects for linkers which dislike .lo # (e.g. aix) in case we are running --disable-static for obj in $libobjs; do xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` if test ! -f $xdir/$oldobj; then $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? fi done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols eval cmds=\"$export_symbols_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval cmds=\"$archive_expsym_cmds\" else save_deplibs="$deplibs" for conv in $convenience; do tmp_deplibs= for test_deplib in $deplibs; do if test "$test_deplib" != "$conv"; then tmp_deplibs="$tmp_deplibs $test_deplib" fi done deplibs="$tmp_deplibs" done eval cmds=\"$archive_cmds\" deplibs="$save_deplibs" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? exit 0 fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case $output in *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit 1 fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" eval cmds=\"$reload_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. $show "echo timestamp > $libobj" $run eval "echo timestamp > $libobj" || exit $? exit 0 fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" eval cmds=\"$reload_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" else # Just create a symlink. $show $rm $libobj $run $rm $libobj xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$libobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` $show "(cd $xdir && $LN_S $oldobj $baseobj)" $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 ;; prog) case $host in *cygwin*) output=`echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` case $host in *darwin*) # Don't allow lazy linking, it breaks C++ global constructors compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" ;; esac ;; esac compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$libdir:"*) ;; *) dllsearchpath="$dllsearchpath:$libdir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$output.exp" $run $rm $export_symbols $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`echo "$arg" | ${SED} -e 's%^.*/%%'` $run eval 'echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[] = {\ " eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; *-*-freebsd*) # FreeBSD doesn't need this... ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit 1 ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test $need_relink = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $run $rm $output # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? exit 0 fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $0 --fallback-echo"; then case $0 in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; *) qecho="$SHELL `pwd`/$0 --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`echo $output|${SED} 's,.exe$,,'` ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe ;; *) exeext= ;; esac $rm $output trap "$rm $output; exit 1" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then echo >> $output "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $echo \"\$relink_command_output\" >&2 $rm \"\$progdir/\$file\" exit 1 fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 ${SED} $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # win32 systems need to use the prog path for dll # lookup to work *-*-cygwin* | *-*-pw32*) $echo >> $output "\ exec \$progdir/\$program \${1+\"\$@\"} " ;; # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \$progdir\\\\\$program \${1+\"\$@\"} " ;; *) $echo >> $output "\ # Export the path to the program. PATH=\"\$progdir:\$PATH\" export PATH exec \$program \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit 1 fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " chmod +x $output fi exit 0 ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" # Add in members from convenience archives. for xlib in $addlibs; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` done fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then eval cmds=\"$old_archive_from_new_cmds\" else # Ensure that we have .o objects in place in case we decided # not to build a shared library, and have fallen back to building # static libs even though --disable-static was passed! for oldobj in $oldobjs; do if test ! -f $oldobj; then xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$oldobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` $show "(cd $xdir && ${LN_S} $obj $baseobj)" $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? fi done eval cmds=\"$old_archive_cmds\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit 1 fi newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi newdlfiles="$newdlfiles $libdir/$name" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi newdlprefiles="$newdlprefiles $libdir/$name" done dlprefiles="$newdlprefiles" fi $rm $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test $need_relink = yes; then $echo >> $output "\ relink_command=\"$relink_command\"" fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit 0 ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg="$nonopt" fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest="$arg" continue fi case $arg in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; -m) prev="-m" ;; -o) prev="-o" ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest="$arg" continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit 1 fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test $# -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit 1 fi fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi library_names= old_library= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" if test -n "$relink_command"; then $echo "$modename: warning: relinking \`$file'" 1>&2 $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 continue fi fi # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. $show "$install_prog $dir/$srcname $destdir/$realname" $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$striplib $destdir/$realname" $run eval "$striplib $destdir/$realname" || exit $? fi if test $# -gt 0; then # Delete the old symlinks, and create new ones. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" eval cmds=\"$postinstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. case $host in *-*-freebsd*) # Do not install the useless pseudo-library ;; *) name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? ;; esac # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.$objext) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit 0 ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Do a test to see if this is really a libtool program. case $host in *cygwin*|*mingw*) wrapper=`echo $file | ${SED} -e 's,.exe$,,'` ;; *) wrapper=$file ;; esac if (${SED} -e '4q' $wrapper | egrep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then notinst_deplibs= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $wrapper ;; *) . ./$wrapper ;; esac # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 exit 1 fi finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $wrapper ;; *) . ./$wrapper ;; esac outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir="$tmpdir/libtool-$$" if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : else $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyways case $install_prog,$host in /usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) destfile=`echo $destfile | ${SED} -e 's,.exe$,,'` ;; esac ;; esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. eval cmds=\"$old_postinstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $0 --finish$current_libdirs' else exit 0 fi ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. eval cmds=\"$finish_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = ":" && exit 0 echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do echo " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" echo "more information, such as the ld(1) and ld.so(8) manual pages." echo "----------------------------------------------------------------------" exit 0 ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit 1 fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit 1 fi dir= case $file in *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit 1 fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved enviroment variables if test "${save_LC_ALL+set}" = set; then LC_ALL="$save_LC_ALL"; export LC_ALL fi if test "${save_LANG+set}" = set; then LANG="$save_LANG"; export LANG fi # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit 0 fi ;; # libtool clean and uninstall mode clean | uninstall) modename="$modename: $mode" rm="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit 1 fi rmdirs= for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$file"; then dir=. objdir="$objdir" else objdir="$dir/$objdir" fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` test $mode = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test $mode = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if (test -L "$file") >/dev/null 2>&1 \ || (test -h "$file") >/dev/null 2>&1 \ || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" if test $mode = uninstall; then if test -n "$library_names"; then # Do each command in the postuninstall commands. eval cmds=\"$postuninstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" if test $? != 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. eval cmds=\"$old_postuninstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" if test $? != 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. fi fi ;; *.lo) if test "$build_old_libs" = yes; then oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` rmfiles="$rmfiles $dir/$oldobj" fi ;; *) # Do a test to see if this is a libtool program. if test $mode = clean && (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then relink_command= . $dir/$file rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi fi ;; esac $show "$rm $rmfiles" $run $rm $rmfiles || exit_status=1 done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then $show "rmdir $dir" $run rmdir $dir >/dev/null 2>&1 fi done exit $exit_status ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit 1 ;; esac if test -z "$exec_cmd"; then $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit 1 fi fi # test -z "$show_help" if test -n "$exec_cmd"; then eval exec $exec_cmd exit 1 fi # We need to display help for each of the modes. case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --version print version information MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE." exit 0 ;; clean) $echo \ "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac echo $echo "Try \`$modename --help' for more information about other modes." exit 0 # Local Variables: # mode:shell-script # sh-indentation:2 # End: ifhp-3.5.20/libtool0100644000175100017510000045007510130541264014360 0ustar papowellpapowell#! /bin/sh # libtool - Provide generalized library-building support services. # Generated automatically by (GNU ifhp 3.5.20) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996-2000 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed that does not truncate output. SED="/usr/bin/sed" # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="/usr/bin/sed -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host h110.private: # Shell to use when invoking shell scripts. SHELL="/bin/sh" # Whether or not to build shared libraries. build_libtool_libs=no # Whether or not to build static libraries. build_old_libs=yes # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=yes # Whether or not to optimize for fast installation. fast_install=needless # The host system. host_alias= host=i386-unknown-freebsd5.1 # An echo program that does not interpret backslashes. echo="echo" # The archiver. AR="ar" AR_FLAGS="cru" # The default C compiler. CC="gcc" # Is the compiler the GNU C compiler? with_gcc=yes # The linker used to build libraries. LD="/usr/bin/ld" # Whether we need hard or soft links. LN_S="ln -s" # A BSD-compatible nm program. NM="/usr/bin/nm -B" # A symbol stripping program STRIP=strip # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=file # Used on cygwin: DLL creation program. DLLTOOL="dlltool" # Used on cygwin: object dumper. OBJDUMP="objdump" # Used on cygwin: assembler. AS="as" # The name of the directory that contains temporary libtool files. objdir=.libs # How to create reloadable object files. reload_flag=" -r" reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" # How to pass a linker flag through the compiler. wl="-Wl," # Object file suffix (normally "o"). objext="o" # Old archive suffix (normally "a"). libext="a" # Executable file suffix (normally ""). exeext="" # Additional compiler flags for building library objects. pic_flag=" -fPIC" pic_mode=default # Does compiler simultaneously support -c and -o options? compiler_c_o="yes" # Can we write directly to a .lo ? compiler_o_lo="yes" # Must we lock files when doing compilation ? need_locks="no" # Do we need the lib prefix for modules? need_lib_prefix=no # Do we need a version for libraries? need_version=no # Whether dlopen is supported. dlopen_support=unknown # Whether dlopen of programs is supported. dlopen_self=unknown # Whether dlopen of statically linked programs is supported. dlopen_self_static=unknown # Compiler flag to prevent dynamic linking. link_static_flag="-static" # Compiler flag to turn off builtin functions. no_builtin_flag=" -fno-builtin -fno-rtti -fno-exceptions" # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec="\${wl}--export-dynamic" # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" # Compiler flag to generate thread-safe objects. thread_safe_flag_spec="" # Library versioning type. version_type=freebsd-elf # Format of library name prefix. libname_spec="lib\$name" # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec="\${libname}\${release}.so\$versuffix \${libname}\${release}.so \$libname.so" # The coded name of the library, if different from the real name. soname_spec="" # Commands used to build and install an old-style archive. RANLIB="ranlib" old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib" old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib" old_postuninstall_cmds="" # Create an old-style archive from a shared archive. old_archive_from_new_cmds="" # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds="" # Commands used to build and install a shared archive. archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" archive_expsym_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib" postinstall_cmds="" postuninstall_cmds="" # Commands to strip libraries. old_striplib="strip --strip-debug" striplib="strip --strip-unneeded" # Method to check whether dependent libraries are shared objects. deplibs_check_method="pass_all" # Command to use when deplibs_check_method == file_magic. file_magic_cmd="\$MAGIC_CMD" # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag="" # Flag that forces no undefined symbols. no_undefined_flag="" # Commands used to finish a libtool library installation in a directory. finish_cmds="" # Same as above, but a single script fragment to be evaled but not shown. finish_eval="" # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGISTW][ABCDGISTW]*\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'" # Transform the output of nm in a proper C declaration global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern char \\1;/p'" # Transform the output of nm in a C name address pair global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'" # This is the shared library runtime path variable. runpath_var=LD_RUN_PATH # This is the shared library path variable. shlibpath_var=LD_LIBRARY_PATH # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=no # How to hardcode a shared library path into an executable. hardcode_action=immediate # Whether we should hardcode library paths into libraries. hardcode_into_libs=yes # Flag to hardcode $libdir into a binary during linking. # This must work even if $libdir does not exist. hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir" # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator="" # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=no # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=no # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=unsupported # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=unknown # Compile-time system search path for libraries sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" # Run-time system search path for libraries sys_lib_dlsearch_path_spec="/lib /usr/lib" # Fix the shell variable $srcfile for the compiler. fix_srcfile_path="" # Set to yes if exported symbols are required. always_export_symbols=no # The commands to list exported symbols. export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | sed 's/.* //' | sort | uniq > \$export_symbols" # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds="" # Symbols that should not be listed in the preloaded symbols. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Symbols that must always be exported. include_expsyms="" # ### END LIBTOOL CONFIG # ltmain.sh - Provide generalized library-building support services. SED=sed # ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" # Parse our command line options once, thoroughly. while test $# -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in execute_dlfiles) execute_dlfiles="$execute_dlfiles $arg" ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case $arg in --help) show_help=yes ;; --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" exit 0 ;; --config) ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 exit 0 ;; --debug) echo "$progname: enabling shell trace mode" set -x ;; --dry-run | -n) run=: ;; --features) echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit 0 ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --preserve-dup-deps) duplicate_deps="yes" ;; --quiet | --silent) show=: ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit 1 ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then case $nonopt in *cc | *++ | gcc* | *-gcc* | xlc*) mode=link for arg do case $arg in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit 1 fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= prev= lastarg= srcfile="$nonopt" suppress_output= user_target=no for arg do case $prev in "") ;; xcompiler) # Aesthetically quote the previous argument. prev= lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac # Add the previous argument to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi continue ;; esac # Accept any command-line options. case $arg in -o) if test "$user_target" != "no"; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit 1 fi user_target=next ;; -static) build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; -Xcompiler) prev=xcompiler continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac lastarg="$lastarg $arg" done IFS="$save_ifs" lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` # Add the arguments to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi continue ;; esac case $user_target in next) # The next one is the -o target name user_target=yes continue ;; yes) # We got the output file user_target=set libobj="$arg" continue ;; esac # Accept the current argument as the source file. lastarg="$srcfile" srcfile="$arg" # Aesthetically quote the previous argument. # Backslashify any backslashes, double quotes, and dollar signs. # These are the only characters that are still specially # interpreted inside of double-quoted scrings. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $lastarg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") lastarg="\"$lastarg\"" ;; esac # Add the previous argument to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi done case $user_target in set) ;; no) # Get the name of the library object. libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; *) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit 1 ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSfmso]' case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.f90) xform=f90 ;; *.for) xform=for ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit 1 ;; esac if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit 1 fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $libobj" else removelist="$libobj" fi $run $rm $removelist trap "$run $rm $removelist; exit 1" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit 1" 1 2 15 else need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $run ln "$0" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi echo $srcfile > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then # All platforms use -DPIC, to notify preprocessed assembler code. command="$base_compile $srcfile $pic_flag -DPIC" else # Don't build PIC code command="$base_compile $srcfile" fi if test "$build_old_libs" = yes; then lo_libobj="$libobj" dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$libobj"; then dir="$objdir" else dir="$dir/$objdir" fi libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` if test -d "$dir"; then $show "$rm $libobj" $run $rm $libobj else $show "$mkdir $dir" $run $mkdir $dir status=$? if test $status -ne 0 && test ! -d $dir; then exit $status fi fi fi if test "$compiler_o_lo" = yes; then output_obj="$libobj" command="$command -o $output_obj" elif test "$compiler_c_o" = yes; then output_obj="$obj" command="$command -o $output_obj" fi $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else test -n "$output_obj" && $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed, then go on to compile the next one if test x"$output_obj" != x"$libobj"; then $show "$mv $output_obj $libobj" if $run $mv $output_obj $libobj; then : else error=$? $run $rm $removelist exit $error fi fi # If we have no pic_flag, then copy the object into place and finish. if (test -z "$pic_flag" || test "$pic_mode" != default) && test "$build_old_libs" = yes; then # Rename the .lo from within objdir to obj if test -f $obj; then $show $rm $obj $run $rm $obj fi $show "$mv $libobj $obj" if $run $mv $libobj $obj; then : else error=$? $run $rm $removelist exit $error fi xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` # Now arrange that obj and lo_libobj become the same file $show "(cd $xdir && $LN_S $baseobj $libobj)" if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then # Unlock the critical section if it was locked if test "$need_locks" != no; then $run $rm "$lockfile" fi exit 0 else error=$? $run $rm $removelist exit $error fi fi # Allow error messages only from the first compilation. suppress_output=' >/dev/null 2>&1' fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $srcfile" else # All platforms use -DPIC, to notify preprocessed assembler code. command="$base_compile $srcfile $pic_flag -DPIC" fi if test "$compiler_c_o" = yes; then command="$command -o $obj" output_obj="$obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed if test x"$output_obj" != x"$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Create an invalid libtool object if no PIC, so that we do not # accidentally link it into a program. if test "$build_libtool_libs" != yes; then $show "echo timestamp > $libobj" $run eval "echo timestamp > \$libobj" || exit $? else # Move the .lo from within objdir $show "$mv $libobj $lo_libobj" if $run $mv $libobj $lo_libobj; then : else error=$? $run $rm $removelist exit $error fi fi fi # Unlock the critical section if it was locked if test "$need_locks" != no; then $run $rm "$lockfile" fi exit 0 ;; # libtool link mode link | relink) modename="$modename: link" case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invokation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args="$nonopt" compile_command="$nonopt" finalize_command="$nonopt" compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` avoid_version=no dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= # We need to know -static, to get the right output filenames. for arg do case $arg in -all-static | -static) if test "X$arg" = "X-all-static"; then if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test $# -gt 0; do arg="$1" shift case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; esac libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit 1 fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= compile_command="$compile_command $wl$qarg" finalize_command="$finalize_command $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n $prev prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" exit 1 fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | no/*-*-nonstopux*) compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" ;; esac continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 exit 1 fi dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$dir:"*) ;; *) dllsearchpath="$dllsearchpath:$dir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-pw32* | *-*-beos*) # These systems don't actually have a C or math library (as such) continue ;; *-*-mingw* | *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd4*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -module) module=yes case $host in *-*-freebsd*) # Do not build the useless static library build_old_libs=no ;; esac continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # The PATH hackery in wrapper scripts is required on Windows # in order for the loader to find any dlls it needs. $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -o) prev=output ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Wl,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $wl$flag" linker_flags="$linker_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; *.lo | *.$objext) # A library or standard object. if test "$prev" = dlfiles; then # This file was specified with -dlopen. if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $arg" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` prev= else case $arg in *.lo) libobjs="$libobjs $arg" ;; *) objs="$objs $arg" ;; esac fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done # argument parsing loop if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the object directory. if test ! -d $output_objdir; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test $status -ne 0 && test ! -d $output_objdir; then exit $status fi fi # Determine the type of output case $output in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit 1 ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if test "X$duplicate_deps" = "Xyes" ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 exit 1 ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do if test $linkmode = prog; then # Determine which files to process case $pass in dlopen) libs="$dlfiles" save_deplibs="$deplibs" # Collect dlpreopened libraries deplibs= ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi for deplib in $libs; do lib= found=no case $deplib in -l*) if test $linkmode = oldlib && test $linkmode = obj; then $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 continue fi if test $pass = conv; then deplibs="$deplib $deplibs" continue fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do # Search the libtool library lib="$searchdir/lib${name}.la" if test -f "$lib"; then found=yes break fi done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test $pass = conv && continue newdependency_libs="$deplib $newdependency_libs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; prog) if test $pass = conv; then deplibs="$deplib $deplibs" continue fi if test $pass = scan; then deplibs="$deplib $deplibs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2 ;; esac # linkmode continue ;; # -L -R*) if test $pass = link; then dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test $pass = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) if test "$deplibs_check_method" != pass_all; then echo echo "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not used here." else echo echo "*** Warning: Linking the shared library $output against the" echo "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi continue ;; prog) if test $pass != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test $found = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib'" 1>&2 exit 1 fi # Check to see that this really is a libtool archive. if (${SED} -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." dlname= dlopen= dlpreopen= libdir= library_names= old_library= # If the library was installed with an old release of libtool, # it will not redefine variable installed. installed=yes # Read the .la file case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test $linkmode = oldlib && test $linkmode = obj; }; then # Add dl[pre]opened files of deplib test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test $pass = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit 1 fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test $linkmode != prog && test $linkmode != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 exit 1 fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit 1 fi # This library was specified with -dlopen. if test $pass = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 exit 1 fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. dlprefiles="$dlprefiles $lib" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 abs_ladir="$ladir" fi ;; esac laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then $echo "$modename: warning: library \`$lib' was moved." 1>&2 dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` # This library was specified with -dlpreopen. if test $pass = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 exit 1 fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test $linkmode = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" fi continue fi if test $linkmode = prog && test $pass != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test esac # Need to link against all dependency_libs? if test $linkalldeplibs = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... link_static=no # Whether the deplib will be linked statically if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then # Link against this shared library if test "$linkmode,$pass" = "prog,link" || { test $linkmode = lib && test $hardcode_into_libs = yes; }; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac if test $linkmode = prog; then # We need to hardcode the library path if test -n "$shlibpath_var"; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *" $absdir "*) ;; *) temp_rpath="$temp_rpath $dir" ;; esac fi fi fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin*) major=`expr $current - $age` versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" soname=`echo $soroot | ${SED} -e 's/^.*\///'` newlib="libimp-`echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else $show "extracting exported symbol list from \`$soname'" save_ifs="$IFS"; IFS='~' eval cmds=\"$extract_expsyms_cmds\" for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" save_ifs="$IFS"; IFS='~' eval cmds=\"$old_archive_from_expsyms_cmds\" for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n $old_archive_from_expsyms_cmds if test $linkmode = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit 1 fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test $linkmode = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test $linkmode = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" add="-l$name" fi if test $linkmode = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test $linkmode = prog; then if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi # Try to link the static library # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo echo "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else convenience="$convenience $dir/$old_library" old_convenience="$old_convenience $dir/$old_library" deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test $linkmode = lib; then if test -n "$dependency_libs" && { test $hardcode_into_libs != yes || test $build_old_libs = yes || test $link_static = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test $link_all_deplibs != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$deplib" && dir="." # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" fi ;; esac if grep "^installed=no" $deplib > /dev/null; then path="-L$absdir/$objdir" else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit 1 fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 fi path="-L$absdir" fi ;; *) continue ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$deplibs $path" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test $pass = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test $pass != dlopen; then test $pass != scan && dependency_libs="$newdependency_libs" if test $pass != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do case $deplib in -L*) new_libs="$deplib $new_libs" ;; *) case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi if test "$pass" = "conv" && { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then libs="$deplibs" # reset libs deplibs= fi done # for pass if test $linkmode = prog; then dlfiles="$newdlfiles" dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 exit 1 else echo echo "*** Warning: Linking the shared library $output against the non-libtool" echo "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi if test "$dlself" != no; then $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test $# -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. libext=al oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit 1 fi current="$2" revision="$3" age="$4" # Check that each of the things are valid numbers. case $current in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case $revision in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case $age in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac if test $age -gt $current; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header major=.`expr $current - $age` versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; irix | nonstopux) major=`expr $current - $age + 1` case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test $loop != 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=.`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test $loop != 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. major=`expr $current - $age` versuffix="-$major" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= verstring="0.0" case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring="" ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi if test "$mode" != relink; then # Remove our outputs. $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. for path in $notinst_path; do lib_search_path=`echo "$lib_search_path " | ${SED} -e 's% $path % %g'` deplibs=`echo "$deplibs " | ${SED} -e 's% -L$path % %g'` dependency_libs=`echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test $hardcode_into_libs != yes || test $build_old_libs = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd*) # Do not include libc due to us having libc/libc_r. ;; *) # Add libc to deplibs on all other systems if necessary. if test $build_libtool_need_lc = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behaviour. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | ${SED} 10q \ | egrep "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done if test -n "$a_deplib" ; then droppeddeps=yes echo echo "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then echo "*** with $libname but no candidates were found. (...for file magic test)" else echo "*** with $libname and none of the candidates passed a file format test" echo "*** using a file magic. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name="`expr $a_deplib : '-l\(.*\)'`" # If $name is empty we are operating on a -L argument. if test -n "$name" && test "$name" != "0"; then libname=`eval \\$echo \"$libname_spec\"` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check below in file_magic test if eval echo \"$potent_lib\" 2>/dev/null \ | ${SED} 10q \ | egrep "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done if test -n "$a_deplib" ; then droppeddeps=yes echo echo "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then echo "*** with $libname but no candidates were found. (...for regex pattern test)" else echo "*** with $libname and none of the candidates passed a file format test" echo "*** using a regex pattern. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | grep . >/dev/null; then echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" echo "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test $allow_undefined = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test $hardcode_into_libs = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi test -z "$dlname" && dlname=$soname lib="$output_objdir/$realname" for link do linknames="$linknames $link" done # Ensure that we have .o objects for linkers which dislike .lo # (e.g. aix) in case we are running --disable-static for obj in $libobjs; do xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` if test ! -f $xdir/$oldobj; then $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? fi done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols eval cmds=\"$export_symbols_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval cmds=\"$archive_expsym_cmds\" else save_deplibs="$deplibs" for conv in $convenience; do tmp_deplibs= for test_deplib in $deplibs; do if test "$test_deplib" != "$conv"; then tmp_deplibs="$tmp_deplibs $test_deplib" fi done deplibs="$tmp_deplibs" done eval cmds=\"$archive_cmds\" deplibs="$save_deplibs" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? exit 0 fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case $output in *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit 1 fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" eval cmds=\"$reload_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. $show "echo timestamp > $libobj" $run eval "echo timestamp > $libobj" || exit $? exit 0 fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" eval cmds=\"$reload_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" else # Just create a symlink. $show $rm $libobj $run $rm $libobj xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$libobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` $show "(cd $xdir && $LN_S $oldobj $baseobj)" $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 ;; prog) case $host in *cygwin*) output=`echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` case $host in *darwin*) # Don't allow lazy linking, it breaks C++ global constructors compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" ;; esac ;; esac compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$libdir:"*) ;; *) dllsearchpath="$dllsearchpath:$libdir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$output.exp" $run $rm $export_symbols $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`echo "$arg" | ${SED} -e 's%^.*/%%'` $run eval 'echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[] = {\ " eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; *-*-freebsd*) # FreeBSD doesn't need this... ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit 1 ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test $need_relink = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $run $rm $output # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? exit 0 fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $0 --fallback-echo"; then case $0 in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; *) qecho="$SHELL `pwd`/$0 --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`echo $output|${SED} 's,.exe$,,'` ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe ;; *) exeext= ;; esac $rm $output trap "$rm $output; exit 1" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then echo >> $output "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $echo \"\$relink_command_output\" >&2 $rm \"\$progdir/\$file\" exit 1 fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 ${SED} $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # win32 systems need to use the prog path for dll # lookup to work *-*-cygwin* | *-*-pw32*) $echo >> $output "\ exec \$progdir/\$program \${1+\"\$@\"} " ;; # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \$progdir\\\\\$program \${1+\"\$@\"} " ;; *) $echo >> $output "\ # Export the path to the program. PATH=\"\$progdir:\$PATH\" export PATH exec \$program \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit 1 fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " chmod +x $output fi exit 0 ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" # Add in members from convenience archives. for xlib in $addlibs; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` done fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then eval cmds=\"$old_archive_from_new_cmds\" else # Ensure that we have .o objects in place in case we decided # not to build a shared library, and have fallen back to building # static libs even though --disable-static was passed! for oldobj in $oldobjs; do if test ! -f $oldobj; then xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$oldobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` $show "(cd $xdir && ${LN_S} $obj $baseobj)" $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? fi done eval cmds=\"$old_archive_cmds\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args)" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit 1 fi newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi newdlfiles="$newdlfiles $libdir/$name" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi newdlprefiles="$newdlprefiles $libdir/$name" done dlprefiles="$newdlprefiles" fi $rm $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test $need_relink = yes; then $echo >> $output "\ relink_command=\"$relink_command\"" fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit 0 ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg="$nonopt" fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest="$arg" continue fi case $arg in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; -m) prev="-m" ;; -o) prev="-o" ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest="$arg" continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit 1 fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test $# -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit 1 fi fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi library_names= old_library= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" if test -n "$relink_command"; then $echo "$modename: warning: relinking \`$file'" 1>&2 $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 continue fi fi # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. $show "$install_prog $dir/$srcname $destdir/$realname" $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$striplib $destdir/$realname" $run eval "$striplib $destdir/$realname" || exit $? fi if test $# -gt 0; then # Delete the old symlinks, and create new ones. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" eval cmds=\"$postinstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. case $host in *-*-freebsd*) # Do not install the useless pseudo-library ;; *) name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? ;; esac # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.$objext) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit 0 ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Do a test to see if this is really a libtool program. case $host in *cygwin*|*mingw*) wrapper=`echo $file | ${SED} -e 's,.exe$,,'` ;; *) wrapper=$file ;; esac if (${SED} -e '4q' $wrapper | egrep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then notinst_deplibs= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $wrapper ;; *) . ./$wrapper ;; esac # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 exit 1 fi finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $wrapper ;; *) . ./$wrapper ;; esac outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir="$tmpdir/libtool-$$" if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : else $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyways case $install_prog,$host in /usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) destfile=`echo $destfile | ${SED} -e 's,.exe$,,'` ;; esac ;; esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. eval cmds=\"$old_postinstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $0 --finish$current_libdirs' else exit 0 fi ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. eval cmds=\"$finish_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = ":" && exit 0 echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do echo " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" echo "more information, such as the ld(1) and ld.so(8) manual pages." echo "----------------------------------------------------------------------" exit 0 ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit 1 fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit 1 fi dir= case $file in *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit 1 fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved enviroment variables if test "${save_LC_ALL+set}" = set; then LC_ALL="$save_LC_ALL"; export LC_ALL fi if test "${save_LANG+set}" = set; then LANG="$save_LANG"; export LANG fi # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit 0 fi ;; # libtool clean and uninstall mode clean | uninstall) modename="$modename: $mode" rm="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit 1 fi rmdirs= for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$file"; then dir=. objdir="$objdir" else objdir="$dir/$objdir" fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` test $mode = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test $mode = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if (test -L "$file") >/dev/null 2>&1 \ || (test -h "$file") >/dev/null 2>&1 \ || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" if test $mode = uninstall; then if test -n "$library_names"; then # Do each command in the postuninstall commands. eval cmds=\"$postuninstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" if test $? != 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. eval cmds=\"$old_postuninstall_cmds\" save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" if test $? != 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. fi fi ;; *.lo) if test "$build_old_libs" = yes; then oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` rmfiles="$rmfiles $dir/$oldobj" fi ;; *) # Do a test to see if this is a libtool program. if test $mode = clean && (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then relink_command= . $dir/$file rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi fi ;; esac $show "$rm $rmfiles" $run $rm $rmfiles || exit_status=1 done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then $show "rmdir $dir" $run rmdir $dir >/dev/null 2>&1 fi done exit $exit_status ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit 1 ;; esac if test -z "$exec_cmd"; then $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit 1 fi fi # test -z "$show_help" if test -n "$exec_cmd"; then eval exec $exec_cmd exit 1 fi # We need to display help for each of the modes. case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --version print version information MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE." exit 0 ;; clean) $echo \ "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac echo $echo "Try \`$modename --help' for more information about other modes." exit 0 # Local Variables: # mode:shell-script # sh-indentation:2 # End: ifhp-3.5.20/configure.in0100644000175100017510000010240410130541263015267 0ustar papowellpapowelldnl process this file with GNU autoconf to produce a configure script. dnl dnl $Id: configure.in,v 1.141 2004/10/05 15:50:11 papowell Exp papowell $ dnl ---------------------------------------------------------------------------- dnl ----------------- START OF GENERAL CONFIGURATION --------------------------- AC_INIT(Makefile.in) PACKAGE=ifhp VERSION=3.5.20 AC_CONFIG_AUX_DIR(.) AC_CANONICAL_SYSTEM AC_CONFIG_HEADER(config.h) AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE",[package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION",[version]) AC_SUBST(PACKAGE) AC_SUBST(VERSION) ALL_LINGUAS="fr" AC_AIX AC_ISC_POSIX AC_MINIX AC_PREFIX_DEFAULT(/usr/local) AC_SUBST(INSTALL) AC_SUBST(INSTALL_MAN) AC_SUBST(SHELL) AC_SUBST(CPP) AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LDFLAGS) AC_SUBST(LDCC) dnl check for awk AC_PROG_AWK AC_SUBST(AWK) AC_PATH_PROG(PERL,perl)dnl AC_SUBST(PERL)dnl WITH_CCOPTS dnl WITH_CPPOPTS dnl WITH_LDOPTS dnl if test -z "$LOCALEDIR" ; then LOCALEDIR='$(prefix)/share/locale' fi; WITH_LOCALEDIR dnl AC_DISABLE_SHARED AM_PROG_LIBTOOL dnl -------------------------------------------------------------------------- dnl ------- XXXXXX START OF OPTIONS ------------------------------------------ v="cannot open"; AC_PATH_PROG(FILEUTIL,file,FILE_UTILITY_NOT_FOUND)dnl if test "$FILEUTIL" != "FILE_UTILITY_NOT_FOUND" ; then if ${FILEUTIL} - /dev/null ; then echo "the '${FILEUTIL} -' operates correctly"; else echo "Please use a file utility that handles 'file - 'correctly"; echo "You can obtain one from: ftp://ftp.astron.com/pub/file/"; echo " or ftp://ftp.lprng.com/pub/LPRng/UNIXTOOLS/file/"; echo "if necessary, use the FILEUTIL environment variable to specify the path" exit 1 fi fi AC_SUBST(FILEUTIL)dnl AC_PATH_PROG(GZIP,gzip,GZIP_NOT_FOUND)dnl AC_SUBST(GZIP)dnl AC_PATH_PROG(GS,gs,GHOSTSCRIPT_NOT_FOUND)dnl AC_SUBST(GS)dnl AC_PATH_PROG(A2PS,a2ps,A2PS_NOT_FOUND)dnl AC_SUBST(A2PS)dnl AC_PATH_PROG(CAT,cat,CAT_NOT_FOUND)dnl AC_SUBST(CAT)dnl AC_MSG_CHECKING(directory where to install the ifhp.conf file) AC_ARG_WITH(ifhp_conf, [ --with-ifhp_conf=path ifhp.conf config file (default \${sysconfdir}/ifhp.conf)], IFHP_CONF=$withval, IFHP_CONF=\${sysconfdir}/ifhp.conf, ) AC_MSG_RESULT($IFHP_CONF) AC_SUBST(IFHP_CONF) dnl --------------------------------------------------------------------------- dnl ---------- XXXXXX END OF OPTIONS ------------------------------------------ AC_MSG_CHECKING(use snmp) AC_ARG_ENABLE(snmp, [ --disable-snmp disable snmp support], [ if test "$enableval" = "yes" ; then SNMP="yes"; else SNMP="no"; fi ], [ SNMP="yes"; ] ) AC_MSG_RESULT($SNMP) AC_SUBST(SNMP) if test "$SNMP" = yes ; then if perl -MNet::SNMP -e exit ; then : else AC_MSG_ERROR([ SNMP support enabled and the Net::SNMP module not installed. Get the NET-SNMP libraries from http://www.sourceforge.net Get the Net::SNMP perl modules from http://www.cpan.org ]); fi fi AC_MSG_CHECKING(foomatic-rip) AC_ARG_WITH(foomatic-rip, [ --with-foomatic-rip=PATH path to foomatic-rip], FOOMATIC_RIP=$withval, [AC_PATH_PROG(FOOMATIC_RIP,foomatic-rip)] ) dnl AC_MSG_RESULT($FOOMATIC_RIP) AC_SUBST(FOOMATIC_RIP) AC_MSG_CHECKING(use foomatic) AC_ARG_ENABLE(foomatic, [ --disable-foomatic disable foomatic support], [ if test "$enableval" = "yes" ; then FOOMATIC="1"; else FOOMATIC="0"; fi ], [ FOOMATIC="1"; ] ) AC_MSG_RESULT($FOOMATIC) AC_SUBST(FOOMATIC) if test "${FOOMATIC}" "!=" 0 -a "${FOOMATIC_RIP}" = "" ; then AC_MSG_ERROR([ foomatic enabled and foomatic-rip not found Download foomatic-filters from: http://www.linuxprinting.org/download/foomatic ]); fi AC_MSG_CHECKING(default page size) AC_ARG_WITH(pagesize, [ --with-pagesize=SIZE default page size (default letter)], PAGE_SIZE=$withval, PAGE_SIZE=letter, ) AC_MSG_RESULT($PAGE_SIZE) AC_SUBST(PAGE_SIZE) AC_SUBST(FILTER_DIR) AC_MSG_CHECKING(filter directory) AC_ARG_WITH(filterdir, [ --with-filterdir=DIR filter directory (default \${libexecdir}/filters)], FILTER_DIR=$withval, FILTER_DIR=\${libexecdir}/filters, ) AC_MSG_RESULT($FILTER_DIR) AC_SUBST(FILTER_DIR) AC_MSG_CHECKING(font directory) AC_ARG_WITH(fontdir, [ --with-fontdir=DIR font directory (default \${libexecdir}/filters/fonts)], FONT_DIR=$withval, FONT_DIR=\${libexecdir}/filters/fonts, ) AC_MSG_RESULT($FONT_DIR) AC_SUBST(FONT_DIR) dnl default strip binaries AC_MSG_CHECKING(strip binaries) AC_ARG_ENABLE( strip, [ --disable-strip disable stripping binaries by default], [ if test "$enableval" = "yes" ; then v=yes; STRIP_OPTION=" -s "; else v=no; STRIP_OPTION=""; fi ], [ v=yes; STRIP_OPTION=" -s "; ] ) AC_MSG_RESULT($v) AC_SUBST(STRIP_OPTION) dnl dislabel ghostscript check AC_MSG_CHECKING(GhostScript check) AC_ARG_ENABLE( gscheck, [ --disable-gscheck disable checking GhostScript for security flaw], [ if test "$enableval" = "yes" ; then GSCHECK=yes; else GSCHECK=no; fi ], [ GSCHECK=no; ], ) AC_MSG_RESULT($GSCHECK) AC_SUBST(GSCHECK) if test "$GS" != "GHOSTSCRIPT_NOT_FOUND" -a "$GSCHECK" != "no" ; then AC_MSG_CHECKING(GhostScript -dSAFER and -dPARANOIDSAFER option) if $GS -q -dBATCH -dNOPAUSE -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- $srcdir/gsQuit ; then if $GS -q -dBATCH -dNOPAUSE -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- $srcdir/gsTest 1>/dev/null 2>/dev/null ; then AC_MSG_WARN( [ WARNING: '($GS) -dSAFER -dPARANOIDSAFER ' allows files to be read Please read README.GhostScriptSecurityProblem and fix your distribution of GhostScript OR use: configure --disable-gscheck ] ) AC_MSG_RESULT(GhostScript security hole found!) exit 1 else AC_MSG_RESULT(no GhostScript security hole found) fi else AC_MSG_RESULT(Error with: $GS -q -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- ) fi fi AC_MSG_CHECKING(how to redirect GhostScript output to fd 3) if test "$DEVFD3" = "" ; then v=`( if test -d /dev/fd ; then echo 3 >/dev/fd/3; fi) 2>/dev/null 3>&1 1>&2` if test "$v" != "" ; then DEVFD3=/dev/fd/3 FD3=/dev/fd/3 else DEVFD3="|$CAT >\&3" FD3="|$CAT >&3" fi rm -f gs_out gs -q -dBATCH -dNOPAUSE -dSAFER -dPARANOIDSAFER -sDEVICE=laserjet "-sOutputFile=${FD3}" ${srcdir}/gsPrint 3>gs_out if test "!" -s gs_out ; then AC_MSG_ERROR( "ERROR - gs cannot handle -sOutputFile=$OUT" ); fi fi AC_MSG_RESULT($DEVFD3) AC_SUBST(DEVFD3) dnl ---------------------------------------------------------------------------- dnl ----------- C compiler checks ----------------------------------------- AC_PROG_CC AC_PROG_CPP if test "$ac_cv_prog_gcc" = yes; then cat >conftest.c </dev/null 2>&1; then gcc -v AC_MSG_WARN( [ WARNING: gcc -O (version 2.4.5 and below) produces incorrect code for lpd.c and other large routines. ] ) fi; fi; LDCC="$CC" AC_MSG_RESULT(using CPPFLAGS=\"${CPPFLAGS}\", CFLAGS=\"${CFLAGS}\") dnl ---------------------------------------------------------------------------- dnl ------------ OS Checks -------------------------------------------------- changequote(, )dnl release=`uname -r 2>/dev/null; exit 0`; version=`echo $target_os | sed -e 's/[^0-9][^0-9]*//' -e 's/\./X/' -e 's/\.//g' -e 's/X/./' \ | awk '{ v=$1+0; if( v > 0 ){ while( v < 100 || int(v) != v ){v = v * 10;}}; print v; }' `; if test "$version" -eq 0 ; then version=`echo $release | sed -e 's/-.*//' -e 's/\.//g' \ | awk '{ v=$1+0; if( v > 0 ){ while( v < 100 || int(v) != v ){v = v * 10;}}; print v; }' `; fi osword=`echo $target_os | sed -e 's/[0-9].*//'`; export osword changequote([, ])dnl AC_MSG_RESULT([Target is $target, arch $target_cpu, os $target_os, release $release, version $version]) AC_DEFINE_UNQUOTED(ARCHITECTURE,"$target_cpu",[target CPU]) AC_DEFINE_UNQUOTED(OSNAME,"$osword",[target os name]) AC_DEFINE_UNQUOTED(OSVERSION,$version,[target os version]) ARCHITECTURE=$target_cpu OSNAME=$osword OSVERSION=$version AC_SUBST(ARCHITECTURE) AC_SUBST(OSNAME) AC_SUBST(OSVERSION) dnl ---------------------------------------------------------------------------- dnl ------------ compiler checks -------------------------------------------------- AC_C_CONST AC_C_INLINE AC_HEADER_STDC AC_HEADER_DIRENT AC_HEADER_SYS_WAIT AC_HEADER_TIME dnl typedefs: AC_TYPE_SIGNAL AC_TYPE_UID_T AC_TYPE_SIZE_T AC_TYPE_MODE_T AC_TYPE_OFF_T AC_TYPE_PID_T AC_CACHE_CHECK(checking for long long, ac_cv_long_long, [ AC_TRY_COMPILE([ #include #include ], [printf("%d",sizeof(long long));], ac_cv_long_long=yes, ac_cv_long_long=no) ]) if test $ac_cv_long_long = yes; then AC_DEFINE(HAVE_LONG_LONG,1,[have long long]) fi AC_CACHE_CHECK(checking for long double, ac_cv_long_double, [ AC_TRY_COMPILE([ #include #include ], [printf("%d",sizeof(long double));], ac_cv_long_double=yes, ac_cv_long_double=no) ]) if test $ac_cv_long_double = yes; then AC_DEFINE(HAVE_LONG_DOUBLE,1,[have long double]) fi AC_CACHE_CHECK(checking for quad_t, ac_cv_quad_t, [ AC_TRY_COMPILE([ #include #include ], [printf("%d",sizeof(quad_t));], ac_cv_quad_t=yes, ac_cv_quad_t=no) ]) if test $ac_cv_quad_t = yes; then AC_DEFINE(HAVE_QUAD_T,1,[have quad_t]) fi dnl ---------------------------------------------------------------------------- dnl OS dependency checks checklibs= case $target_os in *linux* ) no_resolv_lib=yes; ;; *bsdi* ) LDCC=shlicc dnl BSDI uses this for setproctitle AC_CHECK_LIB(util, setproctitle, [LIBS="-lutil $LIBS"]) ;; *bsd* ) dnl *BSD uses this for setproctitle AC_CHECK_LIB(util, setproctitle, [LIBS="-lutil $LIBS"]) ;; *unicos* ) checklibs=no ;; *irix6* ) checklibs=no AC_DEFINE_UNQUOTED(IRIX,$version,[IRIX 6]) ;; *irix5* ) checklibs=no AC_DEFINE(HAVE_BROKEN_TIOCEXCL,1,[broken tiocexcl]) AC_DEFINE(SVR4,1,[have SVR4]) AC_DEFINE_UNQUOTED(IRIX,$version,[IRIX 5]) ;; *irix* ) checklibs=no AC_DEFINE_UNQUOTED(IRIX,$version,[IRIX]) ;; *solaris* ) AC_DEFINE(SVR4,1,[have SVR4]) AC_DEFINE_UNQUOTED(SOLARIS,$version,[solaris]) no_resolv_lib=yes; ;; *hpux* ) AC_DEFINE(_HPUX_SOURCE,1,[HPUX Source]) CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE=1" CFLAGS="$CFLAGS -D_HPUX_SOURCE=1" AC_DEFINE_UNQUOTED(HPUX,$version,[HPUX version]) ;; *sunos* ) AC_DEFINE_UNQUOTED(SUNOS,$version,[SUNOS version]) ;; osf* ) AC_DEFINE_UNQUOTED(DECALPHA,$version,[DEC ALPHA version]) if test "$ac_cv_prog_gcc" != yes; then CPPFLAGS="$CPPFLAGS -std"; CFLAGS="$CFLAGS -std"; else CPPFLAGS="$CPPFLAGS -DAES_SOURCE" CFLAGS="$CFLAGS -DAES_SOURCE" fi ;; *mips-sni* ) ;; esac dnl ---------------------------------------------------------------------------- dnl headers: AC_CHECK_HEADERS(a_out.h aouthdr.h ar.h arpa/inet.h arpa/nameser.h assert.h) AC_CHECK_HEADERS(com_err.h compat.h ctype.h ctypes.h dirent.h errno.h) AC_CHECK_HEADERS(exechdr.h fcntl.h filehdr.h grp.h limits.h locale.h) AC_CHECK_HEADERS(machine/vmparam.h malloc.h memory.h ndir.h netdb.h netinet/in.h) AC_CHECK_HEADERS(nlist.h pwd.h reloc.h resolv.h select.h setjmp.h) AC_CHECK_HEADERS(sgs.h sgtty.h signal.h stab.h stdarg.h stdio.h) AC_CHECK_HEADERS(stdlib.h string.h strings.h sys/dir.h sys/exec.h sys/exechdr.h) AC_CHECK_HEADERS(sys/fcntl.h sys/file.h sys/ioctl.h sys/loader.h sys/mount.h sys/ndir.h) AC_CHECK_HEADERS(sys/param.h sys/pstat.h sys/resource.h sys/select.h sys/signal.h sys/socket.h) AC_CHECK_HEADERS(sys/stat.h sys/statfs.h sys/statvfs.h sys/syslog.h sys/systeminfo.h sys/termio.h) AC_CHECK_HEADERS(sys/termiox.h sys/time.h sys/ttold.h sys/ttycom.h sys/types.h sys/utsname.h) AC_CHECK_HEADERS(sys/vfs.h sys/wait.h syslog.h term.h termcap.h termio.h) AC_CHECK_HEADERS(termios.h time.h unistd.h utsname.h varargs.h vmparam.h) dnl ---------------------------------------------------------------------------- dnl libraries: dnl check to see if we suppress probing for libraries dnl this is done by using the checklibs variable if test -z "$checklibs"; then dnl A/UX uses this... AC_CHECK_LIB(posix, getpwent, [LIBS="$LIBS -lposix"]) dnl use old-style shared libs if we have 'em. AC_CHECK_LIB(socket_s, socket, [LIBS="$LIBS -lsocket_s"; have_socket=1], ,-lnsl) if test -z "$have_socket"; then AC_CHECK_LIB(socket, socket, [LIBS="$LIBS -lsocket"], , -lnsl) fi AC_TRY_LINK(,[extern int gethostbyaddr; return (gethostbyaddr);], have_gethost=1) if test -z "$have_gethost" ; then h="you need additional libs for gethostbyaddr"; else h="no additional libs for gethostbyaddr"; fi AC_MSG_RESULT($h) if test -z "$have_gethost" ; then AC_CHECK_LIB(nsl_s, gethostbyaddr, [LIBS="$LIBS -lnsl_s"; have_gethost=1]) fi if test -z "$have_gethost"; then AC_CHECK_LIB(nsl, gethostbyaddr, [LIBS="$LIBS -lnsl"; have_gethost=1]) fi if test -z "$have_gethost"; then AC_CHECK_LIB(net_s, gethostbyaddr, [LIBS="$LIBS -lnet_s"; have_gethost=1]) fi if test -z "$have_gethost"; then AC_CHECK_LIB(net, gethostbyaddr, [LIBS="$LIBS -lnet"; have_gethost=1]) fi dnl BIND library may be needed, need to force this first if test -z "$no_resolv_lib"; then AC_CHECK_FUNC(inet_ntop,name2=yes) if test -z "$name2" ; then AC_CHECK_LIB(resolv, inet_ntop, [LIBS="$LIBS -lresolv";name2=yes]) fi; fi fi dnl ---------------------------------------------------------------------------- dnl function checks: AC_CHECK_FUNCS(_res cfsetispeed fcntl flock gethostbyname2 getdtablesize) AC_CHECK_FUNCS(gethostname getrlimit inet_aton inet_ntop inet_pton) AC_CHECK_FUNCS(innetgr killpg lockf mkstemp) AC_CHECK_FUNCS(mktemp openlog putenv random rand setenv seteuid setruid setlinebuf setlocale setpgid setproctitle) AC_CHECK_FUNCS(setresuid setreuid setsid setvbuf sigaction) AC_CHECK_FUNCS(sigprocmask siglongjmp socketpair strcasecmp) AC_CHECK_FUNCS(strchr strdup strerror strncasecmp sysconf sysinfo) AC_CHECK_FUNCS(tcdrain tcflush tcsetattr uname unsetenv wait3 waitpid) if test ! "$ac_cv_func_setreuid" = yes -a ! "$ac_cv_func_seteuid" = yes -a ! "$ac_cv_func_setresuid" = yes; then AC_MSG_WARN( [WARNING: missing setreuid(), seteuid(), and setresuid()] ) fi AC_FUNC_VFORK AC_FUNC_VPRINTF dnl ---------------------------------------------------------------------------- dnl special system checks AC_CACHE_CHECK(how to manipulate tty attributes, ac_cv_struct_term, [ if test "$ac_cv_header_termios_h" = yes; then ac_cv_struct_term=termios fi if test "$ac_cv_header_sys_termios_h" = yes; then ac_cv_struct_term=termios fi dnl test to see if we need to compile if test -z "$ac_cv_struct_term" ; then AC_TRY_COMPILE([ #ifdef HAVE_TERMIO_H #include #endif #ifdef HAVE_SYS_TERMIO_H #include #endif],[struct termio t;t.c_iflag = 0], ac_cv_struct_term=termio) fi dnl now you have determined if you have termio if test -z "$ac_cv_struct_term" ; then AC_TRY_COMPILE([#include ],[ struct sgttyb s;s.sg_flags = 0], ac_cv_struct_term=sgttyb) fi if test -z "$ac_cv_struct_term" ; then ac_cv_struct_term=UNDEFINED fi ]) if test "$ac_cv_struct_term" = "sgttyb"; then AC_DEFINE(USE_SGTTYB,1,[use sgttyb]) AC_DEFINE(USE_STTY,SGTTYB,[define use_stty]) fi if test "$ac_cv_struct_term" = "termio"; then AC_DEFINE(USE_TERMIO,1,[use termio]) AC_DEFINE(USE_STTY,TERMIO,[define use_stty]) fi if test "$ac_cv_struct_term" = "termios"; then AC_DEFINE(USE_TERMIOS,1,[use termios]) AC_DEFINE(USE_STTY,TERMIOS,[define use_stty]) if test "$ac_cv_header_sys_termiox_h" = yes; then AC_DEFINE(USE_TERMIOX,1,[use termiox]) fi fi dnl ---------------------------------------------------------------------------- AC_CACHE_CHECK(checking for struct exec, ac_cv_struct_exec, [ ac_cv_struct_exec=no if test "$ac_cv_header_a_out_h" != no ; then AC_TRY_COMPILE([ #include #include ],[struct exec b; b.a_text = 0], ac_cv_struct_exec=yes, ac_cv_struct_exec=no ) fi ]) if test "$ac_cv_struct_exec" = yes; then AC_DEFINE(HAVE_STRUCT_EXEC,1,[have struct_exec]) fi dnl ---------------------------------------------------------------------------- dnl test to see if lseek has a prototype - you make it get an error AC_CACHE_CHECK(checking for lseek prototype, ac_cv_lseek_proto, [ AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_UNISTD_H #include #endif ],[off_t x; x = lseek(0,"test",SEEK_SET);], ac_cv_lseek_proto=no, ac_cv_lseek_proto=yes) ]) if test "$ac_cv_lseek_proto" = yes; then AC_DEFINE(HAVE_LSEEK_PROTO,1,[have lseek proto]) fi dnl ---------------------------------------------------------------------------- AC_CACHE_CHECK(how to get filesystem free space, ac_cv_struct_fstype, [ fstype= dnl do this check if statvfs is a valid function if test "$ac_cv_func_statvfs" != no ; then #{ AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATVFS_H # include #endif #ifdef HAVE_SYS_STATFS_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif],[struct statvfs s; statvfs ("/", &s); return(s.f_bavail+s.f_bsize)], fstype=statvfs) fi #} dnl do these checks if statfs is a valid function if test "$ac_cv_func_statfs" != no ; then #{ if test -z "$fstype" ; then #{ AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATFS_H # include #endif #ifdef HAVE_SYS_STATVFS_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif],[struct fs_data s; return(s.fd_bfree+s.fd_bsize)], fstype=Ultrix-statfs) fi #} if test -z "$fstype" ; then #{ AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATFS_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_VFS_H #include #endif],[struct statfs s; return(s.f_bavail+s.f_bsize)], fstype=statfs) fi # } if test -z "$fstype" ; then # { AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATFS_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_VFS_H #include #endif],[struct statfs s; return(s.f_bfree+s.f_bsize)], fstype=SVR3-statfs) fi # } fi # } if test -z "$fstype" ; then echo "cannot find a valid statfs-like structure!" fstype=UNKNOWN fi ac_cv_struct_fstype=$fstype ]) if test "$ac_cv_struct_fstype" = SVR3-statfs; then AC_DEFINE(USE_STATFS_TYPE,SVR3_STATFS,[statfs type svr3]) fi if test "$ac_cv_struct_fstype" = Ultrix-statfs; then AC_DEFINE(USE_STATFS_TYPE,ULTRIX_STATFS,[statfs type ultrix]) fi if test "$ac_cv_struct_fstype" = statfs; then AC_DEFINE(USE_STATFS_TYPE,STATFS,[statfs type statfs]) fi if test "$ac_cv_struct_fstype" = statvfs; then AC_DEFINE(USE_STATFS_TYPE,STATVFS,[statfs type sysv]) fi dnl ---------------------------------------------------------------------------- dnl AC_CACHE_CHECK(for errno, ac_cv_errno, [ AC_TRY_LINK(,[extern int errno; return (errno);], ac_cv_errno=yes, ac_cv_errno=no) ]) if test "$ac_cv_errno" = yes; then AC_DEFINE(HAVE_ERRNO,1,[have errno]) AC_CACHE_CHECK(for errno declaration, ac_cv_decl_errno, [ AC_TRY_COMPILE([ #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_ERRNO_H #include ],[return(sys_nerr);], ac_cv_decl_errno=yes, ac_cv_decl_errno=no) ]) if test "$ac_cv_decl_errno" = yes; then AC_DEFINE(HAVE_DECL_ERRNO,1,[have errno decl]) fi; fi AC_CACHE_CHECK(for sys_nerr, ac_cv_sys_nerr, [ AC_TRY_LINK(,[extern int sys_nerr; return (sys_nerr);], ac_cv_sys_nerr=yes, ac_cv_sys_nerr=no) ]) if test "$ac_cv_sys_nerr" = yes; then AC_DEFINE(HAVE_SYS_NERR,1,[have sys_nerr]) AC_CACHE_CHECK(for sys_nerr declaration, ac_cv_decl_sys_nerr, [ AC_TRY_COMPILE([ #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif],[return(sys_nerr);], ac_cv_decl_sys_nerr_def=yes, ac_cv_decl_sys_nerr_def=no) ]) if test "$ac_cv_decl_sys_nerr" = yes; then AC_DEFINE(HAVE_DECL_SYS_NERR,1,[have sys_nerr decl]) fi fi AC_CACHE_CHECK(for sys_errlist array, ac_cv_sys_errlist, [AC_TRY_LINK(,[extern char *sys_errlist[]; sys_errlist[0];], ac_cv_sys_errlist=yes, ac_cv_sys_errlist=no) ]) if test "$ac_cv_sys_errlist" = yes; then AC_DEFINE(HAVE_SYS_ERRLIST,1,[have sys_errlist]) AC_CACHE_CHECK(for sys_errlist declaration, ac_cv_sys_errlist_def, [AC_TRY_COMPILE([ #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif],[char *s = sys_errlist[0]; return(*s);], ac_cv_decl_sys_errlist=yes, ac_cv_decl_sys_errlist=no) ]) if test "$ac_cv_decl_sys_errlist" = yes; then AC_DEFINE(HAVE_DECL_SYS_ERRLIST,1,[have sys_errlist decl]) fi fi AC_CACHE_CHECK(for setproctitle declaration, ac_cv_decl_setproctitle_def, [AC_TRY_COMPILE([ #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_ERRNO_H #include #endif ],[setproctitle(0);], ac_cv_decl_setproctitle_def=no, ac_cv_decl_setproctitle_def=yes) ]) if test "$ac_cv_decl_setproctitle_def" = yes; then AC_DEFINE(HAVE_SETPROCTITLE_DEF,1,[have setproctitle]) fi dnl ---------------------------------------------------------------------------- dnl sys_siglist array (list of signals) AC_CACHE_CHECK(for sys_siglist declaration, ac_cv_decl_sys_siglist_def, [AC_TRY_COMPILE([ #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #include ], [printf("%s",sys_siglist[0]);], ac_cv_decl_sys_siglist_def=yes, ac_cv_decl_sys_siglist_def=no) ]) if test "$ac_cv_decl_sys_siglist_def" = yes; then AC_DEFINE(HAVE_SYS_SIGLIST_DEF,1,[have sys_siglist def]) ac_cv_sys_siglist=yes fi AC_CACHE_CHECK(for _sys_siglist declaration, ac_cv_decl__sys_siglist_def, [AC_TRY_COMPILE([ #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #include ], [printf("%s",_sys_siglist[0]);], ac_cv_decl__sys_siglist_def=yes, ac_cv_decl__sys_siglist_def=no) ]) if test "$ac_cv_decl__sys_siglist_def" = yes; then AC_DEFINE(HAVE__SYS_SIGLIST_DEF,1,[have _sys_siglist def]) ac_cv__sys_siglist=yes fi AC_CACHE_CHECK(for sys_siglist array, ac_cv_sys_siglist, [AC_TRY_LINK([ #include ], [extern int sys_siglist; printf("%d",sys_siglist);], ac_cv_sys_siglist=yes, ac_cv_sys_siglist=no) ]) if test "$ac_cv_sys_siglist" = yes; then AC_DEFINE(HAVE_SYS_SIGLIST,1,[have sys_siglist]) fi AC_CACHE_CHECK(for _sys_siglist array, ac_cv__sys_siglist, [AC_TRY_LINK([ #include ], [extern int _sys_siglist; printf("%d",_sys_siglist);], ac_cv__sys_siglist=yes, ac_cv__sys_siglist=no) ]) if test "$ac_cv__sys_siglist" = yes; then AC_DEFINE(HAVE__SYS_SIGLIST,1,[have _sys_siglist]) fi dnl ---------------------------------------------------------------------------- dnl check to see if you have getpgrp(0) or getpgrp() dnl dnl POSIX `getpgrp(void)' define HAVE_GETPGRP_0 dnl BSD `getpgrp(int)' - takes 0 as argument dnl define HAVE_GETPGRP_0 0 dnl check to see if you have getpgrp(0) or getpgrp() AC_CACHE_CHECK([for getprgp() or getpgrp(0) form], ac_cv_func_getpgrp_0, [AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #include #ifdef HAVE_UNISTD_H # include #endif],[getpgrp(0);], ac_cv_func_getpgrp_0=getpgrp_0, ac_cv_func_getpgrp_0=getpgrp) ]) if test "$ac_cv_func_getpgrp_0" = getpgrp_0; then AC_DEFINE(HAVE_GETPGRP_0,0,[set getprgrp 0]) else AC_DEFINE(HAVE_GETPGRP_0,1,[set getpgrgp 1]) fi dnl ---------------------------------------------------------------------------- dnl check to see if you have setpgrp(n,m) or setpgrp() AC_CACHE_CHECK(for setprgp form, ac_cv_func_setpgrp_0, [AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_UNISTD_H # include #endif ],[setpgrp(0,0);], ac_cv_func_setpgrp_0=setpgrp_0, ac_cv_func_setpgrp_0=setpgrp) ]) if test "$ac_cv_func_setpgrp_0" = setpgrp_0; then AC_DEFINE(HAVE_SETPGRP_0,1,[set setpgrp 0]) fi dnl ---------------------------------------------------------------------------- dnl just for (really) backwards compatibility dnl we really try not to use union wait -- it's heinously unportable. dnl nicked this check from Tcl as well. ;) dnl dnl The check below checks whether defines the type dnl "union wait" correctly. It's needed because of weirdness in dnl HP-UX where "union wait" is defined in both the BSD and SYS-V dnl environments. Checking the usability of WIFEXITED seems to do dnl the trick. AC_CACHE_CHECK(for obsolete union wait compatibility, ac_cv_unionwait, [ AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #include #include ], [union wait x;WIFEXITED(x);], ac_cv_unionwait=yes, ac_cv_unionwait=no) ]) if test "$ac_cv_unionwait" = yes; then AC_DEFINE(HAVE_UNION_WAIT,1,[have union wait]) fi dnl ---------------------------------------------------------------------------- dnl Would you believe the gethostname declarations are broken on some machines dnl ---------------------------------------------------------------------------- AC_CACHE_CHECK(for gethostname declaration, ac_cv_decl_gethostname_def, [AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif],[gethostname(1);], ac_cv_decl_gethostname_def=no, ac_cv_decl_gethostname_def=yes) ]) if test "$ac_cv_decl_gethostname_def" = yes; then AC_DEFINE(HAVE_GETHOSTNAME_DEF,1,[have getbostname def]) fi dnl ---------------------------------------------------------------------------- dnl innetgr() declarations missing dnl ---------------------------------------------------------------------------- AC_CACHE_CHECK(for innetgr declaration, ac_cv_decl_innetgr_def, [AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_NETDB_H #include #endif],[printf("%d", innetgr(1));], ac_cv_decl_innetgr_def=no, ac_cv_decl_innetgr_def=yes) ]) if test "$ac_cv_decl_innetgr_def" = yes; then AC_DEFINE(HAVE_INNETGR_DEF,1,[have innetgr def]) fi dnl ---------------------------------------------------------------------------- dnl openlog() declarations missing dnl ---------------------------------------------------------------------------- AC_CACHE_CHECK(for openlog declaration, ac_cv_decl_openlog_def, [AC_TRY_COMPILE([ #include #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_STDARG_H #include #endif #ifdef HAVE_SYSLOG_H #include #endif],[printf("%d",openlog);], ac_cv_decl_openlog_def=yes, ac_cv_decl_openlog_def=no) ]) if test "$ac_cv_decl_openlog_def" = yes; then AC_DEFINE(HAVE_OPENLOG_DEF,1,[have openlog def]) fi dnl ---------------------------------------------------------------------------- dnl syslog() declarations missing dnl ---------------------------------------------------------------------------- AC_CACHE_CHECK(for syslog declaration, ac_cv_decl_syslog_def, [AC_TRY_COMPILE([ #include #ifdef HAVE_STDARG_H #include #endif #ifdef HAVE_SYSLOG_H #include #endif],[printf("%d",syslog);], ac_cv_decl_syslog_def=yes, ac_cv_decl_syslog_def=no) ]) if test "$ac_cv_decl_syslog_def" = yes; then AC_DEFINE(HAVE_SYSLOG_DEF,1,[have syslog def]) fi dnl ---------------------------------------------------------------------------- dnl IPV6 - check for structure declarations dnl ---------------------------------------------------------------------------- AC_CACHE_CHECK(for struct in6_addr declaration, ac_cv_decl_in6_addr_def, [AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #include #include #include ],[struct in6_addr v;], ac_cv_decl_in6_addr_def=yes, ac_cv_decl_in6_addr_def=no) ]) if test "$ac_cv_decl_in6_addr_def" = yes; then AC_DEFINE(IN6_ADDR,1,[have in6_addr]) fi AC_CACHE_CHECK([for struct in_addr6 declaration (LINUX)], ac_cv_decl_in_addr6_def, [AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #include #include #include ],[struct in_addr6 v;], ac_cv_decl_in_addr6_def=yes, ac_cv_decl_in_addr6_def=no) ]) if test "$ac_cv_decl_in_addr6_def" = yes; then AC_DEFINE(IN_ADDR6,1,[have in_addr6]) fi dnl ---------------------------------------------------------------------------- dnl struct stat can have a st_mtime_nsec field dnl ---------------------------------------------------------------------------- AC_CACHE_CHECK(for struct stat has st_mtimespec.tv_nsec, ac_cv_decl_st_mtimespec_tv_nsec, [AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #include #ifdef HAVE_SYS_TIME_H #include #endif #include ],[struct stat statb; statb.st_mtimespec.tv_nsec;], ac_cv_decl_st_mtimespec_tv_nsec=yes, ac_cv_decl_st_mtimespec_tv_nsec=no) ]) if test "$ac_cv_decl_st_mtimespec_tv_nsec" = yes; then AC_DEFINE_UNQUOTED(ST_MTIMESPEC_TV_NSEC,1,[have mtimespec]) fi AC_CACHE_CHECK(for struct stat has st_mtimensec, ac_cv_decl_st_mtimensec, [AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #include #if defined(HAVE_SYS_TIME_H) #include #endif #include ],[struct stat statb; statb.st_mtimensec;], ac_cv_decl_st_mtimensec=yes, ac_cv_decl_st_mtimensec=no) ]) if test "$ac_cv_decl_st_mtimensec" = yes; then AC_DEFINE_UNQUOTED(ST_MTIMENSEC,1,[have mtimensec]) fi dnl ---------------------------------------------------------------------------- AC_CACHE_CHECK(for strcasecmp definition, ac_cv_decl_strcasecmp, [AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #if defined(HAVE_STDLIB_H) #include #endif #if defined(HAVE_STRING_H) #include #endif #if defined(HAVE_STRINGS_H) #include #endif ],[strcasecmp(1)], ac_cv_decl_strcasecmp=no, ac_cv_decl_strcasecmp=yes) ]) if test "$ac_cv_decl_strcasecmp" = yes; then AC_DEFINE_UNQUOTED(HAVE_STRCASECMP_DEF,1,[have strcasecmp def]) fi dnl ---------------------------------------------------------------------------- AC_CACHE_CHECK(for flock definition, ac_cv_decl_flock, [AC_TRY_COMPILE([ #ifdef HAVE_CTYPES_H #include #endif #if defined(HAVE_STDLIB_H) #include #endif #if defined(HAVE_SYS_FILE_H) #include #endif #if defined(HAVE_FCNTL_H) #include #endif ],[flock(1)], ac_cv_decl_flock=no, ac_cv_decl_flock=yes) ]) if test "$ac_cv_decl_flock" = yes; then AC_DEFINE_UNQUOTED(HAVE_FLOCK_DEF,1,[have flock def]) fi dnl ---------------------------------------------------------------------------- AC_PROG_INSTALL AC_CHECK_PROG(INSTALL_MAN,auxman,auxman,[$INSTALL -m 644]) AC_PROG_MAKE_SET dnl ----------------- force this to be Bourne Shell for now --------------- AC_MSG_CHECKING(for shell) SHELL=/bin/sh AC_MSG_RESULT(using $SHELL (FORCED)) dnl ----------------- Option for enabling GNU gettext -------------------- AM_GNU_GETTEXT([external]) dnl X AC_MSG_RESULT([LIBS $LIBS, INTLLIBS $INTLLIBS]) dnl X if test "${USE_NLS}" = yes; then dnl X AC_MSG_RESULT([Using NLS, localedir ${LOCALEDIR}, need intl/libintl.a - "${USE_INCLUDED_LIBINTL}" ]) dnl X if test "${USE_INCLUDED_LIBINTL}" = yes ; then dnl X CPPFLAGS="$CPPFLAGS -I \${top_builddir}/intl" dnl X AC_MSG_RESULT([using \${top_builddir}/intl]) dnl X if test "$nls_cv_force_use_gnu_gettext" = no ; then dnl X echo "NLS enabled and requested system gettext support not available." dnl X echo " You may need to use:" dnl X echo " configure '--with-cppopts=-I/usr/local/include' '--with-ldopts=-L/usr/local/lib'" dnl X echo " See ${srcdir}/ABOUT-NLS.LPRng in the LPRng distribution for details." dnl X exit 1; dnl X fi dnl X if test ! -f ${srcdir}/intl/gettext.h ; then dnl X echo "gettext code is not in the ${srcdir}/intl directory." dnl X echo "See ${srcdir}/ABOUT-NLS.LPRng in the LPRng distribution for details." dnl X exit 1; dnl X fi dnl X fi dnl X LIBS="$INTLLIBS $LIBS" dnl X else dnl X AC_MSG_RESULT([No NLS]) dnl X fi dnl X if test "$XGETTEXT" = "" ; then dnl X XGETTEXT=xgettext; dnl X fi dnl X AC_MSG_RESULT(using XGETTEXT $XGETTEXT) dnl ---------------------------------------------------------------------------- dnl ----------------- END OF GENERAL CONFIGURATION --------------------------- dnl ---------------------------------------------------------------------------- dnl ----------------- START OF OUTPUT ------------------------------------------ if test "$ac_cv_prog_gcc" = yes; then CPPFLAGS="$CPPFLAGS -g -W -Wall -Werror -Wno-unused " CFLAGS="$CFLAGS -g -W -Wall -Werror -Wno-unused " fi; AC_OUTPUT( Makefile src/Makefile man/Makefile fonts/Makefile DOCS/Makefile UTILS/accounting.sh UTILS/sendhp.sh UTILS/supported UTILS/fixupdate src/extract_pjl src/wrapper po/Makefile.in ) dnl ---------------------------------------------------------------------------- dnl ----------------- END OF OUTPUT -------------------------------------------- ifhp-3.5.20/ifhp.conf.in0100644000175100017510000104261610130541264015172 0ustar papowellpapowell## $Id: ifhp.conf.in,v 1.69 2004/10/05 15:50:12 papowell Exp papowell $ ## VERSION=3.5.20 ### Supported Printers ### SUPPORTED START ### default - Generic Printer based on HP 4M Plus, PostScript, PJL, HPGL2, PCL, status, pagecount support ### apple - Generic PostScript printer, text to PS conversion, status, pagecount support ### postscript - Generic PostScript printer, text to PS conversion, status, pagecount support ### ps - Generic PostScript printer, text to PS conversion, status, pagecount support ### pcl - Generic PCL only printer, no status ### pcl_gs - HP LaserJet 4 PCL only printer, write only, no status ### hpiiisi - HP LaserJet III (PCL and PostScript Interpreter) ### hp3si - HP LaserJet III (PCL and PostScript Interpreter) ### ljet3 - HP LaserJet III (PCL and PostScript Interpreter) ### lj3 - HP LaserJet III (PCL and PostScript Interpreter) ### hpiiisi.gs - HP LaserJet III (PCL, PostScript via GhostScript) ### hp3si.gs - HP LaserJet III (PCL, PostScript via GhostScript) ### ljet3.gs - HP LaserJet III (PCL, PostScript via GhostScript) ### lj3.gs - HP LaserJet III (PCL, PostScript via GhostScript) ### hp4 - HP LaserJet 4 Family, HP LaserJet 4 (PostScript Interpreter) ### hp4m - HP LaserJet 4 Family, HP LaserJet 4m (PostScript Interpreter) ### hp4si - HP LaserJet 4 Family, HP LaserJet 4si (PostScript Interpreter) ### hp4simx - HP LaserJet 4 Family, HP LaserJet 4simx (PostScript Interpreter) ### hp4plus - HP LaserJet 4 Family, HP LaserJet 4plus (PostScript Interpreter) ### hp4mplus - HP LaserJet 4 Family, HP LaserJet 4mplus (PostScript Interpreter) ### hp4v - HP LaserJet 4 Family, HP LaserJet 4v (PostScript Interpreter) ### hp4mv - HP LaserJet 4 Family, HP LaserJet 4mv (PostScript Interpreter) ### hp4p - HP LaserJet 4 Family, HP LaserJet 4p (PostScript Interpreter) ### hp4mp - HP LaserJet 4 Family, HP LaserJet 4mp (PostScript Interpreter) ### hp4pj - HP LaserJet 4 Family, HP LaserJet 4pj (PostScript Interpreter) ### hpljpro - HP LaserJet 4 Family, HP LaserJet ljpro (PostScript Interpreter) ### hp4lc - HP LaserJet 4 Family, HP LaserJet 4lc (PostScript Interpreter) ### hp4mplus - HP LaserJet 4MPlus ### hp5l - HP LaserJet 5 Family, Hp LaserJet 5l ### hp6l - HP LaserJet 6 Family, Hp LaserJet 6l ### hp1100 - HP LaserJet 6 Family, Hp LaserJet 1100 ### hp1100 - HP LaserJet 1000 Family, Hp LaserJet 1100 ### hp4l - Hp LaserJet 4L, PCL only ### hp4ml - HP LaserJet 4ml ### hp5p - HP LaserJet 5p ### hp5mp - HP LaserJet 5mp ### hp6p - HP LaserJet 6p ### hp6mp - HP LaserJet 6mp ### hp5 - HP LaserJet 5 ### hp5si - HP LaserJet 5si ### hp5simx - HP LaserJet 5simx ### hp5m - HP LaserJet 5m ### hp4100 - HP LaserJet 4100 ### hp4200 - HP LaserJet 4200 ### hp4300 - HP LaserJet 4300 ### hp5simopier - HP LaserJet 5simopier ### hp4000 - HP LaserJet 4000 ### hpcolorlj - HP Color LaserJet ### hpcolorlj5 - HP Color LaserJet 5 ### hpcolorlj5m - HP Color LaserJet 5m ### hpdj1200 - HP DesignJet 1200 Family ### hppjxl300 - HP PaintJet XL 300 Family ### hpdj1600 - HP DesignJet 1600 Family ### hpdj200 - HP DeskJet 200 ### hpdj220 - HP DeskJet 220 ### hpdj600 - HP DeskJet 600 ### hpdj650 - HP DeskJet 650 ### hpdj230 - HP DeskJet 230 ### hpdj250c - HP DeskJet 250c ### hpdj330 - HP DeskJet 330 ### hpdj350c - HP DeskJet 350c ### hpdj430 - HP DeskJet 430 ### hpdj450c - HP DeskJet 450c ### hpdj455ca - HP DeskJet 455ca ### hpdj700 - HP DeskJet 700 ### hpdj750c - HP DeskJet 750c ### hpdj750cplus - HP DeskJet 750cplus ### hpdj755cm - HP DeskJet 755cm ### hpdj2000cp - HP DeskJet 2000cp ### hp2500 - HP DesignJet 2500 - No PCL, PostScript Only ### hp2500cm - HP DesignJet 2500cm - No PCL, PostScript Only ### hp2500c - HP DesignJet 2500c - No PCL, PostScript Only ### hp2500cm - HP DesignJet 2500cm - PCL and PostScript ### hpdj2500cp - HP DesignJet 2500CP, not HP2500, HP2500c, HP2500cm ### hp4500 - HP Color LaserJet Printer 4500 ### hp8500 - HP Color LaserJet Printer 8500 ### hp8550 - HP Color LaserJet Printer 8550 ### hp4550n - HP 4550N ### hp5000 - HP 5000 Model C4111A (LaserJet 5000) ### hp8000 - HP LaserJet 8000 Series, HP8000 ### hp8100 - HP LaserJet 8000 Series, HP8100 ### hp8150 - HP LaserJet 8000 Series, HP8150 ### hp2100 - HP LaserJet 2100 Series ### hp2200 - HP LaserJet 2200 Series ### hp4050 - HP 4050 Series Printers ### qms1725 - QMS 1725, uses appsocket, no status, PostScript only ### qms2025 - QMS Laser Printer QMS 2025, appsocket, no status, PostScript and PCL ### qms860 - QMS Laser Printer QMS 860, appsocket, no status, PostScript and PCL ### qms2060 - QMS Laser Printer QMS 2060, appsocket, no status, PostScript and PCL ### phaser - Tektronics Generic Phaser Color Printer, appsocket, snmp monitoring, PostScript only ### phaser360 - Tektronics Phaser 360 Color Printer, appsocket, snmp monitoring, PostScript only ### phaser740 - Tektronics Phaser 740 Color Printer, appsocket, snmp monitoring, PostScript only ### phaser750 - Tektronics Phaser 750 Color Printer, appsocket, snmp monitoring, PostScript only ### phaser850 - Tektronics Phaser 850 Color Printer, appsocket, snmp monitoring, PostScript only ### phaser740 - Tektronics Phaser 740 Color Printer, appsocket, snmp monitoring, PostScript and PCL ### phaser5400 - Tektronics Phaser 5400 Color Printer, appsocket, snmp monitoring, PostScript and PCL ### phaser7700 - Tektronics Phaser 7700 Color Printer, appsocket, snmp monitoring, PostScript and PCL ### lexmark4039 - Lexmark 4039, Postscript only ### lexmark_optra_e312 - Lexmark Optra e312, Postscript, PCL and PJL ### ln15s - Digital Laser LN15, LN17ps, Compaq Laser LN 16 ### ln16s - Digital Laser LN15, LN17ps, Compaq Laser LN 16 ### ln17pss - Digital Laser LN15, LN17ps, Compaq Laser LN 16 ### hpij2250s - HP Business Inkjet 2250 ### gs_bj10 - Canon BubbleJet BJ10e ### gs_bj10 - Canon BubbleJet BJ20 ### gs_bj200 - Canon BubbleJet BJ200 ### gs_bj200 - Canon BubbleJet BJC-210 B/W only ### gs_bj200 - Canon BubbleJet BJC-240 B/W only ### gs_bj200 - Canon BubbleJet BJC-250 B/W only ### gs_bj200 - Canon BubbleJet BJC-70 B/W only ### gs_bjc600 - Canon BubbleJet BJC-600 ### gs_bjc600 - Canon BubbleJet BJC-610 ### gs_bjc600 - Canon BubbleJet BJC-50 ### gs_bjc600 - Canon BubbleJet BJC-70 ### gs_bjc600 - Canon BubbleJet BJC-80 ### gs_bjc600 - Canon BubbleJet BJC-210 Color only ### gs_bjc600 - Canon BubbleJet BJC-240 Color only ### gs_bjc600 - Canon BubbleJet BJC-250 ### gs_bjc600 - Canon BubbleJet BJC-1000 ### gs_bjc600 - Canon BubbleJet BJC-2000 ### gs_bjc600 - Canon BubbleJet BJC-4000 ### gs_bjc600 - Canon BubbleJet BJC-4100 B/W only ### gs_bjc600 - Canon BubbleJet BJC-4200 ### gs_bjc600 - Canon BubbleJet BJC-4300 ### gs_bjc600 - Canon BubbleJet BJC-4550 ### gs_bjc600 - Canon BubbleJet BJC-6000 ### gs_bjc600 - Canon MultiPASS C2500 color printer/fax/copier ### gs_bjc800 - Canon BubbleJet BJC-800 ### gs_bjc800 - Canon BubbleJet BJC-7000 Color. ### gs_bjc800 - Canon BubbleJet BJC-4300 Color ### gs_bjc800 - Canon BubbleJet BJC-4650 ### gs_deskjet - HP DeskJet ### gs_deskjet - HP DeskJet Plus ### gs_djet500 - HP DeskJet 500 B/W ### gs_djet500 - HP DeskJet Portable B/W ### gs_djet500 - HP OfficeJet 590 B/W ### gs_cdj500 - HP DeskJet 400 ### gs_cdj500 - HP DeskJet 500C ### gs_cdj500 - HP DeskJet 540C ### gs_cdj500 - HP DeskJet 690C ### gs_cdj500 - HP DeskJet 693C ### gs_cdj550 - HP DeskJet 550C ### gs_cdj550 - HP DeskJet 560C ### gs_cdj550 - HP DeskJet 600 ### gs_cdj550 - HP DeskJet 660C ### gs_cdj550 - HP DeskJet 660C ### gs_cdj550 - HP DeskJet 682C ### gs_cdj550 - HP DeskJet 683C ### gs_cdj550 - HP DeskJet 693C ### gs_cdj550 - HP DeskJet 694C ### gs_cdj550 - HP DeskJet 690C ### gs_cdj550 - HP DeskJet 692C ### gs_cdj550 - HP DeskJet 693C ### gs_cdj550 - HP DeskJet 694C ### gs_cdj550 - HP DeskJet 695C ### gs_cdj550 - HP DeskJet 850 ### gs_cdj550 - HP DeskJet 870Cse ### gs_cdj550 - HP DeskJet 895Cxi ### gs_cdj550 - HP DeskJet 970 ### gs_cdj550 - HP OfficeJet 590 ### gs_cdj550 - Olivetti jp450 ### gs_cdj550 - Xerox XJ6C, PCL and Postscript using GhostScript ### gs_cdj850 - HP DeskJet 850 ### gs_cdj850 - HP DeskJet 855 ### gs_cdj850 - HP DeskJet 870Cse ### gs_cdj850 - HP DeskJet 870Cxi ### gs_cdj850 - HP DeskJet 890C ### gs_cdj850 - HP DeskJet 670C ### gs_cdj850 - HP DeskJet 680 ### gs_cdeskjet - HP DeskJet 500C ### gs_cdjmono - HP DeskJet 500C ### gs_cdjmono - HP DeskJet 510 ### gs_cdjmono - HP DeskJet 520 ### gs_cdjmono - HP DeskJet 540C ### gs_cdjmono - HP DeskJet 693C ### gs_epsonc - Fujitsu DL-1100 ### gs_epsonc - Fujitsu DL-2400 ### gs_hl7x0 - Brother HL-720 ### gs_hl7x0 - Brother HL-730 ### gs_laserjet - Bull Compuprint Pagemaster 415 ### gs_lips3 - Canon LBP4+ ### gs_lj4dith - HP DeskJet 600 ### gs_ljet2 - HP LaserJet II ### gs_ljet2 - Xerox 4030 - PCL, PostScript support using GhostScript ### gs_ljet3 - Tandy LP800 With LaserJet III emulation. ### gs_ljet4 - Brother HL-660 ### gs_ljet4 - Brother HL-760 600dpi ### gs_ljet4 - Epson EPL5700 300dpi OK ### gs_ljet4 - HP DeskJet 600 margins wrong ### gs_ljet4 - HP DeskJet 870Cse ### gs_ljet4 - HP LaserJet 5 300dpi or 600dpi ### gs_ljet4 - HP LaserJet 5L 300dpi or 600dpi ### gs_ljet4 - HP LaserJet 6L 600dpi ### gs_ljet4 - HP LaserJet 1100 600dpi OK. ### gs_ljet4 - IBM Network Printer 17 ### gs_ljet4 - IBM/Lexmark 4029 Margins wrong. ### gs_ljet4 - Lexmark Optra E+ ### gs_ljet4 - Lexmark Optra SC 1275 B/W only. ### gs_ljet4 - Oki OL410ex LED printer 300dpi or 600dpi ### gs_ljetplus - HP LaserJet Plus ### gs_ljetplus - Canon Laser LBP-600 ### gs_ljetplus - NEC SuperScript 860 ### gs_pjxl300 - HP PaintJet XL300 ### gs_pjxl300 - HP DeskJet 600 ### gs_pjxl300 - HP DeskJet 1200C ### gs_pjxl300 - HP DeskJet 1600C ### gs_r4081 - Ricoh 4081 laser printer ### gs_r4081 - Ricoh 6000 laser printer ### bjc610a0.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi plain paper, high speed ### bjc610a1.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi plain paper ### bjc610a2.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi coated paper ### bjc610a3.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi transparency film ### bjc610a4.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi back print film ### bjc610a5.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi fabric sheet ### bjc610a6.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi glossy paper ### bjc610a7.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi high gloss film ### bjc610a8.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi high resolution paper ### bjc610b1.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi plain paper ### bjc610b2.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi coated paper ### bjc610b3.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi transparency film ### bjc610b4.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi back print film ### bjc610b6.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi glossy paper ### bjc610b7.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi high-gloss paper ### bjc610b8.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi high resolution paper ### cdj550.upp - HP DeskJet 550C 300x300dpi 32-bit CMYK ### necp2x.upp - NEC P2X 360x360dpi 8-bit (Floyd-Steinberg) ### stcany.upp - Epson Stylus Color (Any) 360x360dpi 4-bit, PostScript halftoning ### stc.upp - Epson Stylus (Original) and Stylus Pro Color 360x360dpi 32-bit CMYK, 15-pin ### stc_l.upp - Epson Stylus (Original) and Stylus Pro Color 360x360dpi 4-bit, PostScript halftoning, weaved noWeave ### stc_h.upp - Epson Stylus (Original) and Stylus Pro Color 720x720dpi 32-bit CMYK, 15-pin Weave ### stc2.upp - Epson Stylus (Original) and Stylus Pro Color 360x360dpi 32-bit CMYK, 20-pin, Epson Stylus Color II(s) ### stc2_h.upp - Epson Stylus (Original) and Stylus Pro Color 720x720dpi 32-bit CMYK, 20-pin, Epson Stylus Color II ### stc2s_h.upp - Epson Stylus (Original) and Stylus Pro Color 720x720dpi 32-bit CMYK, 20-pin, Epson Stylus Color IIs ### stc500p.upp - Epson Stylus Color 500 360x360dpi 32-bit CMYK, noWeave, plain paper ### stc500ph.upp - Epson Stylus Color 500 720x720dpi 32-bit CMYK, noWeave, plain paper ### stc600pl.upp - Epson Stylus Color 600, 360x360dpi, 32/90-inch weaving 32-bit CMYK, 32-pin, plain paper ### stc600p.upp - Epson Stylus Color 600, 720x720dpi, 32/90-inch weaving 32-bit CMYK, 32-pin, plain paper ### stc600ih.upp - Epson Stylus Color 600, 1440x720dpi, 32/90-inch weaving 32-bit CMYK, 30-pin, inkjet paper ### stc800pl.upp - Epson Stylus Color 800, 64/180-inch weaving 360x360dpi 32-bit CMYK, 64-pin, plain paper ### stc800p.upp - Epson Stylus Color 800, 64/180-inch weaving 720x720dpi 32-bit CMYK, 64-pin, plain paper ### stc800ih.upp - Epson Stylus Color 800, 64/180-inch weaving 1440x720dpi 32-bit CMYK, 62-pin, inkjet paper ### stc1520h.upp - Epson Stylus Color 800, 64/180-inch weaving 1440x720dpi 32-bit CMYK, 62-pin, inkjet paper ### imagerunner550 - Canon imageRUNNER 550/600 iR600-550-60 ### imagerunner600 - Canon imageRUNNER 550/600 iR600-550-60 ### hpdj800ps - HP DesignJet 800ps ### panther - Sharp Generic Panther Family, PS and PCL, uses SNMP for status and pagecount ### ar-160 - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount ### ar-161 - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount ### ar-162 - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount ### ar-162s - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount ### ar-163 - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount ### ar-164 - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount ### ar-200 - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount ### ar-200s - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount ### ar-201 - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount ### ar-205 - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount ### ar-206 - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount ### ar-207 - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount ### ar-f201 - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount ### cougar - Sharp Generic Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-335 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-336 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-337 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-s337 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-405 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-407 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-505 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-s505 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-507 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-s507 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-250 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-280 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-281 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-285 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### ar-286 - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount ### leopard - Sharp Generic Leopard Family, PS and PCL, uses SNMP for status and pagecount ### ar-235 - Sharp %s, Leopard Family, PS and PCL, uses SNMP for status and pagecount ### ar-275 - Sharp %s, Leopard Family, PS and PCL, uses SNMP for status and pagecount ### ar-n275 - Sharp %s, Leopard Family, PS and PCL, uses SNMP for status and pagecount ### ar-m208 - Sharp %s, Leopard Family, PS and PCL, uses SNMP for status and pagecount ### tiger - Sharp Generic Tiger Family, PS and PCL, uses SNMP for status and pagecount ### ar-p350 - Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount ### ar-m350 - Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount ### ar-m350u - Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount ### ar-m350n - Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount ### ar-p450 - Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount ### ar-m450 - Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount ### ar-m450u - Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount ### ar-m450n - Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount ### toshiba650 - Sharp Generic Toshiba650 Family, PS and PCL, uses SNMP for status and pagecount ### ar-650 - Sharp %, Toshiba650 Family, PS and PCL, uses SNMP for status and pagecount ### ar-800 - Sharp %, Toshiba650 Family, PS and PCL, uses SNMP for status and pagecount ### fiery651 - Sharp Generic Fiery651 Family, PS and PCL, uses SNMP for status and pagecount ### ar-651 - Sharp %, Fiery651 Family, PS and PCL, uses SNMP for status and pagecount ### ar-810 - Sharp %, Fiery651 Family, PS and PCL, uses SNMP for status and pagecount ### SUPPORTED END ### From Section 3 of the IFHP-HOWTO Document: ### ### 3. Recommended -Z options for Users ### ### Due to the general nature of the ifhp filter, there is no standard ### set of -Z user options because there is no standard set of user ### facilities. However, the following are recommended for use by ### implementors of new configurations or printer support. ### ### 3.1 Input Tray Selection ### ### If a printer supports an input tray selection mechanism, then the ### following options are recommended for use. Local conditions or ### printer type may require addition options. ### ### inupper, inlower, intray1, intray2, ..., manual, envelope ### ### The input tray selection options should start with the in ### prefix and correspond to the various trays, if possible. ### The manual and envelope options are included to select manual ### feed or envelope feed. There is a possible source of conflict ### here as there may be an envelope feeder as well as an envelope ### media. This is a printer specific dependency. ### ### source=name ### ### The source=name option allows users to use options such as ### -Zsource=inbin1, which may be useful for systems that have ### an unusual or nonstandard input selection mechanism. ### ### 3.2 Output Bin Selection ### ### If a printer has an output bin selection mechanism or some other ### finishing mechanism, then the following are recommended for use. ### ### outupper, outlower, outbin1, ... ### ### The output bin selection should start with the out prefix. ### ### outbin=name ### ### The outbin=name form allow users to use options such as ### -Zoutbin=stapler, which may be useful for systems that have ### an unusual or nonstandard output selection mechanism. ### ### 3.3 Media Size (Paper) Selection ### ### The paper size selection facilities usually are quite printer ### dependent, and the input tray selection and paper size selection ### mechanisms may interact in strange and mysterious ways. ### ### letter, legal, ledger, oversize, a0, a1, ... ### ### These are standard paper size names. ### ### 11x17, tabloid ### ### These are usually aliases for ledger, but depending on local ### conditions can select different types of paper. ### ### paper=name ### ### The paper=name form allow users to use options such as ### -Zpaper=b3, which may be useful for systems that have an ### unusual or nonstandard input media selection mechanism. ### ### 3.4 Media Type Selection ### ### Media Type is not the same as paper size, and corresponds to the ### name assigned to a particular media. Of course, the issue is ### complicated by the fact that some media have standard sizes as ### well. Again, the input tray selection, media size, and media type ### selection will interact in confusing and mysterious ways, depending ### on the whim of the printer firmware iplementors. ### ### You will notice that there is no generic mediatype=name facility. ### This is due to the radically different way that PostScript, ### PJL, PCL, etc., each handle media name and selection. While ### it is possible to determine the various strings, numbers, escape ### codes, etc., that need to be sent for each mediatype, a general ### mechanism is too fragile and fraught with peril for the unwary ### administrator to provide. You have been warned. Been there and ### have the scars to prove it. ### ### plain, preprinted, letterhead, transparency, glossy, prepunched, ### labels ### ### These are commonly used media type names gleaned from various ### PostScript Printer Description Files, Microsoft printer ### drivers, and arcane lore of the Printer Working Group. Note ### that these are not accepted terms in the paper industry for ### any of these type of media. You are warned. ### ### 3.5 Duplex and Simplex ### ### Duplex printing is when impressions are placed on both sides of a ### sheet of media. Due to a general lack of conventions, the orientation ### of each of the impressions varies from vendor to vendor, and has ### changed over the years. ### ### duplex, lduplex ### ### Print on both sides using the default orientation. The ### lduplex is an alias for duplex. ### ### duplexshort, sduplex ### ### Print on both sides but reverse the orientation of one page. ### The sduplex is an alias for duplex Which page is reversed ### it at the whim of the firmware implementors and conventions ### for the printer. ### simplex ### ### Print on a single side of a page. ### ### tumble, shortedge ### ### This is use to print a single page on one side of the media, ### but using the (nonstandard) orientation for the duplexshort. ### This is usually done when a single impression must be ### generated on the alternative side of the media, rather than ### the default side. Again, this is dependent on the whims and ### whimsys of the printer firmware implementors, and may have ### some unexpected side effects. ### ### 3.6 Copies ### ### This option has been provided to effectively allow the printer to ### make multiple copies of a single page or job. This option tends to ### be misimplemented on almost all known printers, and it is strongly ### recommended that users do not use it. However, for completeness, ### compatibility, and implementor consideration, this is included, ### even against the better judgement of the implementors of the ifhp ### software. ### ### copies=nnn ### ### Attempt to make nnn copies of each impression. This usually ### fails with catastrophic problems unless you have a system ### that supports all of the various options required, has enough ### memory to handle rasterization, you do not have a paper ### outage, and the printer does not stop with operator ### intervention. You have been warned. ### ### ######### ######### Default Printer Entry ######### This describes the various supported options that are ######### to be used in the ifhp.conf file. There are others but ######### these are reserved strictly for command line use. ######### # # PRINTER default - Generic Printer based on HP 4M Plus, PostScript, PJL, HPGL2, PCL, status, pagecount support ## Status file limits in K bytes ## statusfile_max=8 statusfile_min=2 #--- START language setup ## default is to turn everything on ## We assume that we have PostScript, PJL, PCL, and text support ## Text is just PCL without any control sequences ## pjl pcl ps text ## HPGL2 support - added by Samuel Lown @ CERN - 2003-05-13 ## by default hpgl2 support is turned off, this means an hpgl2 job ## type will be set to pcl by default, if enabled, the PJL job header ## will contain HPGL2 instead of PCL. ## This fixes many problems sending raw HPGL files to some plotters. hpgl2@ ## if you have a text file do LF to CRLF translation. ## This is dangerous and should not be used unless you are ## absolutely desperate AND have read the warnings in the ## source code. # crlf ## These are for very ugly printers that have some strange problems ## with PCL and PS end of job at the start of jobs. If it is present, ## the PJL settings are ignored, or the rest of the job may be ## ignored. ## ## PCL EOJ at start and end of job when PCL supported. ## If you set pcl_eoj@ you do NOT put an EOJ at start ## of job. This violates the recommendations of the PCL ## Reference Manual. ## pcl_eoj_at_start - (default), EOJ at start of job ## pcl_eoj_at_start@ - no EOJ ## pcl_eoj_at_end - (default), EOJ at end of job ## pcl_eoj_at_end@ - no EOJ pcl_eoj_at_start pcl_eoj_at_end ## PS EOJ is usually put at start of PS when PS is being printed. ## You may not want this. ## ps_eoj - ^D at start and end of job (default) ## ps_eoj_at_start - (default), EOJ at start of job ## ps_eoj_at_end - (default), EOJ at end of job ps_eoj ps_eoj_at_start ps_eoj_at_end ## Some printers get very upset when PostScript jobs contain ^T or ^C ## characters. You can remove various control character by setting ## their values in this string: ## remove_ctrl=TC will remove CTRL-T and CTRLC characters ## This is only done for PostScript jobs. You will usually find ## this when a job was generated on a system where it expects to ## communicate dynamically with a monitoring system, and is being ## printed on another printer or system. ## # remove_ctrl=TC # ## Some printers insist on using the Tagged Binary Commmunication Protocol ## to support sending embedded PS file. If you need to use TBCP, enable this. ## This flag is inherently evil, and is for desperate uses only, ## and should not be generally enabled. ## ## If you don't know what this is about, don't mess with it. ## As they say, You have been warned. Read the code, read the ## TBCP documentation, and get ready to experiment with this ## before blindly enabling it. ## # tbcp #--- END lanuage setup #--- START SNMP monitoring # if you want to use SNMP monitoring then use the snmp_printer_status # program. This program will report the status of a printer # by polling it using SNMP. Status will be read from both the # back channel (i.e. - connection to printer) and from the SNMP # monitoring program. The 'snmp_dev' device is determined by the # ifhp program; it depends on the appsocket and other options snmp_monitor@ snmp_program=@FILTER_DIR@/snmp_printer_status -h "\%s{snmp_dev}" -m "\%s{snmp_model}" -f "\%s{snmp_program_cfg}" snmp_program_cfg=@FILTER_DIR@/snmp_printer_status.conf # the snmp_printer_status.xml file has entries to specify the # SNMP Object Identifiers (OIDs) for variuos printers # The default is to use the standard Printer MIB entries for status. # Again, you should look at the code and modify the entries for your # printer. snmp_model=default # when we get status, we look for the following words in the # status to indicate that the printer is ready and/or idle. # Spaces in the status are replaced by underscores if necessary # You use the status fields specified in snmp_status_fields # One of the indicated conditions indicates the required condition snmp_status_fields=status printerstatus snmp_sync_status=ready power_save_mode snmp_end_status=ready idle # There are some totally brain dead printers that will NOT report # status correctly until a timeout period after the last close or # job sent. These are evil and ugly, but we love them anyways. # Delay snmp_wait_after_close seconds when you are using Appsocket # # Also, when you are NOT using appsocket, wait this long before getting # status. There is a finite delay for the SNMP status to change after # sending the job if you are NOT using appsocket. # snmp_wait_after_close=2 #--- END SNMP monitoring #--- START accounting extra information ## For those little moments of quiet desperation when you need to have the ## actual printing filter do some accounting. Why? because you may need to ## check with some specialized database, update the information in it. ## ## Again, this is inherently evil, and is for desperate sysadmins who are ## trying to placate the bean counters in administration... ## If you don't know what this is about, don't mess with it. ## You, as they say, have been warned. Read the IFHP-HOWTO for ## more details. ## accounting script # accounting=accounting.sh #--- END accounting extra information #--- START connection ## The conventional use of the ifhp filter is to have the spooler open ## a connection. However, the ifhp filter can also open the connection ## and must do so for the APPSOCKET protocol. The following flags are ## used to control this. ## ## dev=XXXX - the device to open ## dev=/dev/xxx - open a device ## if status@ then it is opened Write only ## if status then it is opened Read/Write ## dev=host%port - open a TCP/IP connection ## ## appsocket - use the appsocket protocol ## This requires that a network connection be made to the printer for ## each major stage in printing. ## ## close_appsocket - this special flag is used with the appsocket ## protocol to cause a TCP/IP 'close' to be done at the end of each ## stage of printing processing, rather than a network shutdown(SEND). ## This is needed to force some printers to recognize an end of job ## condition. #--- END connection #--- START printer status, sync, and pagecount ## ## status ## ## If you have a bi-directional channel to your printer, it may or ## may not provide status information. See the IFHP-HOWTO for details ## about this. ## ## status - printer has bidirectional communications, and will provide ## status information that MUST be read. The ifhp filter will do ## non-blocking reads and writes to the printer. ## ## status@ - the ifhp filter will NOT attempt to read from the ## printer and will do only (blocking) writes. ## ## Setting status@ can have ## unexpected side effects if your printer sends status back on a ## TCP/IP connection. If it is not read, the printer's output buffer ## may becomes full and the printer will lock up. ## ## If your printer has a bidirectional connection (network connection) ## but does not provide status or interactive information, ## use sync@ and pagecount@ to prevent the ifhp filter from interrogating ## the printer. ## status ## Status information is converted into strings of the form ## key=statusvalue. ## The following keys are assumed to be valuable: ## status - current device status ## error - device error ## warning - device error ## pagecount - device pagecount ## Others will be shown in the log file but not used for status ## Ignore status reported with the following keys. ## These match the first characters of the keys. You can ## use _ to stand for blanks. The match is done using globmatch ## status_ignore= junk this that the ## Also see snmp_status_fields for fields used to monitor snmp status status_ignore = name job page pages ## ## Under some very bizzare circumstances such as broken PJL ## implementations, you may need to translate the status keys from ## the vendor supplied to the ones needed above. ## Use status_translate to do the translation. The entries have the ## oldvalue=newvalue ## These match the first characters of the keys. You can ## use _ to stand for blanks. The match is done using an globmatch ## status_translate= id=hostid *status=status ## ## sync ## ## If you have a bidirectional communication port and your printer supports ## PJL ECHO, PJL JOB, or PostScript, then you can send a small job to the ## printer that will effectively check on its health and clear out any problems ## it may have had from the last job. This operation is called 'sync' because ## when it completes you have synchronized communication with the printer ## and are getting the current status information ## ## If you are not worried about this, you can turn 'sync' off - sync@ ## ## sync@ - no sync operations ## sync - Use PJL JOB, PJL ECHO, or PostScript, depending on ## what is supported by the printer. ## sync=ps - use PostScript ## sync=pjl - use PJL method ## sync=|/.... - run this program to get status (see STATUS HELPERS below) ## sync=snmp - use snmp_printer_status sync ## try sending sync requests at these intervals # sync_interval=20 ## ## pagecount ## ## If your printer suppors a hardware page counter, then this operation ## gets the value of the pagecounter both before and after the job has been ## printed. This information is written to the accounting log file. ## ## ## pagecount@ - no pagecount ## pagecount - if pjl availble us it, then if ps available use it ## this is best method to sync ## pagecount=ps - use ps method ## pagecount=pjl - use pjl method ## pagecount=|/.... - run this program to get pagecount (see STATUS HELPERS below) ## pagecount=snmp - use snmp_printer_status pagecount ## If your printer does not have a reliable way to determine that ## the last job has finished, you can 'poll' it at intervals. ## ## The page count will be sampled 'pagecount_poll' times (0 or 1 is once) ## until it is stable, at pagecount_interval seconds. ## The pagecount_poll is for printers which do not report the correct ## end of job conditions ## - pagecount_poll_start specifies number of polls at start ## - pagecount_poll_end specifies number of polls at end ## - default is to use pagecount_poll if not specified ## ## You can specify a non-zero pagecount timeout that will limit ## the amount of time that you try to get pagecounts ## This is ok at the start of a job, but can be dangerous ## if you are trying to the end of job pagecount value and ## the job is very long. See the 'waitend' for a possible solution #pagecount_poll=5 #pagecount_poll_end=5 #pagecount_poll_start=1 pagecount_interval=1 pagecount_timeout=0 ## You can send a 'sync' query at the end of job to determine when ## a job has completed. However, this may only report that the printer ## has received all of a job and is processing it, not that the job ## is actually finished. In fact, you can get status back indicating a ## job is finished and the printer is actually off line, waiting for paper. ## ## If you do not want to try to determine the end of job, set waitend@ ## (Note: waitend@ is DANGEROUS if you expect to get error status back. ## You can also set ## waitend=ps - send a small PostScriptjob which will generate information ## of the job has been completed. Unfortunately, this will only tell ## if the PostScript interpreter is available for printing. ## You may to use ps_ctrl_t (see above) to force printer status to be ## delivered as well. ## waitend=pjl send a small PJL job to the printer which should, if ## the printer supports PJL, cause some information to be sent back. ## waitend=|/program - run a program to query printer. See STATUS HELPERS ## ## Remember: if your printer spools jobs or buffers them, then you can ## get back 'job completed' status even though the job has not been printed. ## ## waitend@ - no waitend operation done ## waitend - Use PJL JOB, PJL ECHO, or PostScript, depending on ## what is supported by the printer. Priority is PJL JOB, ## PJL ECHO and then PostScript ## waitend=ps - use PostScript only ## waitend=pjl - use PJL method only ## waitend=|/.... - run this program to get status (see STATUS HELPERS below) ## waitend=snmp - use snmp_printer_status ## See the snmp_end_status for fields that are used for monitoring snmp status waitend ## When you use waitend=ps (or have a PostScript only printer), you can ## optionally periodically send a ^T (control T) to ask the printer for ## status. This will cause printer status to be returned in the format: ## ## %%[ status: value ]%% ## ## However, you may discover that the printer does not like to see ## ^T on the network comm port, and may lock up if you send it. ## You may need to use ps_ctrl_t@ to disable sending it. ## You may wait a long time without getting any status, even ## though the printer is OK, but has a paper jam or is offline. ## To suppress sending CTRL_T use ps_ctrl_t@ ## ## The waitend_ctrl_t_interval value is the interval between sending ## ^T to the printer. ## You may find that these CTRL_T's may get ignored if ## the PostScript engine is busy, so do not send too fast ## ## If the value returned is one listed in the end_status list, ## then this indicates that the last page has been printed. ## The values are separated by colon, semicolon, or whitespace. ## You can also use the !value to indicate that when this value does NOT ## occur as a status, then you have a done condition. For example, ## !printing will accept any status BUT printing as a done condition. ## ps_ctrl_t waitend_ctrl_t_interval=3 end_status=busy idle ## ## Interval to prompt for reprompt status after job has been sent ## waitend_interval=120 ## ## Timeout for the waitend response - 0 is no timeout. ## The send_job_rw_timeout will set a limit on the maximum time of ## IO activities, the waitend_timeout will set a maximum time for the ## job to finish. waitend_timeout=0 ### ### DESPERATION MEASURES ### ### Some printers, when sent malformed or unually complex PCL or ### PostScript jobs will lock up and not return status. The ### XXX_timeout value sets a timeout for the overall job completion. ### Actually, these are the maximum time to wait for a file descriptor ### to become available for reading or writing. Note that when a printer ### goes offline the file descriptor may block. ### ### This facility is provided to handle the case where a printer will lock ### up and not respond. This time should be at least as long as it takes ### for a job to complete. ### ### send_job_rw_timeout - maximum wait time for printer IO ## STATUS HELPERS ## The sync, pagecount, and waitend functions can be implemented by ## running a 'status helper' program. These programs are run with: ## STDIN = printing device ## STDOUT = for reporting ## STDERR = for errors ## ## Information written to STDERR will be put into the error log. ## Information written to STDOUT should have the format: key=value ## KEY VALUE ## sync 1 (or nonzero) - sync is done ## waitend 1 (or nonzero) - waitend is done ## pagecount nnn - pagecounter value ## ## Note: you can use a single program to do all 3 operations, ## in which case simply write 3 lines with sync, waitend, and pageount ## values. ## ## Alternatively, if the sync,waitend, or pagecount ## program exits with 0 status, then success is assumed, ## otherwise IFHP will exit with the same error status, ## except for coredumps, etc., in which case it will exit ## with JABORT status. ## ## If no pagecount information is returned, then a 0 (no pagecounter ## available) is assumed. ## ## ## ## how often to report progress - minimum of percent or ## amount written (in Kbytes) ## report when you have done this much more percent of the job progress_pc=25 ## report when you have done this much more Kbytes of job progress_k=1000 #--- END printer status, sync, and pagecount #--- START paper size for conversion purposes ## This is basically a nasty hack to allow users to pass paper ## sizes through to GhostScript. The idea is that you define ## the set of paper sizes that GhostScript can handle in this ## list, and then user the -M \%s{papersize} entry on the ## command line. ## 'papersize' is a 'Built In' function that will ## look through the 'papersize' list of values and check to see ## if one of them appears in the command line -Z or -T options values. ## If not, then it will check for a 'paper=' or 'papersize=' ## option, and finally use the value of 'papersize_default' ## if all the tests fail. If it is invoked for a 'number' then it ## will translate the name to a number corresponding to the PCL ## selection code. See pcl_papersize ## This allows you to use -Za0 on the lpr command line ## or -Zpapersize=a0 or -Zpaper=a0 ## papersize= a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 b0 b1 b2 b3 b4 b5 archA archB archC archD archE flsa flse halfletter note letter legal 11x17 ledger tabloid papersize_default= letter ## START PJL configuration ## only allow these PJL commands ## ## The format for this list is: ## commandname (no option checking) pjl_only=[ COMMENT DEFAULT DINQUIRE ECHO ENTER EOJ FSAPPEND FSDIRLIST FSQUERY FSUPLOAD FSDELETE FSDOWNLOAD FSINIT FSMKDIR INFO INITIALIZE INQUIRE JOB OPMSG PJL RDYMSG RESET SET STMSG USTATUS USTATUSOFF ## special builtins that expand variables correctly COPIES ] ## do NOT allow these PJL commands, even if they are in pjl_only pjl_except=[ ] ## BUILTIN PJL Support ## pjl_enter - printer supports language selection pjl_enter ## pjl_job - printer supports PJL JOB pjl_job ## pjl_console - printer supports PJL console setting ## (you can use the console@ as well) pjl_console ## Set console message during job ## This is also used as a unique string to identify job ## values you want - \%s{n} is user name - pjl_ready_msg = \%s{n} \%s{J}:\%s{P} ## Set console message when job is done ## Set this to empty string if you do not want a ready message ## at end of job pjl_done_msg = Done: \%s{n} \%s{J}:\%s{P} ## maximum number of characters on the console display for messages ## (you can use the display_size=nnn option as well) pjl_display_size= 20 ## expand the following on startup, after the builtin pjl_init=[ info=id ustatus teoj ] ## expand the following on termination, after the builtin pjl_term=[ ustatus teoj ] ## You can, if you are feeling very odd, force a file ## to be send as part of the PJL setup ## 1. add setup to pjl_user_opts if you want user specified files ## specify this with -Tsetup=filename ## 2. put setup=filename in pjl_init=[ ... ] list ## if you want it permanently set up ## The setup will get expanded to font_download=filename ## and the actual file will come from ${pjl_fontdir}/filename ## This keeps users from downloading /etc/passwd to your printer pjl_fontdir=@FONT_DIR@/pjl pjl_setup=[ font_download=\%s{setup} ] ## default value for testing or insurance setup=test ## PJL USTATUS command string ## This usually will force job status to be sent at 10 ## second intervals, which is pretty useful for a keepalive pjl_ustatus= @PJL USTATUSOFF @PJL USTATUS JOB = ON @PJL USTATUS DEVICE = ON @PJL USTATUS PAGE = ON @PJL USTATUS TIMED = 10 ## If your printer has 'True End of Job' then this is useful. ## The TEOJ is an undocumented option for PJL that forces JOB ## status to be delayed until the job has been totally printed. ## Sometimes it works, usually does not ## pjl_teoj= @PJL TEOJ = ON ## PJL Variables supposedly supported by HP and others ## Your milage may vary. More may be added as time goes on ## Note: the pjl_vars_set += [ ... ] format may soon ## allow additional values to be added ## The format is: ## VAR - no parameter checking ## VAR=DEFAULT - no parameter checking, default value ## VAR=Constraints - constraints, no default value ## VAR=DEFAULT!Constraints - constraints and default value ## ## Contraints: [(XLATEDVAR)]Type; ## XLATEDVAR is the actual form to use. Spaces are replaced by + ## Type is STRING, ENUMERATED,RANGE ## STRING; - type is string, remove metachars ## ENUMERATED;V1,V2,... - type is ENUMERATED, values V1, V2... ## RANGE;LOW,HIGH - type is RANGE, lower and upper limits ## Note: all constraints have a ; in them pjl_vars_set= [ AUTOCONF AUTOSELECT BINDING BITSPERPIXEL CLEARABLEWARNINGS CONTEXTSWITCH COPIES=1 COURIER=REGULAR CPCLOCK CPLOCK DENSITY DISKLOCK DUPLEX ECONOMODE FINISH FORMLINES HOLD HOLDTYPE IMAGEADAPT INTRAY1 INTRAY1SIZE INTRAY2 INTRAY2SIZE INTRAY3SIZE INTRAY4SIZE INTRAY5SIZE INTRAY6SIZE INTRAY7SIZE INTRAY8SIZE IOBUFFER IOSIZE JOBATTR JOBOFFSET LANG=ENGLISH LOWTONER LPARM_PCL_FONTNUMBER LPARM_PCL_PITCH LPARM_PCL_PTSIZE LPARM_PCL_RESOURCESAVESIZE LPARM_PCL_SYMSET MANUALFEED MEDIASOURCE MEDIATYPE MPTRAY ORIENTATION OUTBIN OUTLINEPOINTSIZE PAGEPROTECT PAPER PAPERLENGTH PAPERWIDTH PARALLEL PERSONALITY POWERSAVE POWERSAVETIME PRINTQUALITY=NORMAL QTY=1 RENDERMODE REPRINT=AUTO RESOLUTION RESOURCESAVE RESOURCESIZE RET TIMEOUT TUMBLE WIDEA4 LPARM_PCL_FONTNUMBER=(LPARM:PCL+FONTNUMBER)RANGE;0,52 LPARM_PCL_PITCH=(LPARM:PCL+PITCH)RANGE;0.44,99.99 LPARM_PCL_PTSIZE=(LPARM:PCL+PTSIZE)RANGE;4.00,999.75 LPARM_PCL_RESOURCESAVESIZE=(LPARM:PCL+RESOURCESAVESIZE)RANGE;700,700 LPARM_PCL_SYMSET=(LPARM:PCL+SYMSET)ENUMERATED;ROMAN8,ISOL1,ISOL2,ISOL5,PC8,PC8DN,PC850,PC852,PC8TK,WINL1,WINL2,WINL5,DESKTOP,PSTEXT,VNINTL,VNUS,MSPUBL,MATH8,PSMATH,VNMATH,PIFONT,LEGAL,ISO4,ISO6,ISO11,ISO15,ISO17,ISO21,ISO60,ISO69,WIN30 ] ## PJL options - format is PJL option [value] ## Your milage may vary. More may be added as time goes on ## Note: the pjl_vars_set += [ ... ] format allows ## additional values to be added pjl_options_set = [ info ] ## ## PJL Options in -Z opts ## pjl_user_opts = [ 11x17 1200 1200dpi 300 300dpi 600 600dpi a0 a1 a2 a3 a4 b5 bond cardstock color duplex duplexshort env10 envb5 envc5 envmonarch executive glossy heavy inlower intray1 intray2 intray3 inupper labels landscape lduplex ledger legal letter letterhead manual outlower outupper plain portrait preprinted prepunched recycle sduplex shortedge simplex source tabloid transparency tray1 tray2 tray3 tumble ## Variables PJL var = value AUTOCONF AUTOSELECT BINDING BITSPERPIXEL CLEARABLEWARNINGS CONTEXTSWITCH COPIES=1 COURIER=REGULAR CPCLOCK CPLOCK DENSITY DISKLOCK DUPLEX ECONOMODE FINISH FORMLINES HOLD HOLDTYPE IMAGEADAPT INTRAY1 INTRAY1SIZE INTRAY2 INTRAY2SIZE INTRAY3SIZE INTRAY4SIZE INTRAY5SIZE INTRAY6SIZE INTRAY7SIZE INTRAY8SIZE IOBUFFER IOSIZE JOBATTR JOBOFFSET LANG=ENGLISH LOWTONER LPARM_PCL_FONTNUMBER LPARM_PCL_PITCH LPARM_PCL_PTSIZE LPARM_PCL_RESOURCESAVESIZE LPARM_PCL_SYMSET MANUALFEED MEDIASOURCE MEDIATYPE MPTRAY ORIENTATION OUTBIN OUTLINEPOINTSIZE PAGEPROTECT PAPER PAPERLENGTH PAPERWIDTH PARALLEL PERSONALITY POWERSAVE POWERSAVETIME PRINTQUALITY=NORMAL QTY=1 RENDERMODE REPRINT=AUTO RESOLUTION RESOURCESAVE RESOURCESIZE RET TIMEOUT TUMBLE WIDEA4 ## PJL Options INFO ] ## Your milage may vary on these, but supposedly most PJL aware ## printers will either support or ignore them ## pjl_source=[ mediasource=\%s{source} ] #pjl_outbin=[ \%s{outbin} ] # pjl_paper=[ \%s{paper} ] # pjl_papersize=[ \%s{papersize} ] # pjl_pagesize=[ \%s{pagesize} ] # - these are pretty standard - DEFAULTS pjl_duplex=[ duplex=on ] pjl_duplexshort=[ duplex=on tumble=on ] pjl_lduplex=[ duplex ] pjl_sduplex=[ duplexshort ] pjl_simplex=[ duplex=off ] pjl_tumble=[ tumble=on ] pjl_shortedge=[ tumble ] pjl_inupper=[ mediasource=tray1 ] pjl_inlower=[ mediasource=tray2 ] pjl_outupper=[ outbin=upper ] pjl_outlower=[ outbin=lower ] pjl_tray1=[ mediasource=tray3 ] pjl_intray1=[ pjl_tray1 ] pjl_tray2=[ mediasource=tray0 ] pjl_intray2=[ pjl_tray2 ] pjl_tray3=[ mediasource=tray1 ] pjl_intray3=[ pjl_tray3 ] pjl_landscape=[ orientation=landscape ] pjl_portrait=[ orientation=portrait ] pjl_letter=[ paper=letter ] pjl_legal=[ paper=legal ] pjl_ledger=[ paper=ledger ] pjl_11x17=[ ledger ] pjl_tabloid=[ ledger ] pjl_executive=[ paper=executive ] pjl_a0=[ paper=a0 ] pjl_a1=[ paper=a1 ] pjl_a2=[ paper=a2 ] pjl_a3=[ paper=a3 ] pjl_a4=[ paper=a4 ] pjl_b5=[ paper=b5 ] pjl_envb5=[ paper=envisob5 ] pjl_env10=[ paper=env10 ] pjl_envc5=[ paper=envc5 ] pjl_envmonarch=[ paper=envmonarch ] pjl_transparency=[ mediatype=transparency ] pjl_plain=[ mediatype=plain ] pjl_preprinted=[ mediatype=preprinted ] pjl_letterhead=[ mediatype=letterhead ] pjl_glossy=[ mediatype=gloss ] pjl_prepunched=[ mediatype=prepunched ] pjl_labels=[ mediatype=labels ] pjl_bond=[ mediatype=bond ] pjl_recycle=[ mediatype=recycle ] pjl_heavy=[ mediatype=heavy ] pjl_cardstock=[ mediatype=cardstock ] pjl_color=[ mediatype=color ] pjl_manual=[ manualfeed=on ] pjl_300=[ resolution=300 ] pjl_300dpi=[ 300 ] pjl_600=[ resolution=600 ] pjl_600dpi=[ 600 ] pjl_1200=[ resolution=1200 ] pjl_1200dpi=[ 1200 ] ## PJL USTATUS information will include a lot of ## codes that are just not interesting, such as 'printer on line', ## or 'power up'. You can suppress reporting status for these codes ## by putting their code numbers in this list pjl_quiet_codes=[ 10001 10023 10030 40000 ] ## Special error messages ## One per line ## The idea is that you may get an error code, but you ## it is not 'standard'. You can add additional codes here ## or override the default strings in the ifhp source. ## pjl_error_codes=[ 10006=Toner Low ] ## Inform operator if this error number occurs pjl_alert_codes=[ 15* 40* 41* 42* 44* ] # use this program to write error to operator # error will be read from STDIN. You can play games with # mail or whatever you want here. # pjl_alert_handler= #--- END of PJL #--- START of PostScript ## PostScript Information ## WARNING - YOUR POSTSCRIPT PRINTER MAY NOT ACCEPT ## SOME OF THE COMMANDS HERE. Check the printer PostScript Printer ## Description File for details. ## use the following string to cause the printer to echo ## ifhp will replace NAME by a unique identifier to make sure ## that the latest echo was detected # put the PostScript out immediately before the start of the job # and before user options # example: #ps_init = [ nocopypage ] #ps_nocopypage = /copypage {showpage} def # ps_term: # put the PostScript out immediately AFTER the job and BEFORE the # PostScript EOF # example: #ps_term = [ stopduplex ] #ps_stopduplex = statusdict begin false setduplexmode end ps_status_code= %!PS-Adobe-2.0 ## for PS Level 3 add: # false 0 startjob pop ( %%[ echo: NAME ]%% ) print () = flush ## PageCount ## This is a very nasty piece of PostScript that will ## get the current pagecount value out of the statusdict ## Note: you really should use the PS Level 3 if you have it ## Note: some printers INSIST on ignoring the startjob stuff, ## and will report the current pagecount. You sometimes need ## to sit in a loop and wait until it stops changing. ## See pagecount_interval ps_pagecount_code= %!PS-Adobe-2.0 ## for PS Level 3 add: # false 0 startjob pop /p{print}def ( %%[ pagecount: ) p statusdict begin pagecount end 20 string cvs p ( ]%% ) p () = flush ## PostScript options in -Z ## defaults - for HP LaserJet4Mplus ## support for font download ## use: -Tfont=name1,font=name2 ## This will get expanded to fontdownload ## and fontdownload will get the ${font} value set by font= ## the ps_fontdir value will be prefixed, and ## ${ps_fontdir}/name1 and ${ps_fontdir}/name2 will be downloaded ## to the printer ## ps_fontdir=@FONT_DIR@/ps ps_font=[ font_download ] ## Support for PostScript based page settings ## YOU NEED TO CHECK YOUR PPD FILE FOR THIS STUFF ## ## You can also use tray=xx, source=xx, paper=xx, papersize=xx, pagesize=xx ## These are also passed as the PJL values so you can make them work ## with PostScript or PJL ps_source=[ \%s{source} ] ps_outbin=[ \%s{outbin} ] ps_paper=[ \%s{paper} ] ## this gets the value of the pagesize variable and then uses ## it as an index or key to find the corresponding string ps_papersize=[ \%s{papersize} ] ps_pagesize=[ \%s{pagesize} ] ## ps_duplex= statusdict begin true setduplexmode false settumble end ps_lduplex=[ duplex ] ps_duplexshort= statusdict begin true setduplexmode true settumble end ps_sduplex=[ duplexshort ] ps_simplex= statusdict begin false setduplexmode end ps_inupper= statusdict begin 0 setpapertray end ps_inlower= statusdict begin 1 setpapertray end ps_manual= statusdict begin /manualfeed true store end ps_envelope= statusdict begin com10envelopetray end ps_outupper= statusdict begin 0 setoutputtray end ps_outlower= statusdict begin 1 setoutputtray end ps_transparency= <> setpagedevice ps_tumble= statusdict begin true settumble end ps_shortedge=[ tumble ] # paper size selection ps_a0= ps_a1= ps_a2= ps_a3= ps_a4= ps_letter= ps_ledger= ps_11x17=[ ledger ] ps_tabloid=[ ledger ] ps_executive= ps_oversize= # PageSize Letter/US Letter: # from HP4Mplus PPD file ps_letter = 2 dict dup /Policies 1 dict dup /PageSize 1 put put dup /DeferredMediaSelection true put setpagedevice 2 dict dup /PageSize [612 792] put dup /ImagingBBox null put setpagedevice # End # PageSize Legal/US Legal: ps_legal = 2 dict dup /Policies 1 dict dup /PageSize 1 put put dup /DeferredMediaSelection true put setpagedevice 2 dict dup /PageSize [612 1008] put dup /ImagingBBox null put setpagedevice # End # PageSize A4/A4 : ps_a4 = 2 dict dup /Policies 1 dict dup /PageSize 1 put put dup /DeferredMediaSelection true put setpagedevice 2 dict dup /PageSize [595 842] put dup /ImagingBBox null put setpagedevice # End # PageSize Executive/Executive : ps_executive = 2 dict dup /Policies 1 dict dup /PageSize 1 put put dup /DeferredMediaSelection true put setpagedevice 2 dict dup /PageSize [522 756] put dup /ImagingBBox null put setpagedevice # End # PageSize Comm10/Env Comm10: ps_comm10 = 2 dict dup /Policies 1 dict dup /PageSize 1 put put dup /DeferredMediaSelection true put setpagedevice 2 dict dup /PageSize [297 684] put dup /ImagingBBox null put setpagedevice # End # PageSize Monarch/Env Monarch: ps_monarch = 2 dict dup /Policies 1 dict dup /PageSize 1 put put dup /DeferredMediaSelection true put setpagedevice 2 dict dup /PageSize [279 540] put dup /ImagingBBox null put setpagedevice # End # PageSize DL/Env DL: ps_env_dl = 2 dict dup /Policies 1 dict dup /PageSize 1 put put dup /DeferredMediaSelection true put setpagedevice 2 dict dup /PageSize [312 624] put dup /ImagingBBox null put setpagedevice # End # PageSize C5/Env C5: ps_env_c5 = 2 dict dup /Policies 1 dict dup /PageSize 1 put put dup /DeferredMediaSelection true put setpagedevice 2 dict dup /PageSize [459 649] put dup /ImagingBBox null put setpagedevice # End # PageSize B5/Env ISO B5: ps_env_b5 2 dict dup /Policies 1 dict dup /PageSize 1 put put dup /DeferredMediaSelection true put setpagedevice 2 dict dup /PageSize [499 708] put dup /ImagingBBox null put setpagedevice # End mediaselect=3 ps_mediaselect=<> setpagedevice ps_user_opts=[ 11x17 300x300 600x600 a0 a1 a2 a3 a3 a3fb a4 a4fb a5 async autoscale_36x60 autoscale_a0 autoscale_a3 autoscale_a4 autoscale_letter autoselect b4 b5 b5 b6 bond bond c5 c9 cardstock cardstock cmykinkseuro cmykinksfast cmykinksswop cmykinkstoyo collate color color colorascolor colorasgray comm10 converter custom1 custom2 custom3 custom4 custom5 custom6 dl draft duplex duplexshort duplexshortedge enhance enhanced env10 envb5 envc5 envdl envelope envelope envmonarch executive executive fast font fourup fourupl gamma glossy grayscale halftone halftoneenhanced halftonestandard heavy high init inlarge inlargecapacity inlower inmiddle intray1 intray1 intray10 intray2 intray3 intray4 intray5 intray6 intray7 intray8 intray9 inupper isob5 labels labels landscape lduplex ledger leftbin legal legal letter letter letterhead letterhead lxcollate manual manual manualfeed mediacolor mediaselect monarch nearestsizeadjust nearestsizenoadjust nineuo nineupl noenhance nolxcollate normal nosmoothing nosmoothing oneup oneupl other outbin outbin2 outbin3 outbin4 outbin5 outbin6 outbin7 outbin8 outbin9 outleft outlower outputbin outupper oversize pagecount_code pagesize paper papersize plain plain policya4 policyletter portrait preprinted preprinted prepunched printquality promptuser recycled rough scalepatterns sduplex shortedge simplex sixteenup sixteenupl sixup sixupl smoothing smoothing smoothingoff smoothingon source standard status_code sync tabloid topbin transparancy transparency transparency tumble twoup twoupl universal w558h774 w612h935 wmallpages wmangle wmfirstpage wmfont wmsize wmtext wmtextstylehalo wmtextstylemedium wmtextstylenarrow wmtextstylewide 11x17 a0 a1 a2 a3 a4 a5 duplex duplexshort envelope executive font inlower inupper lduplex ledger legal letter manual mediaselect outlower outupper oversize sduplex simplex tabloid transparency ] #--- END PostScript #--- START PCL ## PCL options in -Z pcl_user_opts=[ a3 a4 a5 autoselect bold bond cardstock clearmargins color converter courier crlf delete_fonts duplex duplexback duplexfront duplexselect duplexshort fixed font font_id font_op font_primary gloss height helvetica hmi inhighcapacity init inlower inright intray1 intray2 intray3 intray4 inupper italic jobseparation labels landscape lduplex ledger leftmargin leftoffset legal letter letterhead lf_stacker lineprinter linesperpage linewrap lpi manual nolinewrap normalpage orientation outbin outlower outupper pagesize paper papersize pc8 pitch plain portrait preprinted prepunched proportional recycled rightmargin rough sduplex simplex source stacker1 stacker2 stacker3 stacker4 stacker5 stacker6 stacker7 stacker8 style symbol_set topmargin topoffset transparency typeface user_opts vellum vmi weight ] ## turn LF into CRLF pcl_crlf=\033&k2G ## turn line wrap on pcl_linewrap=\033&s0C pcl_nolinewrap=\033&s1C ## paper (job) size ## use -Zpapersize=size gets translated to pcl code to select paper ## 1 - executive, 2 - letter, 3 - legal, 6 - ledger, 25 - A5, 26 - A4, 27 - A3 ## 80 - Monarch Envelope, 81 - Comm. 10 Envelope, 90 - Intl. DL Envelope ## 91 - Intl. C5 Envelope, 100 - Intl. D5 Envelope, 101 - Custom ## 71 - Hagaki Postcard, 72 - Oufuku-Hagaki Postcard ## Note that the papersize key is specially interpreted ## name to number tranlsation pcl_papersize_codes = [ executive=1 letter=2 legal=3 ledger=6 a5=25 a4=26 a3=27 monarch_envelope=80 comm_10_envelope=81 intl_dl_envelope=90 intl_c5_envelope=91 intl_d5_envelope=100 custom=101 hagaki_postcard=71 oufuku=72 ] # use the 'translate this value' facility # to get the corresponding numberical value pcl_papersize=\033&l\%d{papersize,pcl_papersize_codes}A pcl_letter=[ papersize=letter ] pcl_legal=[ papersize=legal ] pcl_ledger=[ papersize=ledger ] pcl_a5=[ papersize=a5 ] pcl_a4=[ papersize=a4 ] pcl_a3=[ papersize=a3 ] pcl_pagesize=[ papersize=%s{pagesize} ] pcl_paper=[ papersize=%s{paper} ] ## paper source selection ## use -Zsource=n ## 0 - current, 1 - upper, 2 - manual paper, 3 - manual envelope ## 4 - lower, 5 - optional paper, high capacity ## 6 - optional manual or envelope feeder, 7 - autoselect, 8 right side ## 20-39 high capacity input trays 2-21 source=0 pcl_source=\033&l\%d{source}H pcl_inupper=\033&l1H pcl_manual=\033&l2H pcl_inlower=\033&l4H pcl_inhighcapacity=\033&l5H pcl_autoselect=\033&l7H pcl_inright=\033&l8H ## orientation ## 0 - portrait, 1, landscape, 2 - reverse portrait, 3 reverse landscape pcl_orientation=\033&l\%d{orientation}O pcl_portrait=\033&l0O pcl_landscape=\033&l1O ## simplex or duplex ## 0 - simplex, 1 - duplex long edge, 2 - duplex short edge pcl_simplex=\033&l0S pcl_duplex=\033&l1S pcl_lduplex=[ duplex ] pcl_duplexshort=\033&l2S pcl_sduplex=[ duplexshort ] ## offsets ## these are specified in 1/720 inch units ## i.e. - if you want 1/2 inch, you need 720 x .5 = 360 units leftoffset=0 pcl_leftoffset=\033&l\%d{leftoffset}U topoffset=0 pcl_topoffset=\033&l\%d{topoffset}Z ## duplex page side selection duplex_select=1 pcl_duplexselect=\033&a\%d{duplexselect}G pcl_duplexfront=\033&a1G pcl_duplexback=\033&a2G ## job separaton pcl_jobseparation=\033&l1T ## output bin ## 0 - auto, 1 - bin 1,top/facedown 2 - bin 2,left/faceup ## 3 - bin 3 (HCO faceup) ## 4 - bin 4 (HCO 1, facedown) ## 5 - bin 5 (HCO 2, facedown) ## 6 - bin 6 (HCO 3, facedown) ## 7 - bin 7 (HCO 4, facedown) ## 8 - bin 8 (HCO 5, facedown) ## 9 - bin 9 (HCO 6, facedown) ## 10 - bin 10 (HCO 7, facedown) ## 11 - bin 11 (HCO 8, facedown) outbin=1 pcl_outbin=\033&l\%d{outbin}G pcl_outupper=\033&l1G pcl_outlower=\033&l2G ## margins pcl_clearmargins=\0339 leftmargin=0 pcl_leftmargin=\033&a\%d{leftmargin}L rightmargin=80 pcl_rightmargin=\033&a\%d{rightmargin}M topmargin=0 pcl_topmargin=\033&l\%d{topmargin}E linesperpage=66 pcl_linesperpage=\033&l\%d{linesperpage}F ## the HMI (Horizontal Motion Index) ## this is dangerous... ## This is the number of 1/120 inch unit per character ## i.e. - 120 unit per inch ## If you want 10 cpi, you want HMI = 120/10 = 12 hmi=12 pcl_hmi=\033&k\%d{hmi}H ## the VMI (Vertical Motion Index) ## this is dangerous... ## This is the number of 1/48 inch unit per line ## i.e. - 48 unit per inch ## If you want 6 lines per inch, you want HMI = 48/6 = 8 vmi=8 pcl_vmi=\033&l\%d{vmi}C ## the LPI (Lines Per Inch) - inverse of VMI ## This is the lines per line ## If you want 6 lines per inch, you want LPI = 6 lpi=6 pcl_lpi=\033&l\%d{lpi}D ## symbol set ## - don't fool around with this one... ## 10U = PC 8 - shows the funny PC characters??? ## symbol_set=8U pcl_symbol_set=\033(\%s{symbol_set} pcl_pc8=\033(10U ## spacing ## 0 - fixed, 1 - proportional pcl_fixed=\033(s0P pcl_proportional=\033(s1P ## pitch for fixed spaced font ## in characters per inch pitch=10 pcl_pitch=\033(s\%3.2f{pitch}H ## height for proportional spaced font ## in points height=10 pcl_height=\033(s\%3.2f{height}V ## style for proportional spaced font ## 0 - normal, 1 - italic, 4 condensed, etc style=0 pcl_style=\033(s\%d{style}S pcl_italic=\033(s1S ## weight - ## ranging from -7 (ultra thin) to 7 (ultra black) weight=0 pcl_weight=\033(s\%d{weight}B pcl_bold=\033(s3B ## Typeface Family ## See Appendic C in the PCL 5 comparison guide ## consists of foundary * 4096 + fontid ## foundary = 1 - AGFA, 2- Bitstream, etc ## fontid = 0 - line printer, 3 = courier, 4 = helvetica ## id 4099 - Courier ## 4100 - Helvetica ## typeface=4099 pcl_typeface=\033(s\%d{typeface}T pcl_courier=\033(s4099T pcl_helvetica=\033(s4100T pcl_lineprinter=\033(s0T ## ## Fonts and Font Downloading ## fontid is used to set the current font font_id=1 pcl_font_id=\033*c\%d{font_id}D ## set primary font font_primary=1 pcl_font_primary=\033(\%d{font_primary}X ## font control ## font_op=0 pcl_font_op=\033*c\%d{font_op}F pcl_delete_fonts=\033*c0F ## font directory font=c1201b.10 pcl_fontdir=@FONT_DIR@/pcl ## combination command pcl_font=[ delete_fonts font_id font_download font_primary ] ## canned setup pcl_normalpage=[ @PAGE_SIZE@ crlf linewrap portrait clearmargins fixed pitch=10 courier ] pcl_init=[ normalpage ] # put things here that should go at the VERY end of the PCL job # but before the PCL EOJ #pcl_term=[ ] ## ## Forced processing of all files ## (option: forceprocessing) ## ## Problem: you want to process all files that pass through ifhp ## including literal files. Basically, you want to ignore the -c ## option which LPRng has passed in. ## ## Setting forceprocessing to true will force ifhp to process all files ## which are passed to it, ignoring the -c option. Jobs for autodetect ## printers are not processed. ## This can be useful when you want to process all print jobs which arrive. ## eg: to add a 'colorasgray' before all jobs to force colour printouts to ## come out in grayscale. Without forceprocessing users can specify -b|-l ## to lpr and get around the conversion. ## # Set forceprocessing to process all files. forceprocessing@ ## ## Text and Incompatible file type conversion control ## ## Problem: you get files of very odd type and want to print ## them, but you need a converter program to do so ## ## Step 0: set default file language type. This is used if the ## the language type is explicitly determined. ## default_language=unknown ## ## Step 1: determine file type ## ## Method 1 - SIMPLE, BUT LIMITED - let ifhp detect the file type ## this will be pjl, ps, text, or unknown ## (option: forceconversion@, file_util_path=) ## ## Method 2 - POWERFUL, BUT MORE COMPLEX ## Force the file utility to find the file type ## - the file utility's output is lower cased, ## multiple whitespace is removed, and all white space ## (blanks, tabs, LF, HT, etc) are replaced ## by underscores ## (option: forceconversion, file_util_path=/path_to_file_utility) ## ## Method 3: - let ifhp try to find the simple ones, ## and then use file utiltyh. (default) ## (option: forceconversion@, file_util_path=/path_to_file_utility) ## ## Step 2: do conversion ## ## file_output_match = [ ## *pcl* pcl \%s{pcl_converter} ## *ps* ps \%s{ps_converter} ## *postscript* ps \%s{ps_converter} ## *pjl* pjl \%s{pjl_converter} ## # if your printer understands PCL, use the next line ## # *text* pcl \%s{pcl_converter} ## # if your printer only understands PostScript, use the next line ## *text* ps \%s{text_converter} ## *pdf* ps \%s{pdf2ps_converter} ## *_gif_* pcl @FILTER_DIR@/gif2pcl --autosize -x 2400 -y 3300 -d=300 -o- ## * unknown ## # for rasterizing ## # if you need to rasterize, use: ## *text* raw \%s{text_converter} ## *ps* raw \%s{ps_converter} ## *postscript* raw \%s{ps_converter} ## *gif* filter \%s{gif_to_ps_converter} ## * msg no_converter ## ] ## *text* ps @A2PS@ -q -B -1 -M Letter --borders=no -o- ## ^^^ glob match ## ^^ result type ## ^^ optional conversion program ## ## ## We match the (method 1) determined file type file or (method 2) ## file utility output against a 'glob' pattern. This pattern is URL ## encoded so that it can include spaces or other characters. ## ## The if there is a match, the resulting conversion output type is set to ## the second entry. If this is 'unknown', then the file is not ## printed. ## ## If the conversion output type is 'filter', then the converter is ## run on the file and the converted output is used again. For example: ## *gzip_compressed* filter gzip -c -d ## This would cause the gzip program to be used to uncompress the file ## ## If the file type is "msg" then the message value is sent ## and the ifhp exits with a 0 (successful) status. The converter name ## is used to select the type of error message. If the converter name is xx, ## If PostScript is available then the contents of ps_xxx will be sent to the ## standard output; if PCL is available then pcl_xx will ## be sent, the value of xx will be sent. See below for a typical value and ## way to use this. ## The following values are available: ## \%s{file_output} is set to the output of the the 'file' program ## \%s{pgm} is set to the converter program value ## \%s{msg} to the error message for file conversion failure ## - this is the value of the command line -e option if it was specified ## as LPRng passes the input file as the value of the -e option ## OR /dev/fd/0 if no -e value was specified ## OR - if the operating system does not support the /dev/fd facility ## ## The third entry (and rest of line) is the conversion program and ## options to use. As shown above, this can be an option whose ## value is expanded and substituted. For example: ## ## gs_converter= @GS@ -dSAFER -dPARANOIDSAFER -dBATCH -dNOPAUSE -q '-sOutputFile=@DEVFD3@' 3>&1 1>&2 ## -sDEVICE=\%s{gs_device} \%s{gs_options} - ## ## Note: the above clever trick was used by the Foomatic (www.linuxprinting.org) ## but has been since spotted in the wild in other scripts. ## ## #ps_converter= \%s{gs_converter} ## ## a2ps_converter= @A2PS@ -q -B -1 -M Letter --borders=no -o- text_converter= \%s{a2ps_converter} ## ## If no conversion is specified, then the original ## file is used. If the program has pipe or meta characters, then ## it is executed using /bin/sh -C 'program spec', allowing you to ## pipe output of one program to another. ## ## ## The converter program command line ZOPTS and TOPTS words are replaced with ## the values of the -Z flag and options and -T flag and options respectively, ## and the ARGV word with the entire set of ifhp filter command line options. ## For example, if the filter was @FILTER_DIR@/mystuff ZOPTS ## and you did lpr -Zlandscape, then you would get ## @FILTER_DIR@/mystuff -Zlandscape. ## This allows you to pass options to the converter ## ## The conversion program exit status must be 0 for successful conversion. ## Please note that programs such as enscript exit with non-zero ## exit status when they perform conversions correctly but need to wrap lines, ## or have some minor difficulty with non-ascii characters in the input. ## The use of a wrapper such as shown below is recommended, and is the ## default with ifhp: ## #!/bin/sh ## # @FILTER_DIR@/wrapper path [options] ## # wrapper script for enscript and others ## # path is the path to the program and options are the ## # options to pass. The program is run and then the exit ## # code is corrected ## program=$1 ## status=1; ## shift ## if test -n "$program" ; then ## $program "$@" ## status=$? ## fi; ## case "$status" in ## 1 ) exit $status;; ## esac ## exit 0 ## ## Spaces in the file utility output can be matched with %20 ## (URL escaped space) ## ## file - utility to determine file type ## ftp://ftp.astron.com/pub/file/ ## ftp.deshaw.com/pub/file/ ## OR ## ftp://ftp.lpng.com/pub/LPRng/UNIXTOOLS/file/ ## Also available from the RedHat.com SRPMS in (of course) rpm format ## foomatic support ## - The foomatic-rip filter (see http://www.linuxprinting.org) uses PPD files ## to do conversions. If you have the 'foomatic' option enabled AND ## you have a PostScript file, then the 'foomatic_rip' program will be ## used. The value of the foomatic option can be specified in the T or Z ## options, or as a printcap configuration entry. foomatic_rip=@FOOMATIC_RIP@ \%s{ppd_file} \%s{ARGV} foomatic=@FOOMATIC@ # set forceconversion to force the file(1) utility to be used default_language=text forceconversion@ ## UNIX File utility path ## WARNING: your version of file MUST repeat MUST use '-' as meaning ## read from STDIN file_util_path= @FILEUTIL@ - ## Patterns and Converters # example conversion program file_output_match = [ *postscript* ps \%s{ps_converter} *pdf* ps \%s{pdf2ps_converter} *pcl* pcl \%s{pcl_converter} *pjl* pjl \%s{pjl_converter} *printer*job*language* pjl *ascii*text* ps \%s{text_converter} *gzip_compressed* filter \%s{gzip_decompress} * msg no_converter ] ps_no_converter = %!PS-Adobe-3.0 /Courier findfont 10 scalefont setfont 72 500 moveto (No conversion available for type '\%s{file_output}') show showpage no_converter = No conversion available for type '\%s{file_output}' ps_conversion_error = %!PS-Adobe-3.0 /Courier findfont 10 scalefont setfont 72 500 moveto (Conversion failed for type '\%s{file_output}') show 72 480 moveto (Using '\%s{pgm}') show 72 460 moveto (Error: '\%s{msg}') show showpage conversion_error = Conversion failed for type '\%s{file_output}' Using '\%s{pgm}' Error: '\%s{msg}' # gs_device=epsonc # gs_options=-r240x72 # gs_converter= @GS@ -dSAFER -dPARANOIDSAFER -dBATCH -dNOPAUSE -q '-sOutputFile=@DEVFD3@' 3>&1 1>&2 # \%s{gs_options} - # # gs_converter= @GS@ -dSAFER -dPARANOIDSAFER -dBATCH -dNOPAUSE -q '-sOutputFile=@DEVFD3@' 3>&1 1>&2 -sPAPERSIZE=\%L{papersize} -sDEVICE=\%s{gs_device} \%s{gs_options} - gs_unidriver= @GS@ -dSAFER -dPARANOIDSAFER -dBATCH -dNOPAUSE -q '-sOutputFile=@DEVFD3@' 3>&1 1>&2 -sPAPERSIZE=\%L{papersize} @\%s{gs_device} \%s{gs_options} - a2ps_options= -q -B -1 -M \%M{papersize} --borders=no -o- a2ps_converter= @A2PS@ \%s{a2ps_options} - pdf2ps_converter= @GS@ -dSAFER -dPARANOIDSAFER -dBATCH -dNOPAUSE -q '-sOutputFile=@DEVFD3@' 3>&1 1>&2 -sDEVICE=pswrite \%s{pdf2ps_options} -c save pop -f - #ps_converter= \%s{ gs_converter } #pcl_converter= #pjl_converter= #text_converter= ## you may need a temp file location ## ## This will be extended to ..ifhpXXXXX ## for use by the unix mktemp() routine ## #tempfile=/var/tmp/ifhp ## Printer Specific Configurations ## Apple or PostScript Printers # PRINTER % - Generic PostScript printer, text to PS conversion, status, pagecount support [ apple postscript ps ] pjl@ pcl@ ps text@ file_output_match = [ *postscript* ps *text* ps \%s{a2ps_converter} *pdf* ps \%s{pdf2ps_converter} *gzip_compressed* filter \%s{gzip_decompress} ] ## Apple or PostScript Printers ## PRINTER % - Generic PostScript printer connected using appletalk # Note 1: you need to use the updated version of pap that # puts out status messages with "%%[ ... ]%%" around them # See the ifhp/UTILS/pap.c and ifhp.UTILS/README.pap files # # Here is the printcap that we started with: # ps # :sd=/var/tmp/LPD/%P # :filter=/usr/libexec/filters/ifhp # :ifhp=model=ps,ps_eoj@,debug=4,ps_ctrl_t@,\ # end_status=idle waiting,pagecount_poll_start=1\ # pagecount_poll_end=5 # :mx=0 # :lp=| $- /usr/local/bin/pap -p "PET\:LaserJet 2200" # # Use: ifhp=model=ps_appletalk # # [ ps_appletalk ] tc=ps ps_eoj@ ps_ctrl_t@ end_status=idle waiting pagecount_poll_start=1 pagecount_poll_end=5 ## PCL Only Printer # PRINTER % - Generic PCL only printer, no status [ pcl ] status@ pjl@ pcl ps@ text@ file_output_match = [ *pcl* pcl *text* pcl *gzip_compressed* filter \%s{gzip_decompress} ] # PRINTER % - HP LaserJet 4 PCL only printer, write only, no status [ pcl_gs ] status@ pjl@ pcl ps@ text@ gs_device=ljet4 file_output_match = [ *pcl* raw *text* pcl # postscript to PCL conversion *postscript* raw \%s{gs_converter} *pdf* filter \%s{pdf2ps_converter} *gzip_compressed* filter \%s{gzip_decompress} ] # TEMPLATE % - GhostScript PostScript to raster conversion, write only, no status [ ghostscript gs ] status@ pcl@ pjl@ ps text@ # something for a default gs_device=ljet4 file_output_match = [ *postscript* raw \%s{gs_converter} *pdf* filter \%s{pdf2ps_converter} *text* filter \%s{a2ps_converter} *gzip_compressed* filter \%s{gzip_decompress} ] ## HP Printers ## These all support PJL to a limited extent and PCL ## WARNING: PCL versions differ, and some PCL is actually ## the dreaded 'raster format' for PPA (no, I don't know ## what the acronym means) format. ## PCL now comes in versions 3, 4, 5. Enjoy. ## Patrick Powell ### # PRINTER % - HP LaserJet III (PCL and PostScript Interpreter) [ hpiiisi hp3si ljet3 lj3 ] pjl_only=[ COMMENT ENTER ] ### # PRINTER % - HP LaserJet III (PCL, PostScript via GhostScript) [ hpiiisi.gs hp3si.gs ljet3.gs lj3.gs ] tc=pcl_gs gs_device=ljet3 pjl_only=[ COMMENT ENTER ] # PRINTER % - HP LaserJet 4 Family, HP LaserJet {/hp(.*)/$1/} (PostScript Interpreter) [ hp4 hp4m hp4si hp4simx hp4plus hp4mplus hp4v hp4mv hp4p hp4mp hp4pj hpljpro hp4lc ] pjl_except=[ FSAPPEND FSDIRLIST FSQUERY FSUPLOAD FSDELETE FSDOWNLOAD FSINIT FSMKDIR ] # HP LaserJet 4M, has limited pagecount capability [ hp4m ] pagecount=ps # # Provided by Wilfried.Gaensheimer@infineon.com # --- Note: see also the HP 5000 and HP 8000 entries # If you know "more", let me (Wilfried.Gaensheimer@infineon.com) know # # PRINTER hp4mplus - HP LaserJet 4MPlus [ hp4mplus ] pjl_only=[ COMMENT DEFAULT DINQUIRE ECHO ENTER EOJ FSAPPEND FSDIRLIST FSQUERY FSUPLOAD FSDELETE FSDOWNLOAD FSINIT FSMKDIR INFO INITIALIZE INQUIRE JOB OPMSG PJL RDYMSG RESET SET STMSG USTATUS USTATUSOFF COPIES ] # # Some options do not really apply to the hp4mplus # (I used that entry to try the new 4500 DN, too). # - select tray (I left all of them in, of course the hp4mplus # doesn't have all of them ....) # - manual feed # - duplex, shortedge, .... # - select a4 or letter or legal paper # - set printquality and/or resolution (I guess that will # interact if you use both) # - select rendermode (does not apply to the hp4mplus ... # # If you know "more", let me (wig or Wilfried.Gaensheimer@infineon.com) # know. Or if I got it wrong (i'm still trying to figure out # how this works) ... wig # pjl_printquality=[ printquality=\%s{printquality} ] pjl_draft=[ printquality=draft ] pjl_normal=[ printquality=normal ] pjl_high=[ printquality=high ] pjl_rendermode=[ rendermode=\%s{rendermode} ] pjl_color=[ rendermode=color ] pjl_grayscale=[ rendermode=grayscale ] pjl_user_opts += [ color draft grayscale high normal printquality rendermode ] # HP LaserJet 4 Family, HP LaserJet {/hp(.*)/$1/} [ hp4v hp4mv ] # Paper Selection By Size ps_letter= <> setpagedevice ps_legal= <> setpagedevice ps_ledger=<> setpagedevice ps_oversize=<> setpagedevice ps_a3 = <> setpagedevice ps_a4 = <> setpagedevice # PRINTER % - HP LaserJet 5 Family, Hp LaserJet {/hp(.*)/$1/} [ hp5l ] pjl_except=[ EOJ JOB OPMSG RDYMSG STMSG FSAPPEND FSDIRLIST FSQUERY FSUPLOAD FSDELETE FSDOWNLOAD FSINIT FSMKDIR ] # PRINTER % - HP LaserJet 6 Family, Hp LaserJet {/hp(.*)/$1/} [ hp6l hp1100 ] pjl_except=[ EOJ JOB OPMSG RDYMSG STMSG FSAPPEND FSDIRLIST FSQUERY FSUPLOAD FSDELETE FSDOWNLOAD FSINIT FSMKDIR ] # PRINTER % - HP LaserJet 1000 Family, Hp LaserJet {/hp(.*)/$1/} [ hp1100 ] pjl_except=[ EOJ JOB OPMSG RDYMSG STMSG FSAPPEND FSDIRLIST FSQUERY FSUPLOAD FSDELETE FSDOWNLOAD FSINIT FSMKDIR ] # PRINTER % - Hp LaserJet 4L, PCL only [ hp4l ] status@ pjl@ pcl ps@ text@ #Using 'laserjet', the printed area is shifted to the right on a 'portrait #letter' piece of paper. Using 'ljet4', it prints centered. I.e., it #looks better. # # Luca Filipozzi, Debian Developer #gs_device=laserjet gs_device=ljet4 gs_options=-r300x300 file_output_match = [ *pcl* pcl *text* pcl # postscript to PCL conversion *postscript* pcl \%s{gs_converter} *pdf* filter \%s{pdf2ps_converter} *gzip_compressed* filter \%s{gzip_decompress} ] # PRINTER % - HP LaserJet {/hp(.*)/$1/} [ hp4ml hp5p hp5mp hp6p hp6mp ] pjl_except=[ OPMSG RDYMSG STMSG FSAPPEND FSDIRLIST FSQUERY FSUPLOAD FSDELETE FSDOWNLOAD FSINIT FSMKDIR ] # PRINTER % - HP LaserJet {/hp(.*)/$1/} [ hp5 hp5si hp5simx hp5m ] pjl_except=[ FSAPPEND FSDIRLIST FSQUERY FSUPLOAD ] # There may be problems with the copypage and EOJ interaction #ps_init = [ nocopypage ] #ps_nocopypage = /copypage {showpage} def # put things here that should appear at the very very end # of the PostScript job, but BEFORE the ^D at end #ps_term = [ stopduplex ] #ps_stopduplex = statusdict begin false setduplexmode end ps_manual=<> setpagedevice ps_envelope=<> setpagedevice ps_inupper=[ intray1 ] ps_inlower=[ intray2 ] ## *InputSlot Tray1/Tray 1: ps_intray1=<> setpagedevice ##InputSlot Tray2/Tray 2: ps_intray2=<> setpagedevice ##InputSlot Tray3/Tray 3: ps_intray3=<> setpagedevice ##InputSlot Tray4/Tray 4: ps_intray4=<> setpagedevice # Paper Selection By Size ps_letter= <> setpagedevice ps_legal= <> setpagedevice ps_ledger=<> setpagedevice ps_oversize=<> setpagedevice ps_a3 = <> setpagedevice ps_a4 = <> setpagedevice ## *OutputBin Upper/Top Output Bin (Face Down): ##ps_outupper=<> setpagedevice ## *OutputBin Left/Left Output Bin (Face Up): ##ps_outlower= ## currentpagedevice /OutputAttributes get ## 5 known ## {<> setpagedevice} ## {<> setpagedevice} ## ifelse ## ## *OutputBin Stacker/Stacker (Face Down): ps_outbin2=<> setpagedevice ## *OutputBin Separator/Job Separator (Face Down): ps_outbin3=<> setpagedevice ## *OutputBin Stapler/Stapler (Face Down): ps_outbin4=<> setpagedevice ## *OutputBin OutputBin1/Mailbox 1 (Face Down): ps_outbin5=<> setpagedevice ## *OutputBin OutputBin2/Mailbox 2 (Face Down): ps_outbin6=<> setpagedevice ## *OutputBin OutputBin3/Mailbox 3 (Face Down): ps_outbin7=<> setpagedevice ## *OutputBin OutputBin4/Mailbox 4 (Face Down): ps_outbin8=<> setpagedevice ## *OutputBin OutputBin5/Mailbox 5 (Face Down): ps_outbin9=<> setpagedevice ## *Duplex None/Off: ps_simplex= <> setpagedevice ## *Duplex DuplexNoTumble/Long-Edge Binding: ps_duplex= <> setpagedevice ps_lduplex= [ duplex ] ## *Duplex DuplexTumble/Short-Edge Binding: ps_duplexshort= <> setpagedevice ps_sduplex= [ duplexshort ] ps_tumble=<> setpagedevice ps_shortedge=[ tumble ] ps_user_opts += [ letter ledger simplex duplex intray1 intray2 intray3 intray4 outbin2 outbin3 outbin4 outbin5 outbin6 outbin7 outbin8 outbin9 ] ## We have printcap information [ hp4000_pcl ] ## pcl paper source selection ## use -Zsource=n ## 0 - current, 1 - tray 2 (first cassette), 2 - manual ## 3 - ???? ## 4 - tray 1 (Multipurpose), 5 - tray 3 (second cassete) ## 6 - envelope 8 - tray 4 (third cassette) ## 20-39 high capacity input trays 2-21 ## pcl_intray1=\033&l4H pcl_intray2=\033&l1H pcl_intray3=\033&l5H pcl_intray4=\033&l8H pcl_bond = \033&n5WdBond pcl_plain = \033&n6WdPlain pcl_color = \033&n6WdColor pcl_labels = \033&n7WdLabels pcl_recycled = \033&n9WdRecycled pcl_letterhead = \033&n11WdLetterhead pcl_cardstock = \033&n10WdCardstock pcl_prepunched = \033&n11WdPrepunched pcl_transparency = \033&n13WdTransparency pcl_user_opts += [ intray1 intray2 intray3 intray4 bond plain color labels recycled letterhead cardstock prepunched transparency ] # now we define the additional goodies that we have # PRINTER % - HP LaserJet {/hp(.*)/$1/} [ hp4100 hp4200 hp4300 ] tc=hp4000_pcl pjl_waitend_byjobname # PRINTER % - HP LaserJet {/hp(.*)/$1/} [ hp5simopier hp4000 ] tc=hp4000_pcl # PRINTER % - HP Color LaserJet {/hpcolorlj(.*)/$1/} [ hpcolorlj hpcolorlj5 hpcolorlj5m ] pjl_only=[ COMMENT ECHO ENTER EOJ INFO INITIALIZE INQUIRE JOB PJL RDYMSG USTATUS USTATUSOFF ] # PRINTER hpdj1200 - HP DesignJet 1200 Family [ hpdj1200 ] pjl_only=[ COMMENT ENTER PJL ] status@ # PRINTER hppjxl300 - HP PaintJet XL 300 Family [ hppjxl300 ] pjl_only=[ COMMENT ENTER PJL ] status@ # PRINTER hpdj1600 - HP DesignJet 1600 Family [ hpdj1600 ] pjl_only=[ COMMENT DEFAULT DINQUIRE ECHO ENTER EOJ JOB PJL RESET SET ] # PRINTER % - HP DeskJet {/hpdj(.*)/$1/} [ hpdj200 hpdj220 hpdj600 hpdj650 ] pjl_only=[ COMMENT ECHO ENTER INFO USTATUS USTATUSOFF ] # PRINTER % - HP DeskJet {/hpdj(.*)/$1/} [ hpdj230 hpdj250c hpdj330 hpdj350c hpdj430 hpdj450c hpdj455ca hpdj700 hpdj750c hpdj750cplus hpdj755cm hpdj2000cp ] # The plotter version likes HPGL2 files hpgl2 pjl_only=[ COMMENT ECHO ENTER EOJ INFO JOB RESET SET USTATUS USTATUSOFF ] # # The HP DesignJet 2500 CP and the HP2500 (hp2500) are NOT the same # # hp2500 hp2500cm chp2500c # HP 2500C, HP 2500C+ and HP 2500CM - What's the Difference? # # HP 2500C # # The HP 2500C with 4MB RAM is a network capable printer for Windows # and DOS. This is the base model in the HP 2500C series printer # family. The printer is designed to leverage existing hardware # investments with the flexibility to install a HP MIO print server, # upgrade with Adobe PostScript 3 or PCL 5Ce and memory up to 84MB # RAM when you need it. # # HP 2500C+2 # # The HP 2500C+ with 12 MB RAM and PCL 5Ce, is a network capable # printer designed to serve users who have standardized on a PCL 5Ce # printing solution or require a replacement for the DeskJet 1200C # or DeskJet 1600C series of color inkjet printers. This printer also # offers the flexibility to install a HP MIO print server, upgrade # with Adobe Postscript 3 and memory up to 84 MB RAM, when you need # it. # # HP 2500CM # # The HP 2500CM with 20 MB RAM and Adobe PostScript 3 is a network # ready printer for Macintosh, Windows and DOS. This printer is # designed for immediate workgroup connectivity with built-in HP MIO # print server and true Adobe PostScript 3, upgradable to a total of # 84MB RAM for maximum document portability. # # PRINTER % - HP DesignJet {/hp(.*)/$1/} - No PCL, PostScript Only [ hp2500 hp2500cm hp2500c ] # no PCL, only PostScript and limited PJL pcl@ ps pjl # some firmware releases for this printer do not like ^D ps_eoj@ pjl_only=[ COMMENT ECHO ENTER EOJ INFO JOB RESET SET USTATUS USTATUSOFF ] # PRINTER % - HP DesignJet {/hp(.*)/$1/} - PCL and PostScript [ hp2500cm ] tc=hp2500 pcl # PRINTER hpdj2500cp - HP DesignJet 2500CP, not HP2500, HP2500c, HP2500cm [ hpdj2500cp ] # Supplied by: Wilfried.Gaensheimer@infineon.com # my try to get most out of our HP DesignJet 2500 ... # please let me (Wilfried.Gaensheimer@infineon.com) know when I got it wrong ... #wig19990813 # Modified Patrick Powell Fri Aug 13 11:14:35 PDT 1999 pjl_only=[ COMMENT ECHO ENTER EOJ INFO JOB RESET SET USTATUS USTATUSOFF ] # This device does not support pagecount (obvious ...) pagecount@ # # According to my copy of the PJL reference guide it supports # only the DEVICE and the TIMED USTATUS commands ... # I just don't know what these are for ... ? # pjl_ustatus= @PJL USTATUSOFF @PJL USTATUS DEVICE = ON @PJL USTATUS TIMED = 10 # # setting orientation, printqualtity, rendermode with PJL did not work ... # I left them in, but PostScript seems to be the better place ... # # # DesignJet does not honor these PJLs??? # O.k., so we resort to ps_ (see below) .... # I left them in because they might work one day .... # pjl_a3=[ paperlength=8420 paperwidth=11910 ] pjl_draft=[ printquality=draft ] pjl_normal=[ printquality=normal ] pjl_high=[ printquality=high ] pjl_color=[ rendermode=color ] pjl_grayscale=[ rendermode=grayscale ] pjl_user_opts += [ autoselect autoconf paperlength paperwidth printquality draft normal high gamma color greyscale rendermode ] # # We need to use the PostScript options ... # Some of them might be there because of copy&paste ... # # # The options allow to: # - choose manualfeed # - choose certain papersizes ( fb is for full bleed) # - scale on papersize to another (use -Za4,autoscale_a3) # - choose rendermode (color vs. grayscale) # - set gamma (defaults to 0.333, allows to reduce intensity # for ink based printing of "real" pictures # - set orientation # - set printquality # - set resolution (t.b.d.) # # BTW.: If you want to have a A3 printed in endless paper, combine that # with the "landscape" option ps_autoscale_letter=/HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [612 792 ] exch exec <<>> setpagedevice ps_autoscale_a4=/HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [595 842] exch exec <<>> setpagedevice ps_autoscale_a3=/HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [842 1191] exch exec <<>> setpagedevice ps_autoscale_a0=/HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2384 3370] exch exec <<>> setpagedevice ps_autoscale_36x60=/HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2592 4320] exch exec <<>> setpagedevice ps_a4=<> setpagedevice # full bleed ... ps_a4fb=<> setpagedevice ps_a3=<> setpagedevice ps_a3fb=<> setpagedevice ps_a0=<> setpagedevice ps_grayscale=<< /ProcessColorModel /DeviceGray >> setpagedevice ps_color=<< /ProcessColorModel /DeviceCMYK >> setpagedevice ps_landscape=userdict /HPCustTrans known { (<<) cvx exec /Orientation userdict /HPCustTrans get 1 eq { 0 } { 1 } ifelse (>>) cvx exec setpagedevice } { <> setpagedevice } ifelse ps_portrait=userdict /HPCustTrans known { (<<) cvx exec /Orientation userdict /HPCustTrans get (>>) cvx exec setpagedevice } { <> setpagedevice } ifelse # set gamma correction to reduce color intensity for InkJets .. gamma=0.333 ps_gamma={ \%6.3f{gamma} exp } dup dup currenttransfer set colortransfer ps_printquality=[ \%s{printquality} ] ps_draft= << /HWResolution [300 300] /PostRenderingEnhance true /PostRenderingEnhanceDetails << /PrintQuality 1 /Type 11 >> >> setpagedevice ps_normal= << /HWResolution [300 300] /PostRenderingEnhance true /PostRenderingEnhanceDetails << /PrintQuality 2 /Type 11 >> >> setpagedevice ps_fast= [ high ] ps_high= << /HWResolution [600 600] /PostRenderingEnhance true /PostRenderingEnhanceDetails << /PrintQuality 3 /Type 11 >> >> setpagedevice ps_user_opts += [ a0 a3 a3fb a4 a4fb autoscale_36x60 autoscale_a0 autoscale_a3 autoscale_a4 autoscale_letter color draft fast gamma grayscale high landscape normal portrait printquality font ] # # O.K., here we are the end of the story, at least today ... #wig19990813 # # PRINTER % - HP Color LaserJet Printer {/hp(.*)/$1/} [ hp4500 hp8500 hp8550 hp4550n] # Apparently this printer does not like ^D at start of job ps_eoj_at_start@ pjl_inupper=[ mediasource=tray0 ] pjl_inlower=[ mediasource=tray1 ] ## paper source selection ## use -Zsource=n ## 0 - current, 1 - lower, tray2, 2 - manual paper, 3 - manual envelope ## 4 - upper tray1, 5 - optional paper, high capacity - tray3 pcl_intray1=\033&l4H pcl_intray2=\033&l1H pcl_intray3=\033&l5H pcl_bond = \033&n5WdBond pcl_plain = \033&n6WdPlain pcl_color = \033&n6WdColor pcl_labels = \033&n7WdLabels pcl_recycled = \033&n9WdRecycled pcl_letterhead = \033&n11WdLetterhead pcl_cardstock = \033&n10WdCardstock pcl_prepunched = \033&n11WdPrepunched pcl_preprinted = \033&n11WdPreprinted pcl_transparency = \033&n13WdTransparency pcl_rough = \033&n6WdRough pcl_vellum = \033&n7WdVellum pcl_gloss = \033&n7WdGloss pcl_user_opts += [ intray1 intray2 intray3 bond plain color labels recycled letterhead cardstock prepunched preprinted transparency rough vellum gloss ] #duplex (optional) ps_simplex= <> setpagedevice ps_duplex= <> setpagedevice ps_lduplex=[ duplex ] ps_duplexshort= <> setpagedevice ps_sduplex=[ duplexshort ] ps_tumble= <> setpagedevice ps_shortedge=[ tumble ] #Tray # This is totally bizzare and does not make sense # but this is what the PPD file says. ps_inupper= <> setpagedevice ps_intray1= <> setpagedevice ps_inlower= <> setpagedevice ps_intray2= <> setpagedevice ps_intray3= <> setpagedevice ps_manual= <> setpagedevice #PageSize ps_letter= <> setpagedevice ps_legal= <> setpagedevice ps_executive= <> setpagedevice ps_a3= <> setpagedevice ps_a4= <> setpagedevice ps_a5= <> setpagedevice ps_b5= <> setpagedevice ps_envb5= <> setpagedevice ps_env10= <> setpagedevice ps_envc5= <> setpagedevice ps_envmonarch= <> setpagedevice #MediaType ps_plain= <> setpagedevice ps_preprinted= <> setpagedevice ps_letterhead= <> setpagedevice ps_transparency= <> setpagedevice ps_glossy= <> setpagedevice ps_prepunched= <> setpagedevice ps_labels= <> setpagedevice ps_bond= <> setpagedevice ps_recycled= <> setpagedevice ps_color= <> setpagedevice ps_heavy= <> setpagedevice ps_cardstock= <> setpagedevice # Print Color as Gray ps_colorasgray= <> setpagedevice ps_colorascolor= <> setpagedevice # CMYK Ink Space ps_cmykinksfast= << /CMYKInkSet 0 >> setpagedevice ps_cmykinksswop= << /CMYKInkSet 1 >> setpagedevice ps_cmykinkseuro= << /CMYKInkSet 2 >> setpagedevice ps_cmykinkstoyo= << /CMYKInkSet 3 >> setpagedevice ps_user_opts +=[ a3 a4 a5 b5 bond cardstock cmykinkseuro cmykinksfast cmykinksswop cmykinkstoyo color colorascolor colorasgray duplex duplexshort env10 envb5 envc5 envmonarch executive glossy heavy inlower inupper labels legal letter letterhead manual plain preprinted prepunched recycled simplex transparency tray1 tray2 tray3 lduplex sduplex tumble shortedge ] # PRINTER hp4550n - HP 4550N [ hp4550n ] # to fix waitend pjl_waitend_byjobname # # Hewlett Packard 5000 Series # Model number: C4111A (LaserJet 5000N) # Printer short description: Letter/Legal/A4/A3, PostScript Level3 # # Input taken from # hp5000_6.ppd # # Author: Wilfried.Gaensheimer@infineon.com # wig19991020 # # Status: untested # # Open Issues: # # Implemented commands: # # PJL: # # paper: A3,A4,Letter,Legal,Ledger/Tabloid/11x17 # resolution: 300/300dpi | 600/600dpi | 1200/1200dpi # ??bitsperpixel: ( 2 | 1 ) # ??economode: ( ON | OFF ) # # Postscript: # # ?? collate: ( true | false ) # ?? smoothing: ( true | false ) # pagesize/papersize/paper: # letter | executive | legal | ledger/tabloid/11x17 | a3 | a4 | a5 # not implemented: .... # source/tray: upper/tray1 | manual/manualfeed | middle/tray2 | # lower/tray3 |largecapacity/tray4/large | # media type: plain | transparency | preprinted # not implemented: | letterhead | prepunched | labels | bond | recycled | # colorpaper (*) | cardstock | rough # (*) color in PPD # ?? scalepattern (not implemented) # ?? halftone: enhanced | standard (not implemented) # duplex | sduplex/duplexshort | simplex | shortedge/tumble # PRINTER % - HP 5000 Model C4111A (LaserJet 5000) [ hp5000 ] pjl_only=[ COMMENT DEFAULT DINQUIRE ECHO ENTER EOJ FSAPPEND FSDIRLIST FSQUERY FSUPLOAD FSDELETE FSDOWNLOAD FSINIT FSMKDIR INFO INITIALIZE INQUIRE JOB OPMSG PJL RDYMSG RESET SET STMSG USTATUS USTATUSOFF COPIES ] economode=ON pjl_economode=[ economode=\%s{economode} ] pjl_economodeoff=[ economode=off ] pjl_user_opts += [ bitsperpixel economode economodeoff ] # we have the same PCL as the HP 4000 tc=hp4000_pcl # now we do the PostScript collate=true ps_collate=<> setpagedevice # smoothing: ( true | false ) smoothing=true ps_smoothing= << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 2 /Type 8 >> >> setpagedevice ps_nosmoothing= << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 0 /Type 8 >> >> setpagedevice # # Paper size selection ... # ps_letter=<> setpagedevice ps_executive= <> setpagedevice ps_legal= <> setpagedevice ps_ledger= <> setpagedevice ps_a3= <> setpagedevice ps_a4= <> setpagedevice ps_a5= <> setpagedevice # # source ... # ps_inupper=<> setpagedevice ps_intray1=[ inupper ] ps_manual=<> setpagedevice ps_manualfeed=[ manual ] ps_inmiddle=<> setpagedevice ps_intray2=[ inmiddle ] ps_inlower=<> setpagedevice ps_intray3=[ inlower ] ps_inlargecapacity=<> setpagedevice ps_inlarge=[ inlargecapacity ] ps_intray4=[ inlargecapacity ] # # Media type ... # ps_plain=<> setpagedevice ps_preprinted=<> setpagedevice ps_transparency=<> setpagedevice # # Duplex control .. # ps_duplex=<> setpagedevice ps_lduplex=[ duplex ] ps_duplexshort=<> setpagedevice ps_sduplex=[ duplexshort ] ps_simplex=<> setpagedevice ps_tumble=<> setpagedevice ps_shortedge=[ tumble ] ps_user_opts += [ collate executive inlarge inlargecapacity inmiddle intray intray1 intray2 intray3 intray4 nosmoothing pagesize paper papersize plain preprinted smoothing source ] # # Take PCL from generic section .... # #!End of [ hp5000 ] # # Hewlett Packard 8000 Series, 8100 Series # # Printer short description: Letter/Legal/A4, PostScript Level3 # 300/600 # # Input taken from # hp8000_5.ppd # # Author: Wilfried.Gaensheimer@infineon.com # wig19990921 # # Status: untested # # Open Issues: # # Implemented commands: # # PJL: # # resolution: 300/300dpi | 600/600dpi # bitsperpixel: ( 2 | 1 ) # economode: ( ON | OFF ) # # Postscript: # # outputbin: upper/topbin | left/leftbin | # not implemented: stacker | collator |separator | stapler | .... # collate: ( true | false ) # smoothing: ( true | false ) # pagesize/papersize/paper: # letter | executive | legal | tabloid/11x17 | a3 | a4 | a5 # not implemented: w842h1274 | b4 | b5 | doublepostcard | # w612h935 | w558h774 | w774h1116 | # env10 envmonarch envdl envc5 envisob5 # source/tray: upper/tray1 | manual/manualfeed | middle/tray2 | # lower/tray3 |largecapacity/tray4/large | # tray5 | envelope | plain | preprinted | # transparency # not implemented: | letterhead | prepunched | labels | bond | recycled | # colorpaper (*) | cardstock | rough # (*) color in PPD # scalepattern (not implemented) # halftone: enhanced | standard # duplex | sduplex/duplexshort | simplex | shortedge/tumble # PRINTER % - HP LaserJet 8000 Series, {/hp(.*)/HP$1/} [ hp8000 hp8100 hp8150 ] pjl_only=[ COMMENT DEFAULT DINQUIRE ECHO ENTER EOJ FSAPPEND FSDIRLIST FSQUERY FSUPLOAD FSDELETE FSDOWNLOAD FSINIT FSMKDIR INFO INITIALIZE INQUIRE JOB OPMSG PJL RDYMSG RESET SET STMSG USTATUS USTATUSOFF COPIES ] pjl_economodeoff=[ economode=off ] #ExtractedKey: JCLEconomode True/Save Toner pjl_economode=[ economode=on ] #ExtractedKey: JCLFastRes True/On pjl_fastres=[ bitsperpixel=2 ] #ExtractedKey: JCLFastRes False/Off pjl_fastresoff=[ bitsperpixel=1 ] pjl_user_opts += [ economode economodeoff fastres fastresoff ] # the HP 8000 has the same PCL as the hp4000 tc=hp4000_pcl ## but different large capacity definition ! ## 20-39 high capacity input trays 2-21 ## ## the large capacity tray 4 has a different pcl definition pcl_intray4=\033&l20H pcl_lf_stacker=\033&l3G pcl_stacker1=\033&l4G pcl_stacker2=\033&l5G pcl_stacker3=\033&l6G pcl_stacker4=\033&l7G pcl_stacker5=\033&l8G pcl_stacker6=\033&l9G pcl_stacker7=\033&l10G pcl_stacker8=\033&l11G pcl_user_opts += [ lf_stacker stacker1 stacker2 stacker3 stacker4 stacker5 stacker6 stacker7 stacker8 ] # now for the PostScript ps_outputbin=[ \%s{outputbin} ] # *OutputBin Upper/Top Bin: "<> setpagedevice" ps_outupper=<> setpagedevice ps_topbin=[ outupper ] ps_leftbin= currentpagedevice /OutputAttributes get 4 known {<> setpagedevice} {<> setpagedevice} ifelse ps_outleft=[ leftbin ] ps_outlower=[ leftbin ] # *OutputBin Stacker/Stacker: "<> setpagedevice" ps_lf_stacker= <> setpagedevice # *OutputBin Stapler2/Stapler (max 50 Sheets): " # userdict /HPStapleOption known {<> >> # setpagedevice}{<> >> setpagedevice} ifelse" # *End # *OutputBin Stapler2Opposing/Stapler Opposing (max 50): " # userdict /HPStapleOption known {<> >> # setpagedevice}{<> >> setpagedevice} ifelse" # *End # *OutputBin Stapler/Stapler (max 20 Letter or A4): "<> setpagedevice" ps_stapler= <> setpagedevice # *OutputBin Collator/Collator: "<> setpagedevice" # *OutputBin Separator/Job Separator: "<> setpagedevice" # *OutputBin OutputBin1/Bin 1: "<> setpagedevice" # *OutputBin OutputBin2/Bin 2: "<> setpagedevice" # *OutputBin OutputBin3/Bin 3: "<> setpagedevice" # *OutputBin OutputBin4/Bin 4: "<> setpagedevice" # *OutputBin OutputBin5/Bin 5: "<> setpagedevice" # *OutputBin OutputBin6/Bin 6: "<> setpagedevice" # *OutputBin OutputBin7/Bin 7: "<> setpagedevice" # *OutputBin OutputBin8/Bin 8: "<> setpagedevice" ps_stacker1 = <> setpagedevice ps_stacker2 = <> setpagedevice ps_stacker3 = <> setpagedevice ps_stacker4 = <> setpagedevice ps_stacker5 = <> setpagedevice ps_stacker6 = <> setpagedevice ps_stacker7 = <> setpagedevice ps_stacker8 = <> setpagedevice collate=true ps_collate=<> setpagedevice # smoothing: ( true | false ) smoothing=true ps_smoothing= << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 2 /Type 8 >> >> setpagedevice ps_nosmoothing= << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 0 /Type 8 >> >> setpagedevice # # Paper size selection ... # ps_letter=<> setpagedevice ps_executive= <> setpagedevice ps_legal= <> setpagedevice ps_ledger= <> setpagedevice ps_a3= <> setpagedevice ps_a4= <> setpagedevice ps_a5= <> setpagedevice # # source ... # ps_inupper=<> setpagedevice ps_intray1=[ inupper ] ps_manual=<> setpagedevice ps_manualfeed=[ manual ] ps_inmiddle=<> setpagedevice ps_intray2=[ inmiddle ] ps_inlower=<> setpagedevice ps_intray3=[ inlower ] ps_inlargecapacity=<> setpagedevice ps_inlarge=[ inlargecapacity ] ps_intray4=[ inlargecapacity ] ps_intray5=<> setpagedevice ps_bond= <> setpagedevice ps_cardstock= <> setpagedevice ps_color= <> setpagedevice ps_envelope= <> setpagedevice ps_labels= <> setpagedevice ps_letterhead= <> setpagedevice ps_plain=<> setpagedevice ps_preprinted= <> setpagedevice ps_prepunched= <> setpagedevice ps_recycled= <> setpagedevice ps_rough= <> setpagedevice ps_transparency=<> setpagedevice ps_halftone=[ \%s{halftone} ] ps_enhanced= << /Install { currentpagedevice /HWResolution get dup 0 get 600 eq exch 1 get 600 eq and { /EnhancedColorRendering600 } { /EnhancedColorRendering } ifelse /ColorRendering findresource setcolorrendering /EnhancedHalftone /Halftone findresource sethalftone { } settransfer false setstrokeadjust } >> setpagedevice currentpagedevice /HWResolution get dup 0 get 600 eq exch 1 get 600 eq and { << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 0 /Type 8 >> >> setpagedevice } if /setscreen { pop pop pop } def /setcolorscreen { pop pop pop pop pop pop pop pop pop pop pop pop } def /sethalftone { pop } def ps_standard= << /Install { currentpagedevice /HWResolution get dup 0 get 600 eq exch 1 get 600 eq and dup currentpagedevice /PostRenderingEnhance get currentpagedevice /PostRenderingEnhanceDetails get /REValue get 0 ne and { {/DefaultColorRenderingRE600} {/DefaultColorRenderingRE} ifelse} { {/DefaultColorRendering600} {/DefaultColorRendering} ifelse} ifelse /ColorRendering findresource setcolorrendering { /DefaultHalftone600 } {/DefaultHalftone} ifelse /Halftone findresource sethalftone {} settransfer false setstrokeadjust } >> setpagedevice currentpagedevice /HWResolution get dup 0 get 600 eq exch 1 get 600 eq and { << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 0 /Type 8 >> >> setpagedevice } if # # Duplex control .. # ps_duplex=<> setpagedevice ps_lduplex=[ duplex ] ps_sduplex=<> setpagedevice ps_duplexshort=[ sduplex ] ps_simplex=<> setpagedevice ps_tumble=<> setpagedevice ps_shortedge=[ tumble ] ps_user_opts += [ collate enhanced halftone inlarge inlargecapacity inmiddle intray intray1 intray2 intray3 intray4 intray5 leftbin nosmoothing outleft outputbin pagesize paper papersize plain preprinted smoothing source standard topbin bond cardstock color envelope labels letterhead plain preprinted prepunched recycled rough transparency stapler lf_stacker stacker1 stacker2 stacker3 stacker4 stacker5 stacker6 stacker7 stacker8 ] #!End of [ hp8000 ] # same feature set as the HP 4000 # but no outbins, no media selection # PRINTER hp2100 - HP LaserJet 2100 Series [ hp2100 ] ## pcl paper source selection ## use -Zsource=n ## 0 - current, 1 - tray 2 (first cassette), 2 - manual ## 3 - ???? ## 4 - tray 1 (Multipurpose), 5 - tray 3 (second cassete) pcl_intray1=\033&l4H pcl_intray2=\033&l1H pcl_intray3=\033&l5H pcl_user_opts += [ intray1 intray2 intray3 ] # minimalist low end laserjet printer # like HP4MP, but has some tray selection # PRINTER hp2200 - HP LaserJet 2200 Series [ hp2200 ] pjl_vars_set += [ LANG=ENGLISH!ENUMERATED;ENGLISH,FRENCH,GERMAN,ITALIAN,SPANISH,SWEDISH,DANISH,NORWEGIAN,DUTCH,FINNISH,PORTUGUESE,TURKISH,POLISH,RUSSIAN,CZECH,HUNGARIAN COPIES=1!RANGE;1,999 DUPLEX=ENUMERATED;OFF,ON BINDING=ENUMERATED;LONGEDGE,SHORTEDGE PAPER=LETTER!ENUMERATED;LETTER,LEGAL,A4,EXECUTIVE,COM10,MONARCH,C5,DL,ISOB5,B5,CUSTOM,JISB5,JPOST,JPOSTD,A5,FOOLSCAP,ROC16K ORIENTATION=PORTRAIT!ENUMERATED;PORTRAIT,LANDSCAPE FORMLINES=60!RANGE;5,128 MANUALFEED=ENUMERATED;OFF,ON RET=ENUMERATED;OFF,ON PAGEPROTECT=ENUMERATED;AUTO,ON RESOLUTION=ENUMERATED;300,600,1200 PERSONALITY=AUTO!ENUMERATED;AUTO,PCL,POSTSCRIPT TIMEOUT=300!RANGE;5,300 MPTRAY=ENUMERATED;CASSETTE,FIRST INTRAY1=ENUMERATED;UNLOCKED,LOCKED INTRAY2=ENUMERATED;UNLOCKED,LOCKED INTRAY3=ENUMERATED;UNLOCKED,LOCKED AUTOCONT=ENUMERATED;OFF,ON DENSITY=RANGE;1,5 SCAN=RANGE;0,65535 QTY=1!RANGE;0,999 ECONOMODE=ENUMERATED;OFF,ON COURIER=ENUMERATED;REGULAR,DARK WIDEA4=ENUMERATED;NO,YES REPRINT=AUTO!ENUMERATED;OFF,ON,AUTO BITSPERPIXEL=ENUMERATED;1,2 TRAY1TEMP=ENUMERATED;HIGH,MEDIUM,LOW,HIGH2 TRAY2TEMP=ENUMERATED;HIGH,MEDIUM,LOW,HIGH2 TRAY3TEMP=ENUMERATED;HIGH,MEDIUM,LOW,HIGH2 TESTPAGE=ENUMERATED;SELFTEST,PCLTYPELIST,CONTSELFTEST,DEMOPAGE,PSTYPEFACELIST OUTLINEPOINTSIZE=RANGE;12,999 LPARM_PCL_FONTNUMBER=(LPARM:PCL+FONTNUMBER)RANGE;0,103 LPARM_PCL_PITCH=(LPARM:PCL+PITCH)RANGE;0.44,99.99 LPARM_PCL_PTSIZE=(LPARM:PCL+PTSIZE)RANGE;4.00,999.75 LPARM_PCL_SYMSET=(LPARM:PCL+SYMSET)ENUMERATED;PC8,ROMAN8,ISOL1,ISOL2,ISOL5,ISOL6,PC775,PC8DN,PC850,PC852,PC8TK,PC1004,WINL1,WINL2,WINL5,WINBALT,DESKTOP,PSTEXT,LEGAL,ISO4,ISO6,ISO11,ISO15,ISO17,ISO21,ISO60,ISO69,WIN30,MCTEXT,PC866CYR,PC866UKR,WINCYR,ISOCYR,PC8GRK,PC851GRK,WINGRK,ISOGRK,GREEK8,PC862HEB,ISOHEB,HEBREW7,HEBREW8,PC864ARA,ARABIC8,HPWARA LPARM_PCL_LINETERMINATION=(LPARM:PCL+LINETERMINATION)ENUMERATED;0,1,2,3 LPARM_POSTSCRIPT_PRTPSERRS=(LPARM:POSTSCRIPT+PRTPSERRS)ENUMERATED;OFF,ON ] pjl_user_opts += [ LANG COPIES DUPLEX BINDING PAPER ORIENTATION FORMLINES MANUALFEED RET PAGEPROTECT RESOLUTION PERSONALITY TIMEOUT MPTRAY INTRAY1 INTRAY2 INTRAY3 AUTOCONT DENSITY SCAN QTY ECONOMODE COURIER WIDEA4 REPRINT BITSPERPIXEL TRAY1TEMP TRAY2TEMP TRAY3TEMP TESTPAGE OUTLINEPOINTSIZE LPARM_PCL_FONTNUMBER LPARM_PCL_PITCH LPARM_PCL_PTSIZE LPARM_PCL_SYMSET LPARM_PCL_LINETERMINATION LPARM_POSTSCRIPT_PRTPSERRS ] ## paper source selection ## use -Zsource=n ## 1 - upper, 2 - manual paper, 3 - manual envelope ## 4 - manual, 5 - lower ## 6 - lower pcl_inupper=\033&l1H pcl_inlower=\033&l5H pcl_manual=\033&l2H # # Hewlett Packard 4050 Series # # Model number: C4253A (LaserJet 4050N) # # Printer short description: Letter/Legal/A4, PostScript Level3 # 300/600/1200 # # Input taken from # HP4050_6.ppd # # Author: Wilfried.Gaensheimer@infineon.com # wig20000124 # # Status: untested # # Open Issues: # # Implemented commands: # # PJL: # # paper: A4,Letter,Legal # resolution: 300/300dpi | 600/600dpi | 1200/1200dpi # fastres # bitsperpixel: ( 2 | 1 ) # economode: ( ON | OFF ) # retention: ( on | off ) | quickcopy private proof store # # Postscript: # # collate: ( true | false ) # smoothing: ( true | false ) smoothingon smoothingoff # pagesize/papersize/paper: # letter | executive | legal | a4 | a5 | # b5 | w612h935 | w558h774 | # env10 | envmonarch | envdl | envc5 | envb5 # oneup oneupl twoup twoupl fourup fourupl sixup sixupl # nineup nineupl sixteenup sixteenupl # Watermarks: # wmtext wmfont wmsize wmangle # wmtextstylenarrow wmtextstylemedium wmtextstylewide wmtextstylehalo # wmallpages wmfirstpage # tray|source: upper/tray1 | manualfeed/manual | middle/tray2 # lower/tray3 | large/largecapacity/tray4 # tray5 | tray6 | tray7 | tray8 | tray9 | tray10 | envelope # media type: plain | transparency | preprinted # media type: # plain | preprinted | letterhead | transparancy | prepunched | # labels | bond | recycled | mediacolor(*) | cardstock | rough # (*) color in PPD # promptuser # nearestsizeadjust # nearestsizenoadjust # policyletter # policya4 # scalepatterns # halftone: halftoneenhanced | halfetonestandard # duplex | sduplex/duplexshort/duplexshortedge | simplex | shortedge/tumble # PRINTER % - HP 4050 Series Printers [ hp4050 ] pjl_only=[ COMMENT DEFAULT DINQUIRE ECHO ENTER EOJ FSAPPEND FSDIRLIST FSQUERY FSUPLOAD FSDELETE FSDOWNLOAD FSINIT FSMKDIR INFO INITIALIZE INQUIRE JOB OPMSG PJL RDYMSG RESET SET STMSG USTATUS USTATUSOFF COPIES ] # use the HP4000 PCL - it is identical tc=hp4000_pcl # You can set retention to ON or OFF ... quickcopy, private and store are # predefined ... retention=OFF pjl_retention=[ hold=\%s{retention} ] #ExtractedKey: JCLRetention JCLRetentionQuickCopy/Quick Copy pjl_quickcopy=[ hold=on ] #ExtractedKey: JCLRetention JCLRetentionProof/Proof and Hold pjl_proof=[ hold=proof ] #ExtractedKey: JCLRetention JCLRetentionPrivate/Private Job pjl_private= [ hold=on holdtype=private ] #ExtractedKey: JCLRetention JCLRetentionStore/Stored Job pjl_store=[ hold=store ] #ExtractedKey: JCLFastRes True/On pjl_fastres=[ bitsperpixel=2 ] #ExtractedKey: JCLFastRes False/Off pjl_fastresoff=[ bitsperpixel=1 ] # Set economode economode=ON pjl_economode=[ economode=\%s{economode} ] #ExtractedKey: JCLEconomode False/Highest Quality pjl_economodeoff=[ economode=off ] #ExtractedKey: JCLEconomode True/Save Toner #pjl_economode=[ economode=on ] pjl_user_opts += [ retention quickcopy proof private store fastres bitsperpixel economode economodeoff fastresoff ] pjl_vars_set += [ bitsperpixel ] ### PostScript #ExtractedKey: HPNup OneUp/1 (Portrait) ps_oneup= % Copyright (c) Hewlett-Packard Co 1997 userdict begin true setglobal /HPwm 5 dict dup begin /HPwmOn true def /HPwmOdd true def end def false setglobal userdict /HPwmAngle known not {/HPwmAngle 45 def} if userdict /HPwmSize known not {/HPwmSize 48 def} if userdict /HPwmLocation known not {/HPwmLocation true def} if userdict /HPwmStyle known not {/HPwmStyle .48 def} if userdict /HPwmDuplex known not {/HPwmDuplex 0 def} if /HPwmEOP {HPwmDuplex 0 eq {true}{HPwmDuplex 1 eq HPwmOdd eq dup not {erasepage}if true setglobal /HPwmOdd HPwmOdd not def false setglobal}ifelse} bind def end << /EndPage {userdict begin userdict /HPwmText known HPwm /HPwmOn get and {initmatrix 0 setgray 1 setlinewidth true setstrokeadjust 0 setlinejoin 0 setlinecap [] 0 setdash currentpagedevice /PageSize get aload pop 2 div exch 2 div exch translate HPwmAngle rotate /HPwmFont userdict /HPppScale known {HPwmSize HPppScale mul}{HPwmSize}ifelse selectfont HPwmText stringwidth 2 div neg exch 2 div neg exch userdict /HPppScale known {HPwmSize HPppScale mul}{HPwmSize}ifelse .25 mul sub moveto HPwmText false charpath userdict /HPwmStyle1 known {gsave 1 setgray HPwmStyle1 HPwmStyle add setlinewidth stroke grestore} if 0 setgray HPwmStyle setlinewidth stroke HPwmLocation not {true setglobal HPwm /HPwmOn false put false setglobal} if } if 2 eq {pop false}{pop HPwm begin HPwmEOP end} ifelse end } bind >> setpagedevice #ExtractedKey: HPNup OneUpL/1 (Landscape) ps_oneupl= % Copyright (c) Hewlett-Packard Co 1997 userdict begin true setglobal /HPwm 5 dict dup begin /HPwmOn true def /HPwmOdd true def end def false setglobal userdict /HPwmAngle known not {/HPwmAngle 45 def} if userdict /HPwmSize known not {/HPwmSize 48 def} if userdict /HPwmLocation known not {/HPwmLocation true def} if userdict /HPwmStyle known not {/HPwmStyle .48 def} if userdict /HPwmDuplex known not {/HPwmDuplex 0 def} if /HPwmEOP {HPwmDuplex 0 eq {true}{HPwmDuplex 1 eq HPwmOdd eq dup not {erasepage}if true setglobal /HPwmOdd HPwmOdd not def false setglobal}ifelse} bind def end << /EndPage {userdict begin userdict /HPwmText known HPwm /HPwmOn get and {initmatrix 0 setgray 1 setlinewidth true setstrokeadjust 0 setlinejoin 0 setlinecap [] 0 setdash currentpagedevice /PageSize get aload pop 2 div exch 2 div exch translate HPwmAngle 90 add rotate /HPwmFont userdict /HPppScale known {HPwmSize HPppScale mul}{HPwmSize}ifelse selectfont HPwmText stringwidth 2 div neg exch 2 div neg exch userdict /HPppScale known {HPwmSize HPppScale mul}{HPwmSize}ifelse .25 mul sub moveto HPwmText false charpath userdict /HPwmStyle1 known {gsave 1 setgray HPwmStyle1 HPwmStyle add setlinewidth stroke grestore} if 0 setgray HPwmStyle setlinewidth stroke HPwmLocation not {true setglobal HPwm /HPwmOn false put false setglobal} if } if 2 eq {pop false}{pop HPwm begin HPwmEOP end} ifelse end } bind >> setpagedevice #ExtractedKey: HPNup TwoUp/2 (Portrait) ps_twoup= % Copyright (c) Hewlett-Packard Co 1997 userdict begin userdict /HPwmPgWidth known not {/HPwmPgWidth currentpagedevice /PageSize get aload pop /HPwmPgHeight exch def def} if /HPwmShWidth currentpagedevice /PageSize get aload pop /HPwmShHeight exch def def /HPwmCTM { /HPwmScale HPwmShWidth 32 sub HPwmPgHeight div dup HPwmShHeight 32 sub 2 div HPwmPgWidth div dup 3 1 roll lt {pop} {exch pop} ifelse def /HPwmX1 HPwmShWidth HPwmPgHeight HPwmScale mul sub 2 div HPwmPgHeight HPwmScale mul add def /HPwmY1 HPwmShHeight HPwmPgWidth HPwmScale mul 2 mul sub 2 div def /HPwmY2 HPwmPgWidth HPwmScale mul HPwmY1 add def } bind def HPwmCTM true setglobal /HPwm 5 dict dup begin /HPwmOn true def /HPwmOdd true def end def false setglobal /restore {/PageSV where {pop dup PageSV eq {restore HPwm begin HPwmMatrix setmatrix end}{restore}ifelse}{restore}ifelse} bind def userdict /HPwmAngle known not {/HPwmAngle 45 def} if userdict /HPwmSize known not {/HPwmSize 48 def} if userdict /HPwmLocation known not {/HPwmLocation true def} if userdict /HPwmStyle known not {/HPwmStyle .48 def} if userdict /HPwmDuplex known not {/HPwmDuplex 0 def} if /HPwmEOP {HPwmDuplex 0 eq {true}{HPwmDuplex 1 eq HPwmOdd eq dup not {erasepage}if true setglobal /HPwmOdd HPwmOdd not def false setglobal}ifelse} bind def /HPWaterMark { 0 setgray 1 setlinewidth true setstrokeadjust 0 setlinejoin 0 setlinecap [] 0 setdash 0 0 HPwmPgWidth HPwmPgHeight rectstroke userdict /HPwmText known HPwmOn and {HPwmPgWidth 2 div HPwmPgHeight 2 div translate HPwmAngle rotate /HPwmFont HPwmSize selectfont HPwmText stringwidth 2 div neg exch 2 div neg exch HPwmSize .25 mul sub moveto HPwmText false charpath userdict /HPwmStyle1 known {gsave 1 setgray HPwmStyle1 HPwmScale div HPwmStyle add setlinewidth stroke grestore} if 0 setgray HPwmStyle setlinewidth stroke HPwmLocation not {true setglobal HPwm /HPwmOn false put false setglobal} if } if } bind def end << /BeginPage {userdict begin 2 mod 0 eq { HPwmX1 HPwmY1 translate }{ HPwmX1 HPwmY2 translate } ifelse 90 rotate HPwmScale HPwmScale scale HPwm begin true setglobal /HPwmMatrix matrix currentmatrix def false setglobal end end } bind /EndPage {userdict begin HPwm begin HPwmMatrix setmatrix 2 eq {2 mod 0 ne {HPwmEOP}{false}ifelse}{HPWaterMark 2 mod 1 eq {HPwmEOP}{false}ifelse} ifelse end end } bind >> setpagedevice /setpagedevice {userdict begin dup /PageSize known {/HPwmPgWidth exch /PageSize get aload pop /HPwmPgHeight exch def def HPwmCTM <> userdict /HPwmSPD known {HPwmSPD}{setpagedevice} ifelse}if end} bind def #ExtractedKey: HPNup TwoUpL/2 (Landscape) ps_twoupl= % Copyright (c) Hewlett-Packard Co 1997 userdict begin userdict /HPwmPgWidth known not {/HPwmPgWidth currentpagedevice /PageSize get aload pop /HPwmPgHeight exch def def} if /HPwmShWidth currentpagedevice /PageSize get aload pop /HPwmShHeight exch def def /HPwmCTM { /HPwmScale HPwmShWidth 32 sub HPwmPgHeight div dup HPwmShHeight 32 sub 2 div HPwmPgWidth div dup 3 1 roll lt {pop} {exch pop} ifelse def /HPwmX1 HPwmShWidth HPwmPgHeight HPwmScale mul sub 2 div def /HPwmY1 HPwmShHeight HPwmPgWidth HPwmScale mul 2 mul sub 2 div HPwmShHeight exch sub def /HPwmY2 HPwmY1 HPwmPgWidth HPwmScale mul sub def } bind def HPwmCTM true setglobal /HPwm 5 dict dup begin /HPwmOn true def /HPwmOdd true def end def false setglobal /restore {/PageSV where {pop dup PageSV eq {restore HPwm begin HPwmMatrix setmatrix end}{restore}ifelse}{restore}ifelse} bind def userdict /HPwmAngle known not {/HPwmAngle 45 def} if userdict /HPwmSize known not {/HPwmSize 48 def} if userdict /HPwmLocation known not {/HPwmLocation true def} if userdict /HPwmStyle known not {/HPwmStyle .48 def} if userdict /HPwmDuplex known not {/HPwmDuplex 0 def} if /HPwmEOP {HPwmDuplex 0 eq {true}{HPwmDuplex 1 eq HPwmOdd eq dup not {erasepage}if true setglobal /HPwmOdd HPwmOdd not def false setglobal}ifelse} bind def /HPWaterMark { 0 setgray 1 setlinewidth true setstrokeadjust 0 setlinejoin 0 setlinecap [] 0 setdash 0 0 HPwmPgWidth HPwmPgHeight rectstroke userdict /HPwmText known HPwmOn and {HPwmPgWidth 2 div HPwmPgHeight 2 div translate HPwmAngle 90 add rotate /HPwmFont HPwmSize selectfont HPwmText stringwidth 2 div neg exch 2 div neg exch HPwmSize .25 mul sub moveto HPwmText false charpath userdict /HPwmStyle1 known {gsave 1 setgray HPwmStyle1 HPwmScale div HPwmStyle add setlinewidth stroke grestore} if 0 setgray HPwmStyle setlinewidth stroke HPwmLocation not {true setglobal HPwm /HPwmOn false put false setglobal} if } if } bind def end << /BeginPage {userdict begin 2 mod 0 eq { HPwmX1 HPwmY1 translate }{ HPwmX1 HPwmY2 translate } ifelse -90 rotate HPwmScale HPwmScale scale HPwm begin true setglobal /HPwmMatrix matrix currentmatrix def false setglobal end end } bind /EndPage {userdict begin HPwm begin HPwmMatrix setmatrix 2 eq {2 mod 0 ne {HPwmEOP}{false}ifelse}{HPWaterMark 2 mod 1 eq {HPwmEOP}{false}ifelse} ifelse end end } bind >> setpagedevice /setpagedevice {userdict begin dup /PageSize known {/HPwmPgWidth exch /PageSize get aload pop /HPwmPgHeight exch def def HPwmCTM <> userdict /HPwmSPD known {HPwmSPD}{setpagedevice} ifelse}if end} bind def #ExtractedKey: HPNup FourUp/4 (Portrait) ps_fourup= % Copyright (c) Hewlett-Packard Co 1997 userdict begin userdict /HPwmPgWidth known not {/HPwmPgWidth currentpagedevice /PageSize get aload pop /HPwmPgHeight exch def def} if /HPwmShWidth currentpagedevice /PageSize get aload pop /HPwmShHeight exch def def /HPwmCTM { /HPwmScale HPwmShWidth 32 sub 2 div HPwmPgWidth div dup HPwmShHeight 32 sub 2 div HPwmPgHeight div dup 3 1 roll lt {pop} {exch pop} ifelse def /HPwmX1 HPwmShWidth HPwmPgWidth HPwmScale mul 2 mul sub 2 div def /HPwmX2 HPwmPgWidth HPwmScale mul HPwmX1 add def /HPwmY1 HPwmShHeight HPwmPgHeight HPwmScale mul 2 mul sub 2 div def /HPwmY2 HPwmPgHeight HPwmScale mul HPwmY1 add def } bind def HPwmCTM true setglobal /HPwm 5 dict dup begin /HPwmOn true def /HPwmOdd true def end def false setglobal /restore {/PageSV where {pop dup PageSV eq {restore HPwm begin HPwmMatrix setmatrix end}{restore}ifelse}{restore}ifelse} bind def userdict /HPwmAngle known not {/HPwmAngle 45 def} if userdict /HPwmSize known not {/HPwmSize 48 def} if userdict /HPwmLocation known not {/HPwmLocation true def} if userdict /HPwmStyle known not {/HPwmStyle .48 def} if userdict /HPwmDuplex known not {/HPwmDuplex 0 def} if /HPwmEOP {HPwmDuplex 0 eq {true}{HPwmDuplex 1 eq HPwmOdd eq dup not {erasepage}if true setglobal /HPwmOdd HPwmOdd not def false setglobal}ifelse} bind def /HPWaterMark { 0 setgray 1 setlinewidth true setstrokeadjust 0 setlinejoin 0 setlinecap [] 0 setdash 0 0 HPwmPgWidth HPwmPgHeight rectstroke userdict /HPwmText known HPwmOn and {HPwmPgWidth 2 div HPwmPgHeight 2 div translate HPwmAngle rotate /HPwmFont HPwmSize selectfont HPwmText stringwidth 2 div neg exch 2 div neg exch HPwmSize .25 mul sub moveto HPwmText false charpath userdict /HPwmStyle1 known {gsave 1 setgray HPwmStyle1 HPwmScale div HPwmStyle add setlinewidth stroke grestore} if 0 setgray HPwmStyle setlinewidth stroke HPwmLocation not {true setglobal HPwm /HPwmOn false put false setglobal} if } if } bind def end << /BeginPage {userdict begin 4 mod dup dup dup 0 eq {HPwmX1 HPwmY2 translate} if 1 eq {HPwmX2 HPwmY2 translate} if 2 eq {HPwmX1 HPwmY1 translate} if 3 eq {HPwmX2 HPwmY1 translate} if HPwmScale HPwmScale scale HPwm begin true setglobal /HPwmMatrix matrix currentmatrix def false setglobal end end } bind /EndPage {userdict begin HPwm begin HPwmMatrix setmatrix 2 eq {4 mod 0 ne {HPwmEOP}{false}ifelse}{HPWaterMark 4 mod 3 eq {HPwmEOP}{false}ifelse} ifelse end end } bind >> setpagedevice /setpagedevice {userdict begin dup /PageSize known {/HPwmPgWidth exch /PageSize get aload pop /HPwmPgHeight exch def def HPwmCTM <> userdict /HPwmSPD known {HPwmSPD}{setpagedevice} ifelse}if end} bind def #ExtractedKey: HPNup FourUpL/4 (Landscape) ps_fourupl= % Copyright (c) Hewlett-Packard Co 1997 userdict begin userdict /HPwmPgWidth known not {/HPwmPgWidth currentpagedevice /PageSize get aload pop /HPwmPgHeight exch def def} if /HPwmShWidth currentpagedevice /PageSize get aload pop /HPwmShHeight exch def def /HPwmCTM { /HPwmScale HPwmShWidth 32 sub 2 div HPwmPgWidth div dup HPwmShHeight 32 sub 2 div HPwmPgHeight div dup 3 1 roll lt {pop} {exch pop} ifelse def /HPwmX1 HPwmShWidth HPwmPgWidth HPwmScale mul 2 mul sub 2 div def /HPwmX2 HPwmPgWidth HPwmScale mul HPwmX1 add def /HPwmY1 HPwmShHeight HPwmPgHeight HPwmScale mul 2 mul sub 2 div def /HPwmY2 HPwmPgHeight HPwmScale mul HPwmY1 add def } bind def HPwmCTM true setglobal /HPwm 5 dict dup begin /HPwmOn true def /HPwmOdd true def end def false setglobal /restore {/PageSV where {pop dup PageSV eq {restore HPwm begin HPwmMatrix setmatrix end}{restore}ifelse}{restore}ifelse} bind def userdict /HPwmAngle known not {/HPwmAngle 45 def} if userdict /HPwmSize known not {/HPwmSize 48 def} if userdict /HPwmLocation known not {/HPwmLocation true def} if userdict /HPwmStyle known not {/HPwmStyle .48 def} if userdict /HPwmDuplex known not {/HPwmDuplex 0 def} if /HPwmEOP {HPwmDuplex 0 eq {true}{HPwmDuplex 1 eq HPwmOdd eq dup not {erasepage}if true setglobal /HPwmOdd HPwmOdd not def false setglobal}ifelse} bind def /HPWaterMark { 0 setgray 1 setlinewidth true setstrokeadjust 0 setlinejoin 0 setlinecap [] 0 setdash 0 0 HPwmPgWidth HPwmPgHeight rectstroke userdict /HPwmText known HPwmOn and {HPwmPgWidth 2 div HPwmPgHeight 2 div translate HPwmAngle 90 add rotate /HPwmFont HPwmSize selectfont HPwmText stringwidth 2 div neg exch 2 div neg exch HPwmSize .25 mul sub moveto HPwmText false charpath userdict /HPwmStyle1 known {gsave 1 setgray HPwmStyle1 HPwmScale div HPwmStyle add setlinewidth stroke grestore} if 0 setgray HPwmStyle setlinewidth stroke HPwmLocation not {true setglobal HPwm /HPwmOn false put false setglobal} if } if } bind def end << /BeginPage {userdict begin 4 mod dup dup dup 0 eq {HPwmX1 HPwmY1 translate} if 1 eq {HPwmX1 HPwmY2 translate} if 2 eq {HPwmX2 HPwmY1 translate} if 3 eq {HPwmX2 HPwmY2 translate} if HPwmScale HPwmScale scale HPwm begin true setglobal /HPwmMatrix matrix currentmatrix def false setglobal end end } bind /EndPage {userdict begin HPwm begin HPwmMatrix setmatrix 2 eq {4 mod 0 ne {HPwmEOP}{false}ifelse}{HPWaterMark 4 mod 3 eq {HPwmEOP}{false}ifelse} ifelse end end } bind >> setpagedevice /setpagedevice {userdict begin dup /PageSize known {/HPwmPgWidth exch /PageSize get aload pop /HPwmPgHeight exch def def HPwmCTM <> userdict /HPwmSPD known {HPwmSPD}{setpagedevice} ifelse}if end} bind def #ExtractedKey: HPNup SixUp/6 (Portrait) ps_sixup= % Copyright (c) Hewlett-Packard Co 1997 userdict begin userdict /HPwmPgWidth known not {/HPwmPgWidth currentpagedevice /PageSize get aload pop /HPwmPgHeight exch def def} if /HPwmShWidth currentpagedevice /PageSize get aload pop /HPwmShHeight exch def def /HPwmCTM { /HPwmScale HPwmShWidth 32 sub 2 div HPwmPgHeight div dup HPwmShHeight 32 sub 3 div HPwmPgWidth div dup 3 1 roll lt {pop} {exch pop} ifelse def /HPwmX1 HPwmShWidth HPwmPgHeight HPwmScale mul 2 mul sub 2 div HPwmPgHeight HPwmScale mul add def /HPwmY1 HPwmShHeight HPwmPgWidth HPwmScale mul 3 mul sub 2 div def } bind def HPwmCTM true setglobal /HPwm 5 dict dup begin /HPwmOn true def /HPwmOdd true def end def false setglobal /restore {/PageSV where {pop dup PageSV eq {restore HPwm begin HPwmMatrix setmatrix end}{restore}ifelse}{restore}ifelse} bind def userdict /HPwmAngle known not {/HPwmAngle 45 def} if userdict /HPwmSize known not {/HPwmSize 48 def} if userdict /HPwmLocation known not {/HPwmLocation true def} if userdict /HPwmStyle known not {/HPwmStyle .48 def} if userdict /HPwmDuplex known not {/HPwmDuplex 0 def} if /HPwmEOP {HPwmDuplex 0 eq {true}{HPwmDuplex 1 eq HPwmOdd eq dup not {erasepage}if true setglobal /HPwmOdd HPwmOdd not def false setglobal}ifelse} bind def /HPWaterMark { 0 setgray 1 setlinewidth true setstrokeadjust 0 setlinejoin 0 setlinecap [] 0 setdash 0 0 HPwmPgWidth HPwmPgHeight rectstroke userdict /HPwmText known HPwmOn and {HPwmPgWidth 2 div HPwmPgHeight 2 div translate HPwmAngle rotate /HPwmFont HPwmSize selectfont HPwmText stringwidth 2 div neg exch 2 div neg exch HPwmSize .25 mul sub moveto HPwmText false charpath userdict /HPwmStyle1 known {gsave 1 setgray HPwmStyle1 HPwmScale div HPwmStyle add setlinewidth stroke grestore} if 0 setgray HPwmStyle setlinewidth stroke HPwmLocation not {true setglobal HPwm /HPwmOn false put false setglobal} if } if } bind def end << /BeginPage {userdict begin 6 mod dup 3 idiv HPwmPgHeight HPwmScale mul mul HPwmX1 add exch dup 3 idiv 3 mul sub HPwmPgWidth HPwmScale mul mul HPwmY1 add translate 90 rotate HPwmScale HPwmScale scale HPwm begin true setglobal /HPwmMatrix matrix currentmatrix def false setglobal end end } bind /EndPage {userdict begin HPwm begin HPwmMatrix setmatrix 2 eq {6 mod 0 ne {HPwmEOP}{false}ifelse}{HPWaterMark 6 mod 5 eq {HPwmEOP}{false}ifelse} ifelse end end } bind >> setpagedevice /setpagedevice {userdict begin dup /PageSize known {/HPwmPgWidth exch /PageSize get aload pop /HPwmPgHeight exch def def HPwmCTM <> userdict /HPwmSPD known {HPwmSPD}{setpagedevice} ifelse}if end} bind def #ExtractedKey: HPNup SixUpL/6 (Landscape) ps_sixupl= % Copyright (c) Hewlett-Packard Co 1997 userdict begin userdict /HPwmPgWidth known not {/HPwmPgWidth currentpagedevice /PageSize get aload pop /HPwmPgHeight exch def def} if /HPwmShWidth currentpagedevice /PageSize get aload pop /HPwmShHeight exch def def /HPwmCTM { /HPwmScale HPwmShWidth 32 sub 2 div HPwmPgHeight div dup HPwmShHeight 32 sub 3 div HPwmPgWidth div dup 3 1 roll lt {pop} {exch pop} ifelse def /HPwmX1 HPwmShWidth HPwmPgHeight HPwmScale mul 2 mul sub 2 div def /HPwmY1 HPwmShHeight HPwmPgWidth HPwmScale mul 3 mul sub 2 div HPwmPgWidth HPwmScale mul add def } bind def HPwmCTM true setglobal /HPwm 5 dict dup begin /HPwmOn true def /HPwmOdd true def end def false setglobal /restore {/PageSV where {pop dup PageSV eq {restore HPwm begin HPwmMatrix setmatrix end}{restore}ifelse}{restore}ifelse} bind def userdict /HPwmAngle known not {/HPwmAngle 45 def} if userdict /HPwmSize known not {/HPwmSize 48 def} if userdict /HPwmLocation known not {/HPwmLocation true def} if userdict /HPwmStyle known not {/HPwmStyle .48 def} if userdict /HPwmDuplex known not {/HPwmDuplex 0 def} if /HPwmEOP {HPwmDuplex 0 eq {true}{HPwmDuplex 1 eq HPwmOdd eq dup not {erasepage}if true setglobal /HPwmOdd HPwmOdd not def false setglobal}ifelse} bind def /HPWaterMark { 0 setgray 1 setlinewidth true setstrokeadjust 0 setlinejoin 0 setlinecap [] 0 setdash 0 0 HPwmPgWidth HPwmPgHeight rectstroke userdict /HPwmText known HPwmOn and {HPwmPgWidth 2 div HPwmPgHeight 2 div translate HPwmAngle 90 add rotate /HPwmFont HPwmSize selectfont HPwmText stringwidth 2 div neg exch 2 div neg exch HPwmSize .25 mul sub moveto HPwmText false charpath userdict /HPwmStyle1 known {gsave 1 setgray HPwmStyle1 HPwmScale div HPwmStyle add setlinewidth stroke grestore} if 0 setgray HPwmStyle setlinewidth stroke HPwmLocation not {true setglobal HPwm /HPwmOn false put false setglobal} if } if } bind def end << /BeginPage {userdict begin 6 mod dup dup 2 idiv 2 mul sub HPwmPgHeight HPwmScale mul mul HPwmX1 add exch 2 idiv 2 exch sub HPwmPgWidth HPwmScale mul mul HPwmY1 add translate -90 rotate HPwmScale HPwmScale scale HPwm begin true setglobal /HPwmMatrix matrix currentmatrix def false setglobal end end } bind /EndPage {userdict begin HPwm begin HPwmMatrix setmatrix 2 eq {6 mod 0 ne {HPwmEOP}{false}ifelse}{HPWaterMark 6 mod 5 eq {HPwmEOP}{false}ifelse} ifelse end end } bind >> setpagedevice /setpagedevice {userdict begin dup /PageSize known {/HPwmPgWidth exch /PageSize get aload pop /HPwmPgHeight exch def def HPwmCTM <> userdict /HPwmSPD known {HPwmSPD}{setpagedevice} ifelse}if end} bind def #ExtractedKey: HPNup NineUp/9 (Portrait) ps_nineuo= % Copyright (c) Hewlett-Packard Co 1997 userdict begin userdict /HPwmPgWidth known not {/HPwmPgWidth currentpagedevice /PageSize get aload pop /HPwmPgHeight exch def def} if /HPwmShWidth currentpagedevice /PageSize get aload pop /HPwmShHeight exch def def /HPwmCTM { /HPwmScale HPwmShWidth 32 sub 3 div HPwmPgWidth div dup HPwmShHeight 32 sub 3 div HPwmPgHeight div dup 3 1 roll lt {pop} {exch pop} ifelse def /HPwmX1 HPwmShWidth HPwmPgWidth HPwmScale mul 3 mul sub 2 div def /HPwmY1 HPwmShHeight HPwmPgHeight HPwmScale mul 3 mul sub 2 div def } bind def HPwmCTM true setglobal /HPwm 5 dict dup begin /HPwmOn true def /HPwmOdd true def end def false setglobal /restore {/PageSV where {pop dup PageSV eq {restore HPwm begin HPwmMatrix setmatrix end}{restore}ifelse}{restore}ifelse} bind def userdict /HPwmAngle known not {/HPwmAngle 45 def} if userdict /HPwmSize known not {/HPwmSize 48 def} if userdict /HPwmLocation known not {/HPwmLocation true def} if userdict /HPwmStyle known not {/HPwmStyle .48 def} if userdict /HPwmDuplex known not {/HPwmDuplex 0 def} if /HPwmEOP {HPwmDuplex 0 eq {true}{HPwmDuplex 1 eq HPwmOdd eq dup not {erasepage}if true setglobal /HPwmOdd HPwmOdd not def false setglobal}ifelse} bind def /HPWaterMark { 0 setgray 1 setlinewidth true setstrokeadjust 0 setlinejoin 0 setlinecap [] 0 setdash 0 0 HPwmPgWidth HPwmPgHeight rectstroke userdict /HPwmText known HPwmOn and {HPwmPgWidth 2 div HPwmPgHeight 2 div translate HPwmAngle rotate /HPwmFont HPwmSize selectfont HPwmText stringwidth 2 div neg exch 2 div neg exch HPwmSize .25 mul sub moveto HPwmText false charpath userdict /HPwmStyle1 known {gsave 1 setgray HPwmStyle1 HPwmScale div HPwmStyle add setlinewidth stroke grestore} if 0 setgray HPwmStyle setlinewidth stroke HPwmLocation not {true setglobal HPwm /HPwmOn false put false setglobal} if } if } bind def end << /BeginPage {userdict begin 9 mod dup dup 3 idiv 3 mul sub HPwmPgWidth HPwmScale mul mul HPwmX1 add exch 3 idiv 2 exch sub HPwmPgHeight HPwmScale mul mul HPwmY1 add translate HPwmScale HPwmScale scale HPwm begin true setglobal /HPwmMatrix matrix currentmatrix def false setglobal end end } bind /EndPage {userdict begin HPwm begin HPwmMatrix setmatrix 2 eq {9 mod 0 ne {HPwmEOP}{false}ifelse}{HPWaterMark 9 mod 8 eq {HPwmEOP}{false}ifelse} ifelse end end } bind >> setpagedevice /setpagedevice {userdict begin dup /PageSize known {/HPwmPgWidth exch /PageSize get aload pop /HPwmPgHeight exch def def HPwmCTM <> userdict /HPwmSPD known {HPwmSPD}{setpagedevice} ifelse}if end} bind def #ExtractedKey: HPNup NineUpL/9 (Landscape) ps_nineupl= % Copyright (c) Hewlett-Packard Co 1997 userdict begin userdict /HPwmPgWidth known not {/HPwmPgWidth currentpagedevice /PageSize get aload pop /HPwmPgHeight exch def def} if /HPwmShWidth currentpagedevice /PageSize get aload pop /HPwmShHeight exch def def /HPwmCTM { /HPwmScale HPwmShWidth 32 sub 3 div HPwmPgWidth div dup HPwmShHeight 32 sub 3 div HPwmPgHeight div dup 3 1 roll lt {pop} {exch pop} ifelse def /HPwmX1 HPwmShWidth HPwmPgWidth HPwmScale mul 3 mul sub 2 div def /HPwmY1 HPwmShHeight HPwmPgHeight HPwmScale mul 3 mul sub 2 div def } bind def HPwmCTM true setglobal /HPwm 5 dict dup begin /HPwmOn true def /HPwmOdd true def end def false setglobal /restore {/PageSV where {pop dup PageSV eq {restore HPwm begin HPwmMatrix setmatrix end}{restore}ifelse}{restore}ifelse} bind def userdict /HPwmAngle known not {/HPwmAngle 45 def} if userdict /HPwmSize known not {/HPwmSize 48 def} if userdict /HPwmLocation known not {/HPwmLocation true def} if userdict /HPwmStyle known not {/HPwmStyle .48 def} if userdict /HPwmDuplex known not {/HPwmDuplex 0 def} if /HPwmEOP {HPwmDuplex 0 eq {true}{HPwmDuplex 1 eq HPwmOdd eq dup not {erasepage}if true setglobal /HPwmOdd HPwmOdd not def false setglobal}ifelse} bind def /HPWaterMark { 0 setgray 1 setlinewidth true setstrokeadjust 0 setlinejoin 0 setlinecap [] 0 setdash 0 0 HPwmPgWidth HPwmPgHeight rectstroke userdict /HPwmText known HPwmOn and {HPwmPgWidth 2 div HPwmPgHeight 2 div translate HPwmAngle 90 add rotate /HPwmFont HPwmSize selectfont HPwmText stringwidth 2 div neg exch 2 div neg exch HPwmSize .25 mul sub moveto HPwmText false charpath userdict /HPwmStyle1 known {gsave 1 setgray HPwmStyle1 HPwmScale div HPwmStyle add setlinewidth stroke grestore} if 0 setgray HPwmStyle setlinewidth stroke HPwmLocation not {true setglobal HPwm /HPwmOn false put false setglobal} if } if } bind def end << /BeginPage {userdict begin 9 mod dup 3 idiv HPwmPgWidth HPwmScale mul mul HPwmX1 add exch dup 3 idiv 3 mul sub HPwmPgHeight HPwmScale mul mul HPwmY1 add translate HPwmScale HPwmScale scale HPwm begin true setglobal /HPwmMatrix matrix currentmatrix def false setglobal end end } bind /EndPage {userdict begin HPwm begin HPwmMatrix setmatrix 2 eq {9 mod 0 ne {HPwmEOP}{false}ifelse}{HPWaterMark 9 mod 8 eq {HPwmEOP}{false}ifelse} ifelse end end } bind >> setpagedevice /setpagedevice {userdict begin dup /PageSize known {/HPwmPgWidth exch /PageSize get aload pop /HPwmPgHeight exch def def HPwmCTM <> userdict /HPwmSPD known {HPwmSPD}{setpagedevice} ifelse}if end} bind def #ExtractedKey: HPNup SixteenUp/16 (Portrait) ps_sixteenup= % Copyright (c) Hewlett-Packard Co 1997 userdict begin userdict /HPwmPgWidth known not {/HPwmPgWidth currentpagedevice /PageSize get aload pop /HPwmPgHeight exch def def} if /HPwmShWidth currentpagedevice /PageSize get aload pop /HPwmShHeight exch def def /HPwmCTM { /HPwmScale HPwmShWidth 32 sub 4 div HPwmPgWidth div dup HPwmShHeight 32 sub 4 div HPwmPgHeight div dup 3 1 roll lt {pop} {exch pop} ifelse def /HPwmX1 HPwmShWidth HPwmPgWidth HPwmScale mul 4 mul sub 2 div def /HPwmY1 HPwmShHeight HPwmPgHeight HPwmScale mul 4 mul sub 2 div def } bind def HPwmCTM true setglobal /HPwm 5 dict dup begin /HPwmOn true def /HPwmOdd true def end def false setglobal /restore {/PageSV where {pop dup PageSV eq {restore HPwm begin HPwmMatrix setmatrix end}{restore}ifelse}{restore}ifelse} bind def userdict /HPwmAngle known not {/HPwmAngle 45 def} if userdict /HPwmSize known not {/HPwmSize 48 def} if userdict /HPwmLocation known not {/HPwmLocation true def} if userdict /HPwmStyle known not {/HPwmStyle .48 def} if userdict /HPwmDuplex known not {/HPwmDuplex 0 def} if /HPwmEOP {HPwmDuplex 0 eq {true}{HPwmDuplex 1 eq HPwmOdd eq dup not {erasepage}if true setglobal /HPwmOdd HPwmOdd not def false setglobal}ifelse} bind def /HPWaterMark { 0 setgray 1 setlinewidth true setstrokeadjust 0 setlinejoin 0 setlinecap [] 0 setdash 0 0 HPwmPgWidth HPwmPgHeight rectstroke userdict /HPwmText known HPwmOn and {HPwmPgWidth 2 div HPwmPgHeight 2 div translate HPwmAngle rotate /HPwmFont HPwmSize selectfont HPwmText stringwidth 2 div neg exch 2 div neg exch HPwmSize .25 mul sub moveto HPwmText false charpath userdict /HPwmStyle1 known {gsave 1 setgray HPwmStyle1 HPwmScale div HPwmStyle add setlinewidth stroke grestore} if 0 setgray HPwmStyle setlinewidth stroke HPwmLocation not {true setglobal HPwm /HPwmOn false put false setglobal} if } if } bind def end << /BeginPage {userdict begin 16 mod dup dup 4 idiv 4 mul sub HPwmPgWidth HPwmScale mul mul HPwmX1 add exch 4 idiv 3 exch sub HPwmPgHeight HPwmScale mul mul HPwmY1 add translate HPwmScale HPwmScale scale HPwm begin true setglobal /HPwmMatrix matrix currentmatrix def false setglobal end end } bind /EndPage {userdict begin HPwm begin HPwmMatrix setmatrix 2 eq {16 mod 0 ne {HPwmEOP}{false}ifelse}{HPWaterMark 16 mod 15 eq {HPwmEOP}{false}ifelse} ifelse end end } bind >> setpagedevice /setpagedevice {userdict begin dup /PageSize known {/HPwmPgWidth exch /PageSize get aload pop /HPwmPgHeight exch def def HPwmCTM <> userdict /HPwmSPD known {HPwmSPD}{setpagedevice} ifelse}if end} bind def #ExtractedKey: HPNup SixteenUpL/16 (Landscape) ps_sixteenupl= % Copyright (c) Hewlett-Packard Co 1997 userdict begin userdict /HPwmPgWidth known not {/HPwmPgWidth currentpagedevice /PageSize get aload pop /HPwmPgHeight exch def def} if /HPwmShWidth currentpagedevice /PageSize get aload pop /HPwmShHeight exch def def /HPwmCTM { /HPwmScale HPwmShWidth 32 sub 4 div HPwmPgWidth div dup HPwmShHeight 32 sub 4 div HPwmPgHeight div dup 3 1 roll lt {pop} {exch pop} ifelse def /HPwmX1 HPwmShWidth HPwmPgWidth HPwmScale mul 4 mul sub 2 div def /HPwmY1 HPwmShHeight HPwmPgHeight HPwmScale mul 4 mul sub 2 div def } bind def HPwmCTM true setglobal /HPwm 5 dict dup begin /HPwmOn true def /HPwmOdd true def end def false setglobal /restore {/PageSV where {pop dup PageSV eq {restore HPwm begin HPwmMatrix setmatrix end}{restore}ifelse}{restore}ifelse} bind def userdict /HPwmAngle known not {/HPwmAngle 45 def} if userdict /HPwmSize known not {/HPwmSize 48 def} if userdict /HPwmLocation known not {/HPwmLocation true def} if userdict /HPwmStyle known not {/HPwmStyle .48 def} if userdict /HPwmDuplex known not {/HPwmDuplex 0 def} if /HPwmEOP {HPwmDuplex 0 eq {true}{HPwmDuplex 1 eq HPwmOdd eq dup not {erasepage}if true setglobal /HPwmOdd HPwmOdd not def false setglobal}ifelse} bind def /HPWaterMark { 0 setgray 1 setlinewidth true setstrokeadjust 0 setlinejoin 0 setlinecap [] 0 setdash 0 0 HPwmPgWidth HPwmPgHeight rectstroke userdict /HPwmText known HPwmOn and {HPwmPgWidth 2 div HPwmPgHeight 2 div translate HPwmAngle 90 add rotate /HPwmFont HPwmSize selectfont HPwmText stringwidth 2 div neg exch 2 div neg exch HPwmSize .25 mul sub moveto HPwmText false charpath userdict /HPwmStyle1 known {gsave 1 setgray HPwmStyle1 HPwmScale div HPwmStyle add setlinewidth stroke grestore} if 0 setgray HPwmStyle setlinewidth stroke HPwmLocation not {true setglobal HPwm /HPwmOn false put false setglobal} if } if } bind def end << /BeginPage {userdict begin 16 mod dup 4 idiv HPwmPgWidth HPwmScale mul mul HPwmX1 add exch dup 4 idiv 4 mul sub HPwmPgHeight HPwmScale mul mul HPwmY1 add translate HPwmScale HPwmScale scale HPwm begin true setglobal /HPwmMatrix matrix currentmatrix def false setglobal end end } bind /EndPage {userdict begin HPwm begin HPwmMatrix setmatrix 2 eq {16 mod 0 ne {HPwmEOP}{false}ifelse}{HPWaterMark 16 mod 15 eq {HPwmEOP}{false}ifelse} ifelse end end } bind >> setpagedevice /setpagedevice {userdict begin dup /PageSize known {/HPwmPgWidth exch /PageSize get aload pop /HPwmPgHeight exch def def HPwmCTM <> userdict /HPwmSPD known {HPwmSPD}{setpagedevice} ifelse}if end} bind def #ExtractedKey: HPwmText CompanyConfidential/Company Confidential #ExtractedKey: HPwmText CompanyProprietary/Company Proprietary #ExtractedKey: HPwmText CompanyPrivate/Company Private #ExtractedKey: HPwmText Confidential/Confidential #ExtractedKey: HPwmText Copy/Copy #ExtractedKey: HPwmText Copyright/Copyright #ExtractedKey: HPwmText Draft/Draft #ExtractedKey: HPwmText FileCopy/File Copy #ExtractedKey: HPwmText Final/Final #ExtractedKey: HPwmText ForInternalUse/For Internal Use Only #ExtractedKey: HPwmText Preliminary/Preliminary #ExtractedKey: HPwmText Proof/Proof #ExtractedKey: HPwmText ReviewCopy/Review Copy #ExtractedKey: HPwmText Sample/Sample #ExtractedKey: HPwmText TopSecret/Top Secret #ExtractedKey: HPwmText Urgent/Urgent wmtest=Company Confidential ps_wmtext= userdict /HPwmText (\%s{wmtest}) put #ExtractedKey: HPwmFont CourierB/Courier Bold #ExtractedKey: HPwmFont TimesB/Times Bold #ExtractedKey: HPwmFont HelveticaB/Helvetica Bold wmfont=Courier-Bold ps_wmfont= /\%s{wmfont} findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end /HPwmFont exch definefont pop #ExtractedKey: HPwmFontSize pt24/24 Points #ExtractedKey: HPwmFontSize pt30/30 Points #ExtractedKey: HPwmFontSize pt36/36 Points #ExtractedKey: HPwmFontSize pt42/42 Points #ExtractedKey: HPwmFontSize pt48/48 Points #ExtractedKey: HPwmFontSize pt54/54 Points #ExtractedKey: HPwmFontSize pt60/60 Points #ExtractedKey: HPwmFontSize pt66/66 Points #ExtractedKey: HPwmFontSize pt72/72 Points #ExtractedKey: HPwmFontSize pt78/78 Points #ExtractedKey: HPwmFontSize pt84/84 Points #ExtractedKey: HPwmFontSize pt90/90 Points wmsize=24 ps_wmsize= userdict /HPwmSize \%d{wmsize} put #ExtractedKey: HPwmTextAngle Deg90/90 Degrees #ExtractedKey: HPwmTextAngle Deg75/75 Degrees #ExtractedKey: HPwmTextAngle Deg60/60 Degrees #ExtractedKey: HPwmTextAngle Deg45/45 Degrees #ExtractedKey: HPwmTextAngle Deg30/30 Degrees #ExtractedKey: HPwmTextAngle Deg15/15 Degrees #ExtractedKey: HPwmTextAngle Deg0/0 Degrees #ExtractedKey: HPwmTextAngle DegN15/-15 Degrees #ExtractedKey: HPwmTextAngle DegN30/-30 Degrees #ExtractedKey: HPwmTextAngle DegN45/-45 Degrees #ExtractedKey: HPwmTextAngle DegN60/-60 Degrees #ExtractedKey: HPwmTextAngle DegN75/-75 Degrees #ExtractedKey: HPwmTextAngle DegN90/-90 Degrees wmangle=90 ps_wmangle= userdict /HPwmAngle \%d{wmangle} put #ExtractedKey: HPwmTextStyle Narrow/Narrow Outline ps_wmtextstylenarrow= userdict /HPwmStyle .24 put #ExtractedKey: HPwmTextStyle Medium/Medium Outline ps_wmtextstylemedium= userdict /HPwmStyle .48 put #ExtractedKey: HPwmTextStyle Wide/Wide Outline ps_wmtextstylewide= userdict /HPwmStyle .96 put #ExtractedKey: HPwmTextStyle Halo/Wide Halo Outline ps_wmtextstylehalo= userdict /HPwmStyle .96 put userdict /HPwmStyle1 .84 put #ExtractedKey: HPwmLocation True/All Pages ps_wmallpages= userdict /HPwmLocation true put #ExtractedKey: HPwmLocation False/First Page Only ps_wmfirstpage= userdict /HPwmLocation false put #ExtractedKey: HPCollate True/On (turn off in application) collate=true ps_collate=<> setpagedevice #ExtractedKey: HPCollate False/Off # ps_collateoff= <> setpagedevice #ExtractedKey: Smoothing True/On ps_smoothing=[ smoothingon ] ps_nosmoothing=[ smoothingoff ] ps_smoothingon= << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 2 /Type 8 >> >> setpagedevice #ExtractedKey: Smoothing False/Off ps_smoothingoff= << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 0 /Type 8 >> >> setpagedevice # # Paper size selection ... # #ExtractedKey: PageSize Letter/Letter ps_letter=<> setpagedevice #ExtractedKey: PageSize Executive/Executive ps_executive=<> setpagedevice #ExtractedKey: PageSize Legal/Legal ps_legal=<> setpagedevice #ExtractedKey: PageSize A4/A4 ps_a4=<> setpagedevice #ExtractedKey: PageSize A5/A5 ps_a5=<> setpagedevice #ExtractedKey: PageSize B5/B5 (JIS) ps_b5=<> setpagedevice #ExtractedKey: PageSize w612h935/Executive (JIS) ps_w612h935=<> setpagedevice #ExtractedKey: PageSize w558h774/16K ps_w558h774=<> setpagedevice #ExtractedKey: PageSize Env10/Envelope #10 ps_env10=<> setpagedevice #ExtractedKey: PageSize EnvMonarch/Envelope Monarch ps_envmonarch=<> setpagedevice #ExtractedKey: PageSize EnvDL/Envelope DL ps_envdl=<> setpagedevice #ExtractedKey: PageSize EnvC5/Envelope C5 ps_envc5=<> setpagedevice #ExtractedKey: PageSize EnvISOB5/Envelope B5 ps_envb5=<> setpagedevice # # source ... # #ExtractedKey: InputSlot Upper/ Tray 1 ps_inupper=[ intray1 ] ps_intray1=<> setpagedevice #ExtractedKey: InputSlot ManualFeed/ Tray 1 (Manual) ps_manualfeed=[ manual ] ps_manual=<> setpagedevice #ExtractedKey: InputSlot Middle/ Tray 2 ps_inmiddle=[ intray2 ] ps_intray2=<> setpagedevice #ExtractedKey: InputSlot Lower/ Tray 3 ps_inlower=[ intray3 ] ps_intray3=currentpagedevice /InputAttributes get 1 known {<> setpagedevice} {currentpagedevice /InputAttributes get 5 known {<> setpagedevice}if}ifelse #ExtractedKey: InputSlot LargeCapacity/ Tray 4 ps_inlarge=[ intray4 ] ps_inlargecapacity=[ intray4 ] ps_intray4=currentpagedevice /InputAttributes get 4 known {<> setpagedevice} {currentpagedevice /InputAttributes get 1 known {<> setpagedevice} {<> setpagedevice}ifelse}ifelse #ExtractedKey: InputSlot Tray5/ Tray 5 ps_intray5=currentpagedevice /InputAttributes get 1 known {<> setpagedevice} {<> setpagedevice}ifelse #ExtractedKey: InputSlot Tray6/ Tray 6 ps_intray6=currentpagedevice /InputAttributes get 1 known {<> setpagedevice} {<> setpagedevice}ifelse #ExtractedKey: InputSlot Tray7/ Tray 7 ps_intray7=currentpagedevice /InputAttributes get 1 known {<> setpagedevice} {<> setpagedevice}ifelse #ExtractedKey: InputSlot Tray8/ Tray 8 ps_intray8= currentpagedevice /InputAttributes get 1 known {<> setpagedevice} {<> setpagedevice}ifelse #ExtractedKey: InputSlot Tray9/ Tray 9 ps_intray9= currentpagedevice /InputAttributes get 1 known {<> setpagedevice} {<> setpagedevice}ifelse #ExtractedKey: InputSlot Tray10/ Tray 10 ps_intray10= currentpagedevice /InputAttributes get 1 known {<> setpagedevice} {<> setpagedevice}ifelse #ExtractedKey: InputSlot Envelope/ Envelope Feeder ps_envelope= <> setpagedevice # # Media type ... # #ExtractedKey: InputSlot Plain/Plain ps_plain=<> setpagedevice #ExtractedKey: InputSlot Preprinted/Preprinted ps_preprinted=<> setpagedevice #ExtractedKey: InputSlot Letterhead/Letterhead ps_letterhead=<> setpagedevice #ExtractedKey: InputSlot Transparency/Transparency ps_transparancy=<> setpagedevice #ExtractedKey: InputSlot Prepunched/Prepunched ps_prepunched=<> setpagedevice #ExtractedKey: InputSlot Labels/Labels ps_labels=<> setpagedevice #ExtractedKey: InputSlot Bond/Bond ps_bond=<> setpagedevice #ExtractedKey: InputSlot Recycled/Recycled ps_recycled=<> setpagedevice #ExtractedKey: InputSlot Color/Color ps_mediacolor=<> setpagedevice #ExtractedKey: InputSlot Cardstock/Card Stock ps_cardstock=<> setpagedevice #ExtractedKey: InputSlot Rough/Rough ps_rough=<> setpagedevice #ExtractedKey: HPPaperPolicy PromptUser/Prompt User ps_promptuser=<> setpagedevice #ExtractedKey: HPPaperPolicy NearestSizeAdjust/Nearest Size and Scale ps_nearestsizeadjust=<> >> setpagedevice #ExtractedKey: HPPaperPolicy NearestSizeNoAdjust/Nearest Size and Crop ps_nearestsizenoadjust=<> >> setpagedevice #ExtractedKey: HPPaperPolicy Letter/Letter ps_policyletter= userdict begin /HPppX1 0 def /HPppY1 0 def /HPppScale 1 def <> setpagedevice /HPwmSPD {setpagedevice} bind def /setpagedevice {userdict begin dup /PageSize known {/HPwmPgWidth exch /PageSize get aload pop /HPwmPgHeight exch def def /HPppScale 612 HPwmPgWidth div dup 792 HPwmPgHeight div dup 3 1 roll lt {pop} {exch pop} ifelse def HPppScale 1 gt {/HPppScale 1 def}if /HPppX1 612 HPwmPgWidth HPppScale mul sub 2 div def /HPppY1 792 HPwmPgHeight HPppScale mul sub 2 div def <> setpagedevice}{setpagedevice}ifelse end} bind def end #ExtractedKey: HPPaperPolicy A4/A4 ps_policya4= userdict begin /HPppX1 0 def /HPppY1 0 def /HPppScale 1 def <> setpagedevice /HPwmSPD {setpagedevice} bind def /setpagedevice {userdict begin dup /PageSize known {/HPwmPgWidth exch /PageSize get aload pop /HPwmPgHeight exch def def /HPppScale 595 HPwmPgWidth div dup 842 HPwmPgHeight div dup 3 1 roll lt {pop} {exch pop} ifelse def HPppScale 1 gt {/HPppScale 1 def}if /HPppX1 595 HPwmPgWidth HPppScale mul sub 2 div def /HPppY1 842 HPwmPgHeight HPppScale mul sub 2 div def <> setpagedevice}{setpagedevice}ifelse end} bind def end #ExtractedKey: HPScalePatterns Scale/On ps_scalepatterns= /GDIBWPatternDict 18 dict def /dtransform {GDIBWPatternDict /Width known {currentpagedevice /HWResolution get 0 get 150 div mul exch currentpagedevice /HWResolution get 0 get 150 div mul exch dtransform}{dtransform}ifelse} bind def #ExtractedKey: HPHalftone Enhanced/Enhanced ps_halftoneenhanced= << /Install { currentpagedevice /HWResolution get dup 0 get 600 eq exch 1 get 600 eq and { /EnhancedColorRendering600 } { /EnhancedColorRendering } ifelse /ColorRendering findresource setcolorrendering /EnhancedHalftone /Halftone findresource sethalftone { } settransfer false setstrokeadjust } >> setpagedevice currentpagedevice /HWResolution get dup 0 get 600 eq exch 1 get 600 eq and { << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 0 /Type 8 >> >> setpagedevice } if /setscreen { pop pop pop } def /setcolorscreen { pop pop pop pop pop pop pop pop pop pop pop pop } def /sethalftone { pop } def #ExtractedKey: HPHalftone Standard/Standard ps_halftonestandard= << /Install { currentpagedevice /HWResolution get dup 0 get 600 eq exch 1 get 600 eq and dup currentpagedevice /PostRenderingEnhance get currentpagedevice /PostRenderingEnhanceDetails get /REValue get 0 ne and { {/DefaultColorRenderingRE600} {/DefaultColorRenderingRE} ifelse} { {/DefaultColorRendering600} {/DefaultColorRendering} ifelse} ifelse /ColorRendering findresource setcolorrendering { /DefaultHalftone600 } {/DefaultHalftone} ifelse /Halftone findresource sethalftone {} settransfer false setstrokeadjust } >> setpagedevice currentpagedevice /HWResolution get dup 0 get 600 eq exch 1 get 600 eq and { << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 0 /Type 8 >> >> setpagedevice } if # # Duplex control .. # #ExtractedKey: Duplex DuplexNoTumble/Flip on Long Edge (Standard) ps_duplex=<> setpagedevice ps_lduplex=[ duplex ] #ExtractedKey: Duplex DuplexTumble/Flip on Short Edge ps_duplexshort=<> setpagedevice ps_sduplex=[ duplexshort ] ps_duplexshortedge=[ duplexshort ] #ExtractedKey: Duplex None/Off (1-Sided) ps_simplex=<> setpagedevice ps_tumble=<> setpagedevice ps_shortedge=[ tumble ] ps_user_opts += [ a4 a5 b5 bond cardstock collate duplex duplexshort duplexshortedge env10 envb5 envc5 envdl envelope envmonarch executive fourup fourupl halftoneenhanced halftonestandard inlarge inlargecapacity inlower inmiddle intray1 intray10 intray2 intray3 intray4 intray5 intray6 intray7 intray8 intray9 inupper labels lduplex legal letter letterhead manual manualfeed mediacolor nearestsizeadjust nearestsizenoadjust nineuo nineupl nosmoothing oneup oneupl plain policya4 policyletter preprinted prepunched promptuser recycled rough scalepatterns sduplex shortedge simplex sixteenup sixteenupl sixup sixupl smoothing smoothingoff smoothingon transparancy tumble twoup twoupl w558h774 w612h935 wmallpages wmangle wmfirstpage wmfont wmsize wmtext wmtextstylehalo wmtextstylemedium wmtextstylenarrow wmtextstylewide ] # #!End of [ hp4050 ] ## ## QMS Printers do not seem to return status or other information ## you may need to configure them to connect on port 35 ## printcap ## lp:ifhp=model=qms1725,dev=qms.printer.ip.addr%35 ## :lp=/dev/null ## :if=..../ifhp ## # PRINTER qms1725 - QMS 1725, uses appsocket, no status, PostScript only [ qms1725 ] appsocket # close_appsocket status@ pjl@ pcl@ ps text@ file_output_match = [ *postscript* ps *text* ps \%s{a2ps_converter} *pdf* filter \%s{pdf2ps_converter} *gzip_compressed* filter \%s{gzip_decompress} ] #*DefaultDuplex: None #*Duplex None: statusdict begin false setduplexmode false settumble end ps_simplex=statusdict begin false setduplexmode false settumble end #*Duplex DuplexNoTumble: statusdict begin true setduplexmode false settumble end ps_duplex=statusdict begin true setduplexmode false settumble end ps_lduplex=[ duplex ] #*Duplex DuplexTumble: statusdict begin true setduplexmode true settumble end ps_duplexshort=statusdict begin true setduplexmode true settumble end ps_sduplex=[ duplexshort ] ps_tumble=statusdict begin true settumble end ps_shortedge=[ tumble ] #*InputSlot Upper: statusdict begin 1 setpapertray end ps_inupper=statusdict begin 1 setpapertray end #*InputSlot Lower: statusdict begin 2 setpapertray end ps_inlower=statusdict begin 2 setpapertray end #*InputSlot Envelope: statusdict begin 3 setpapertray end ps_envelope=statusdict begin 3 setpapertray end ps_manual= 1 dict dup /ManualFeed true put setpagedevice #*OutputBin Upper: statusdict begin 1 setoutputray end #*OutputBin Back: statusdict begin 2 setoutputtray end ps_outupper= statusdict begin 1 setoutputray end ps_outlower= statusdict begin 2 setoutputtray end # QMS 2025 appears to be HP compatible # QMS 860 has same tray as QMS2025 # PRINTER % - QMS Laser Printer {/qms(.*)/QMS $1/}, appsocket, no status, PostScript and PCL [ qms2025 qms860 qms2060 ] appsocket # close_appsocket status@ pjl@ pcl ps text@ #*PageSize Letter: statusdict begin lettertray end ps_letter=statusdict begin lettertray end #*PageSize Legal: statusdict begin legaltray end ps_legal=statusdict begin legaltray end #*PageSize Tabloid: statusdict begin 11x17tray end ps_ledger=statusdict begin 11x17tray end #*PageSize Executive: statusdict begin executivetray end ps_executive=statusdict begin executivetray end #*PageSize A3: statusdict begin a3tray end ps_a3=statusdict begin a3tray end #*PageSize A4: statusdict begin a4tray end ps_a4=statusdict begin a4tray end #*PageSize A5: statusdict begin a5tray end ps_a5=statusdict begin a5tray end #*PageSize B4: statusdict begin b4tray end ps_b4=statusdict begin b4tray end #*PageSize B5: statusdict begin b5tray end ps_b5=statusdict begin b5tray end #*PageSize B6: statusdict begin b6tray end ps_b6=statusdict begin b6tray end ## Tektronix Color Printers ## uses 'appsocket' protcol ## TCP port 9100 ## receives job status ## ## printcap entry: ## lp:cm=Phaser ## :lp=/dev/null ## :ifhp=model=phaser,dev=10.0.0.1%9100 ## :if=@FILTER_DIR@/ifhp ## ## OR ## ## lp:cm=Phaser ## :lp=/dev/null ## :if=@FILTER_DIR@/ifhp -Tmodel=phaser,dev=10.0.0.1%9100 ## ## If you insist on banner pages or need powerful accounting ## and need an OF filter ## then add (respectively to the above examples): ## ## :of=@FILTER_DIR@/ifhp ## OR ## :of=@FILTER_DIR@/ifhp -Tmodel=phaser,dev=10.0.0.1%9100 ## # PRINTER % - Tektronics Generic Phaser Color Printer, appsocket, snmp monitoring, PostScript only [ phaser ] appsocket # close_appsocket pjl@ hpgl2 pcl ps sync=snmp waitend=snmp pagecount=snmp file_output_match = [ *postscript* ps *text* ps \%s{a2ps_converter} *pdf* filter \%s{pdf2ps_converter} *gzip_compressed* filter \%s{gzip_decompress} ] ps_pagecount_code=%! false 0 startjob pop (%%[ pagecount: )print statusdict /pagecount get exec ( )cvs print ( ]%% )= flush ps_inupper= product (Phaser 2) anchorsearch { pop pop 2 dict begin /InputAttributes 1 dict begin /Priority [0] def currentdict end def } { (Phaser 440) anchorsearch { pop pop 3 dict begin /MediaType (Upper Tray) def /MediaColor null def } { pop 4 dict begin /MediaPosition 0 def /MediaType null def /ManualFeed false def } ifelse } ifelse /TraySwitch false def currentdict end setpagedevice ps_transparency= mark { 4 dict begin /MediaPosition null def /MediaType (Transparency) def /TraySwitch true def /ManualFeed false def currentdict end setpagedevice } stopped cleartomark # PRINTER % - Tektronics Phaser {/phaser(.*)/$1/} Color Printer, appsocket, snmp monitoring, PostScript only [ phaser360 phaser740 phaser750 phaser850 ] # use the generic phaser definitions tc=phaser # The following is required for transparency selection on # the Phaser 360, Phaser 740, Phaser 750 and Phaser850: # These updates from: # kreiser@axp602.gsi.de (Helmut Kreiser, Linux + VMS Admin, # GSI Darmstadt, H.Kreiser@gsi.de, Tel.: +(49)(0)6159 71-(0)-2517) # Note: your local printer may not handle the 'permanent selection' # version. If so, then use the following and comment the others out. # Patrick Powell #ps_transparency= # << /MediaPosition null # /MediaClass (Transparency) # /TraySwitch true # /ManualFeed false # >> setpagedevice # #ps_transparency= # true 0 startjob not { /exitserver errordict/invalidaccess get # exec quit } if <> setpagedevice false # 0 startjob pop # << /MediaPosition null # /MediaClass (Transparency) # /TraySwitch true # /ManualFeed false # >> setpagedevice # #ps_simplex= # true 0 startjob not { /exitserver errordict/invalidaccess get # exec quit } if <> setpagedevice false # 0 startjob pop # <> setpagedevice # #ps_duplex= # true 0 startjob not { /exitserver errordict/invalidaccess get # exec quit } if <> setpagedevice false # 0 startjob pop # <> setpagedevice # The following is required for tray selection # with permanent selection # we could set the defaults so that we force the tray selection # ps_init += [ inlower simplex ] ps_inupper= % Wrap function with startjob to make the change persistent. % true 0 startjob not { /exitserver errordict /invalidaccess get exec quit } if /pt { product exch anchorsearch { pop pop true } { pop false } ifelse } bind def << (Phaser 350) pt (Phaser 380) pt or (Phaser 360) pt or { << /HWResolution /Default /OutputDevice findresource /HWResolution get dup length 1 sub get >> setpagedevice } { (Phaser 550) pt { /HWResolution [1200 600] /ProcessColorModel /DeviceCMYK } { (Phaser 540) pt { /HWResolution [600 600] } { /HWResolution [300 300] } ifelse /PostRenderingEnhance true /PostRenderingEnhanceDetails << /OutputMode (Enhanced) >> } ifelse } ifelse >> setpagedevice userdict /pt undef % false 0 startjob pop % Wrap function with startjob to make the change persistent. % This seems to check for some language level... % systemdict/languagelevel known{languagelevel 2 ge{true (0) startjob dup not % {/exitserver errordict/invalidaccess get exec}if}{false}ifelse}{false}ifelse % not {quit} if mark { product (Phaser 2) anchorsearch { pop pop 2 dict begin /InputAttributes 1 dict begin /Priority [0] def currentdict end def } { (Phaser 4) anchorsearch { pop pop 3 dict begin languagelevel 3 lt {/MediaType}{/MediaClass} ifelse (Upper Tray) def /MediaColor null def } { pop 4 dict begin /MediaPosition 0 def languagelevel 3 lt {/MediaType}{/MediaClass} ifelse null def /ManualFeed false def } ifelse } ifelse /TraySwitch false def currentdict end setpagedevice } stopped cleartomark % false (0) startjob pop # The following is required for paper selection # with permanent selection ps_inlower= % Wrap function with startjob to make the change persistent. % true 0 startjob not { /exitserver errordict /invalidaccess get exec quit } if /pt { product exch anchorsearch { pop pop true } { pop false } ifelse } bind def << (Phaser 350) pt (Phaser 380) pt or (Phaser 360) pt or { << /HWResolution /Default /OutputDevice findresource /HWResolution get dup length 1 sub get >> setpagedevice } { (Phaser 550) pt { /HWResolution [1200 600] /ProcessColorModel /DeviceCMYK } { (Phaser 540) pt { /HWResolution [600 600] } { /HWResolution [300 300] } ifelse /PostRenderingEnhance true /PostRenderingEnhanceDetails << /OutputMode (Enhanced) >> } ifelse } ifelse >> setpagedevice userdict /pt undef % false 0 startjob pop % Wrap function with startjob to make the change persistent. % systemdict/languagelevel known{languagelevel 2 ge{true (0) startjob dup not % {/exitserver errordict/invalidaccess get exec}if}{false}ifelse}{false}ifelse % not {quit} if /pt { product exch anchorsearch { pop pop true }{ pop false } ifelse } bind def mark { 4 dict begin (Phaser 2) pt { /InputAttributes 1 dict begin /Priority [1] def currentdict end def } { (Phaser 4) pt { languagelevel 3 lt {/MediaType}{/MediaClass} ifelse (Lower Tray) def /MediaColor null def } { (Phaser 5) pt {/MediaPosition 2 def } {/MediaPosition 1 def } ifelse languagelevel 3 lt {/MediaType}{/MediaClass} ifelse null def /ManualFeed false def } ifelse } ifelse /TraySwitch false def currentdict end setpagedevice } stopped cleartomark userdict /pt undef % false (0) startjob pop ps_transparency= % Wrap function with startjob to make the change persistent. % true 0 startjob not { /exitserver errordict/invalidaccess get exec quit } if /pt { product exch anchorsearch { pop pop true }{ pop false } ifelse } bind def << /MediaPosition (Phaser 8) pt { currentpagedevice /InputAttributes get dup 2 known { pop 1} { 1 known {1}{0} ifelse} ifelse } { 1} ifelse languagelevel 2 le {/MediaType}{/MediaClass} ifelse null /ManualFeed false /TraySwitch false >> setpagedevice % false 0 startjob pop % Wrap function with startjob to make the change persistent. % true 0 startjob not { /exitserver errordict/invalidaccess get exec quit } if /pt { product exch anchorsearch { pop pop true }{ pop false } ifelse } bind def << (Phaser 550) pt (Phaser 560) pt or (Phaser 740) pt or (Phaser 750) pt or { /HWResolution [1200 1200] /ProcessColorModel /DeviceCMYK (Phaser 560) pt (Phaser 740) pt or { /PostRenderingEnhance true /PostRenderingEnhanceDetails << /Type 5 /OutputMode (Standard) >> } if }{ (Phaser 780) pt { /HWResolution [600 600] /ProcessColorModel /DeviceCMYK /DeviceRenderingInfo currentpagedevice 1 index get 1 dict copy dup /ValuesPerColorComponent 16 put }{ /PostRenderingEnhance true /PostRenderingEnhanceDetails <> } ifelse } ifelse >> setpagedevice userdict /pt undef % false 0 startjob pop % % Wrap function with startjob to make the change persistent. % true 0 startjob not { /exitserver errordict/invalidaccess get exec quit } if <> setpagedevice % false 0 startjob pop # The following is required for paper simplex/duplex selection # with permanent selection ps_simplex= % Wrap function with startjob to make the change persistent. % true 0 startjob not { /exitserver errordict/invalidaccess get exec quit } if /pt { product exch anchorsearch { pop pop true }{ pop false } ifelse } bind def << /ManualFeed false /TraySwitch false (Phaser 2) pt { /InputAttributes <> }{ (Phaser 4) pt { /MediaType (Lower Tray) /MediaColor null }{ /MediaPosition (Phaser 8) pt { currentpagedevice /InputAttributes get dup 2 known { pop 2 }{ 1 known {1}{0} ifelse } ifelse }{ (Phaser 5) pt (Phaser 740) pt or (Phaser 750) pt or {2}{1} ifelse } ifelse languagelevel 2 le {/MediaType}{/MediaClass} ifelse null } ifelse } ifelse >> setpagedevice userdict /pt undef % false 0 startjob pop % Wrap function with startjob to make the change persistent. % true 0 startjob not { /exitserver errordict/invalidaccess get exec quit } if /pt { product exch anchorsearch { pop pop true }{ pop false } ifelse } bind def << (Phaser 550) pt (Phaser 560) pt or (Phaser 740) pt or (Phaser 750) pt or { /HWResolution [1200 1200] /ProcessColorModel /DeviceCMYK (Phaser 560) pt (Phaser 740) pt or { /PostRenderingEnhance true /PostRenderingEnhanceDetails << /Type 5 /OutputMode (Standard) >> } if }{ (Phaser 780) pt { /HWResolution [600 600] /ProcessColorModel /DeviceCMYK /DeviceRenderingInfo currentpagedevice 1 index get 1 dict copy dup /ValuesPerColorComponent 16 put }{ /PostRenderingEnhance true /PostRenderingEnhanceDetails <> } ifelse } ifelse >> setpagedevice userdict /pt undef % false 0 startjob pop % Wrap function with startjob to make the change persistent. % true 0 startjob not { /exitserver errordict/invalidaccess get exec quit } if <> setpagedevice % false 0 startjob pop ps_duplex= % Wrap function with startjob to make the change persistent. % true 0 startjob not { /exitserver errordict/invalidaccess get exec quit } if /pt { product exch anchorsearch { pop pop true }{ pop false } ifelse } bind def << /ManualFeed false /TraySwitch false (Phaser 2) pt { /InputAttributes <> }{ (Phaser 4) pt { /MediaType (Lower Tray) /MediaColor null }{ /MediaPosition (Phaser 8) pt { currentpagedevice /InputAttributes get dup 2 known { pop 2 }{ 1 known {1}{0} ifelse } ifelse }{ (Phaser 5) pt (Phaser 740) pt or (Phaser 750) pt or {2}{1} ifelse } ifelse languagelevel 2 le {/MediaType}{/MediaClass} ifelse null } ifelse } ifelse >> setpagedevice userdict /pt undef % false 0 startjob pop % Wrap function with startjob to make the change persistent. % true 0 startjob not { /exitserver errordict/invalidaccess get exec quit } if /pt { product exch anchorsearch { pop pop true }{ pop false } ifelse } bind def << (Phaser 550) pt (Phaser 560) pt or (Phaser 740) pt or (Phaser 750) pt or { /HWResolution [1200 1200] /ProcessColorModel /DeviceCMYK (Phaser 560) pt (Phaser 740) pt or { /PostRenderingEnhance true /PostRenderingEnhanceDetails << /Type 5 /OutputMode (Standard) >> } if }{ (Phaser 780) pt { /HWResolution [600 600] /ProcessColorModel /DeviceCMYK /DeviceRenderingInfo currentpagedevice 1 index get 1 dict copy dup /ValuesPerColorComponent 16 put }{ /PostRenderingEnhance true /PostRenderingEnhanceDetails <> } ifelse } ifelse >> setpagedevice userdict /pt undef % false 0 startjob pop % Wrap function with startjob to make the change persistent. % true 0 startjob not { /exitserver errordict/invalidaccess get exec quit } if <> setpagedevice % false 0 startjob pop #! end [ phaser 750 ] # PRINTER % - Tektronics Phaser {/phaser(.*)/$1/} Color Printer, appsocket, snmp monitoring, PostScript and PCL # # - PCL enabled on Phaser 740 (Marr ) # [ phaser740 ] tc=phaser360 pcl # PRINTER % - Tektronics Phaser {/phaser(.*)/$1/} Color Printer, appsocket, snmp monitoring, PostScript and PCL # Use snmp monitoring for status and pagecount [ phaser5400 ] tc=hp4000_pcl appsocket sync=snmp pagecount=snmp waitend=snmp ps_simplex= <> setpagedevice ps_duplex= <> setpagedevice ps_lduplex=[ duplex ] ps_sduplex= <> setpagedevice ps_collate= currentpagedevice /Collate known {currentpagedevice /Collate get {(True)}{(False)} ifelse} {(Unknown)} ifelse = flush restore " ps_draft= << /HWResolution [600 600] /Policies <> /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 0 /TonerSaver 1 /Type 18 >> >> setpagedevice ps_normal= << /HWResolution [1200 1200] /Policies <> /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 0 /TonerSaver 0 /Type 18 >> >> setpagedevice ps_high=[ normal] ps_fast=[ draft ] # # Position 1 is the MBF (manual bypass feeder) # Must specify Manual Feed or it will go to next tray (tray2) if empty # Position 0 is tray 1 (top tray) # Position 2 is tray 2 # Position 3 is tray 3 (assumed to be large-capacity feeder--would anyone # get a large-capacity feeder without the second tray option up at the top? # ps_manual= <> setpagedevice ps_inupper= <> setpagedevice ps_intray1=[ ps_inupper ] ps_inlower= <> setpagedevice ps_intray2=[ ps_inlower ] ps_inlargecapacity= <> setpagedevice ps_inlarge=[ inlargecapacity ] ps_intray3=[ inlargecapacity ] # PRINTER % - Tektronics Phaser {/phaser(.*)/$1/} Color Printer, appsocket, snmp monitoring, PostScript and PCL #---------------------------------------------------------------------- [ phaser7700 ] appsocket sync=snmp pagecount=snmp waitend=snmp @pjl @pcl ps file_output_match = [ *postscript* ps *text* ps \%s{a2ps_converter} *pdf* filter \%s{pdf2ps_converter} *gzip_compressed* filter \%s{gzip_decompress} ] ps_pagecount_code=%! false 0 startjob pop (%%[ pagecount: )print statusdict /pagecount get exec ( )cvs print ( ]%% )= flush # # source ... # ps_inupper=<< /MediaPosition null /MediaClass (Paper) /TraySwitch true >> setpagedevice ps_manual=<< /MediaPosition 0 /MediaClass null /TraySwitch false >> setpagedevice ps_intray1=<< /MediaPosition 1 /MediaClass null /TraySwitch false >> setpagedevice ps_intray2=<< /MediaPosition 2 /MediaClass null /TraySwitch false >> setpagedevice ps_intray3=<< /MediaPosition 3 /MediaClass null /TraySwitch false >> setpagedevice ps_intray4=<< /MediaPosition 4 /MediaClass null /TraySwitch false >> setpagedevice ps_transparency=<< /MediaPosition null /MediaClass (Transparency) /TraySwitch true >> setpagedevice # # Duplex control .. # ps_duplex=<> setpagedevice ps_lduplex=[ duplex ] ps_duplexshort=<> setpagedevice ps_sduplex=[ duplexshort ] ps_simplex=<> setpagedevice # # Print quality # ps_standard=<< /ProcessColorModel /DeviceCMYK /HWResolution [1200 600] /DeviceRenderingInfo currentpagedevice 1 index get 1 dict copy dup /ValuesPerColorComponent 2 put >> setpagedevice ps_photo=<< /ProcessColorModel /DeviceCMYK /HWResolution [600 600] /DeviceRenderingInfo currentpagedevice 1 index get 1 dict copy dup /ValuesPerColorComponent 16 put >> setpagedevice # # paper destination # ps_outupper=<> setpagedevice ps_topbin=<> setpagedevice ps_finisherbin=<> setpagedevice ps_user_opts += [ ps_inupper ps_manual ps_intray1 ps_intray2 ps_intray3 ps_intray4 ps_transparency ps_duplex ps_lduplex ps_outupper ps_topbin ps_duplexshort ps_sduplex ps_simplex ps_standard ps_photo ] # PRINTER % - Lexmark 4039, Postscript only [ lexmark4039 ] pcl@ pjl@ ps ps_init=[ sync ] ps_sync= serverdict begin 0 exitserver statusdict begin true setenginesync end ps_async= serverdict begin 0 exitserver statusdict begin false setenginesync end file_output_match = [ *postscript* ps *text* ps \%s{a2ps_converter} *pdf* ps \%s{pdf2ps_converter} *gzip_compressed* filter \%s{gzip_decompress} ] # PRINTER % - Lexmark Optra e312, Postscript, PCL and PJL [ lexmark_optra_e312 ] # Lexmark Optra e312 IFHP printer configuration # Contribued by: # Lars Kellogg-Stedman # Fri, 21 Jul 2000 23:55:14 -0400 (EDT) ## You may want to add the following xxx-to-ps converters ## file_output_match += [ ## *gif* filter \%s{gif_converter} ## *jpeg* filter \%s{jpeg_converter} ## *tiff* filter \%s{tiff_converter} ## *gzip_compressed* filter \%s{gzip_decompress} ## *postscript* ps ## *roff* ps \%s{troff_converter} ## *text* ps \%s{a2ps_converter} ## *pdf* ps \%s{pdf_converter} ## *dvi* ps \%s{dvi_converter} ## *pnm* ps \%s{pnm_converter} ## *ppm* ps \%s{pnm_converter} ## ] ## ## The lexmark supports both pcl and pjl in addition to postscript. pcl pjl pjl_vars_set += [ LPARM_POSTSCRIPT_LPICTUREGRADE=(LPARM:POSTSCRIPT+LPICTUREGRADE)ENUMERATED;OFF,ON ] pjl_user_opts += [ density economode noeconomode picturegrade nopicturegrade ] pjl_density=[ density=\%s{density} ] pjl_economode=[ economode=on ] pjl_noeconomode=[ economode=off ] pjl_picturegrade=[ lparm_postscript_lpicturegrade=on ] pjl_nopicturegrade=[ lparm_postscript_lpicturegrade=off ] ps_user_opts += [ smoothing nosmoothing enhance noenhance 300x300 600x600 plain cardstock transparency labels bond letterhead preprinted color envelope custom1 custom2 custom3 custom4 custom5 custom6 lxcollate nolxcollate letter legal b5 a4 executive a5 universal monarch c9 comm10 dl c5 isob5 other autoselect intray1 manual ] ps_smoothing = %% Turn smoothing ON << /PostRenderingEnhanceDetails << /REValue 2 >> >> setpagedevice ps_nosmoothing = %% Turn smoothing OFF << /PostRenderingEnhanceDetails << /REValue 0 >> >> setpagedevice ps_enhance = %% Turn imageenhance ON 1 dict dup /DeviceRenderingInfo 1 dict dup /ImageEnhancement 1 put put setpagedevice ps_noenhance = %% Turn imageenhance OFF 1 dict dup /DeviceRenderingInfo 1 dict dup /ImageEnhancement 0 put put setpagedevice ## resolution ps_300x300 = %% Set resolution to 300x300 << /HWResolution [300 300] >> setpagedevice ps_600x600 = %% Set resolution to 600x600 << /HWResolution [600 600] >> setpagedevice ps_lxcollate = %% Turn lxcollate ON << /Collate true >> setpagedevice ps_nolxcollate = %% Turn lxcollate OFF << /Collate false >> setpagedevice ## media types ps_plain = << /MediaType (Plain) /Policies << /MediaType 2 >> >> setpagedevice ps_cardstock = << /MediaType (Card Stock) /Policies << /MediaType 2 >> >> setpagedevice ps_transparency = << /MediaType (Transparency) /Policies << /MediaType 2 >> >> setpagedevice ps_labels = << /MediaType (Labels) /Policies << /MediaType 2 >> >> setpagedevice ps_bond = << /MediaType (Bond) /Policies << /MediaType 2 >> >> setpagedevice ps_letterhead = << /MediaType (Letterhead) /Policies << /MediaType 2 >> >> setpagedevice ps_preprinted = << /MediaType (Preprinted) /Policies << /MediaType 2 >> >> setpagedevice ps_color = << /MediaType (Color) /Policies << /MediaType 2 >> >> setpagedevice ps_envelope = << /MediaType (Envelope) /Policies << /MediaType 2 >> >> setpagedevice ps_custom1 = << /MediaType (Custom Type 1) /Policies << /MediaType 2 >> >> setpagedevice ps_custom2 = << /MediaType (Custom Type 2) /Policies << /MediaType 2 >> >> setpagedevice ps_custom3 = << /MediaType (Custom Type 3) /Policies << /MediaType 2 >> >> setpagedevice ps_custom4 = << /MediaType (Custom Type 4) /Policies << /MediaType 2 >> >> setpagedevice ps_custom5 = << /MediaType (Custom Type 5) /Policies << /MediaType 2 >> >> setpagedevice ps_custom6 = << /MediaType (Custom Type 6) /Policies << /MediaType 2 >> >> setpagedevice ps_letter = %% Letter 2 dict dup /PageSize [612 792] put dup /ImagingBBox null put setpagedevice ps_legal = %% Legal 2 dict dup /PageSize [612 1008] put dup /ImagingBBox null put setpagedevice ps_b5 = %% B5 2 dict dup /PageSize [516 729] put dup /ImagingBBox null put setpagedevice ps_a4 = %% A4 2 dict dup /PageSize [595 842] put dup /ImagingBBox null put setpagedevice ps_executive = %% Executive 2 dict dup /PageSize [522 756] put dup /ImagingBBox null put setpagedevice ps_a5 = %% A5 2 dict dup /PageSize [420 595] put dup /ImagingBBox null put setpagedevice ps_universal = %% Universal 2 dict dup /PageSize [612 1008] put dup /ImagingBBox null put setpagedevice ps_monarch = %% Monarch Envelope 2 dict dup /PageSize [279 540] put dup /ImagingBBox null put setpagedevice ps_c9 = %% C9 Envelope 2 dict dup /PageSize [279 639] put dup /ImagingBBox null put setpagedevice ps_comm10 = %% comm10 (Number 10 Envlope?) 2 dict dup /PageSize [297 684] put dup /ImagingBBox null put setpagedevice ps_dl = %% DL Envelope 2 dict dup /PageSize [312 624] put dup /ImagingBBox null put setpagedevice ps_c5 = %% C5 Envelope 2 dict dup /PageSize [459 649] put dup /ImagingBBox null put setpagedevice ps_isob5 = %% ISO B5 Envelope 2 dict dup /PageSize [499 708] put dup /ImagingBBox null put setpagedevice ps_other = %% Other Envelope (8.5 x 14) 2 dict dup /PageSize [612 1008] put dup /ImagingBBox null put setpagedevice ## autoselect ps_autoselect = %% Autoselect input tray 1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice ps_intray1 = %% Select input tray 1 1 dict dup /ManualFeed false put setpagedevice 1 dict dup /MediaPosition null put setpagedevice currentpagedevice /InputAttributes get 0 get setpagedevice 1 dict dup /InputAttributes 1 dict dup /Priority [0] put put setpagedevice 1 dict dup /Policies 1 dict dup /PageSize 7 put put setpagedevice ## manual ps_manual = %% Select manual input tray 1 dict dup /ManualFeed true put setpagedevice 1 dict dup /MediaPosition null put setpagedevice 1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice # PRINTER %s - Digital Laser LN15, LN17ps, Compaq Laser LN 16 [ ln15 ln16 ln17ps ] pjl@ file_output_match = [ *text* filter \%s{a2ps_converter} *pdf* filter \%s{pdf2ps_converter} ] ps_duplex=<> setpagedevice ps_lduplex=[ duplex ] ps_sduplex=<> setpagedevice ps_duplexshort=[ sduplex ] ps_simplex=<> setpagedevice ps_tumble=<> setpagedevice ps_shortedge=[ tumble ] #!End of [ ln15 ln16 ln17ps ] # PRINTER %s - HP Business Inkjet 2250 [ hpij2250 ] file_output_match = [ *text* filter \%s{a2ps_converter} *pdf* filter \%s{pdf2ps_converter} ] ps_inupper=<> setpagedevice ps_intray1=[ inupper ] ps_inlower=<> setpagedevice ps_intray2=[ inlower ] #!End of [ hpij2250 ] ##### ##### GhostScript Rasterization Printer Entries ##### # PRINTER gs_bj10 - Canon BubbleJet BJ10e # PRINTER gs_bj10 - Canon BubbleJet BJ20 [ gs_bj10 ] tc=ghostscript gs_device=bj10 gs_options= # PRINTER gs_bj200 - Canon BubbleJet BJ200 # PRINTER gs_bj200 - Canon BubbleJet BJC-210 B/W only # PRINTER gs_bj200 - Canon BubbleJet BJC-240 B/W only # PRINTER gs_bj200 - Canon BubbleJet BJC-250 B/W only # PRINTER gs_bj200 - Canon BubbleJet BJC-70 B/W only [ gs_bj200 ] tc=ghostscript gs_device=bj200 gs_options= # PRINTER gs_bjc600 - Canon BubbleJet BJC-600 # PRINTER gs_bjc600 - Canon BubbleJet BJC-610 # PRINTER gs_bjc600 - Canon BubbleJet BJC-50 # PRINTER gs_bjc600 - Canon BubbleJet BJC-70 # PRINTER gs_bjc600 - Canon BubbleJet BJC-80 # PRINTER gs_bjc600 - Canon BubbleJet BJC-210 Color only # PRINTER gs_bjc600 - Canon BubbleJet BJC-240 Color only # PRINTER gs_bjc600 - Canon BubbleJet BJC-250 # PRINTER gs_bjc600 - Canon BubbleJet BJC-1000 # PRINTER gs_bjc600 - Canon BubbleJet BJC-2000 # PRINTER gs_bjc600 - Canon BubbleJet BJC-4000 # PRINTER gs_bjc600 - Canon BubbleJet BJC-4100 B/W only # PRINTER gs_bjc600 - Canon BubbleJet BJC-4200 # PRINTER gs_bjc600 - Canon BubbleJet BJC-4300 # PRINTER gs_bjc600 - Canon BubbleJet BJC-4550 # PRINTER gs_bjc600 - Canon BubbleJet BJC-6000 # PRINTER gs_bjc600 - Canon MultiPASS C2500 color printer/fax/copier [ gs_bjc600 ] tc=ghostscript gs_device=bjc600 gs_options= # PRINTER gs_bjc800 - Canon BubbleJet BJC-800 # PRINTER gs_bjc800 - Canon BubbleJet BJC-7000 Color. # PRINTER gs_bjc800 - Canon BubbleJet BJC-4300 Color # PRINTER gs_bjc800 - Canon BubbleJet BJC-4650 [ gs_bjc800 ] tc=ghostscript gs_device=bjc800 gs_options= # PRINTER gs_deskjet - HP DeskJet # PRINTER gs_deskjet - HP DeskJet Plus [ gs_deskjet ] tc=pcl_gs gs_device=deskjet gs_options= # PRINTER gs_djet500 - HP DeskJet 500 B/W # PRINTER gs_djet500 - HP DeskJet Portable B/W # PRINTER gs_djet500 - HP OfficeJet 590 B/W [ gs_djet500 ] tc=pcl_gs gs_device=djet500 gs_options= # PRINTER gs_cdj500 - HP DeskJet 400 # PRINTER gs_cdj500 - HP DeskJet 500C # PRINTER gs_cdj500 - HP DeskJet 540C # PRINTER gs_cdj500 - HP DeskJet 690C # PRINTER gs_cdj500 - HP DeskJet 693C [ gs_cdj500 ] tc=pcl_gs gs_device=cdj500 gs_options= # PRINTER gs_cdj550 - HP DeskJet 550C # PRINTER gs_cdj550 - HP DeskJet 560C # PRINTER gs_cdj550 - HP DeskJet 600 # PRINTER gs_cdj550 - HP DeskJet 660C # PRINTER gs_cdj550 - HP DeskJet 660C # PRINTER gs_cdj550 - HP DeskJet 682C # PRINTER gs_cdj550 - HP DeskJet 683C # PRINTER gs_cdj550 - HP DeskJet 693C # PRINTER gs_cdj550 - HP DeskJet 694C # PRINTER gs_cdj550 - HP DeskJet 690C # PRINTER gs_cdj550 - HP DeskJet 692C # PRINTER gs_cdj550 - HP DeskJet 693C # PRINTER gs_cdj550 - HP DeskJet 694C # PRINTER gs_cdj550 - HP DeskJet 695C # PRINTER gs_cdj550 - HP DeskJet 850 # PRINTER gs_cdj550 - HP DeskJet 870Cse # PRINTER gs_cdj550 - HP DeskJet 895Cxi # PRINTER gs_cdj550 - HP DeskJet 970 # PRINTER gs_cdj550 - HP OfficeJet 590 # PRINTER gs_cdj550 - Olivetti jp450 # PRINTER gs_cdj550 - Xerox XJ6C, PCL and Postscript using GhostScript [ gs_cdj550 ] tc=pcl_gs gs_device=cdj550 gs_options= # PRINTER gs_cdj850 - HP DeskJet 850 # PRINTER gs_cdj850 - HP DeskJet 855 # PRINTER gs_cdj850 - HP DeskJet 870Cse # PRINTER gs_cdj850 - HP DeskJet 870Cxi # PRINTER gs_cdj850 - HP DeskJet 890C # PRINTER gs_cdj850 - HP DeskJet 670C # PRINTER gs_cdj850 - HP DeskJet 680 [ gs_cdj850 ] tc=pcl_gs gs_device=cdj850 gs_options= # PRINTER gs_cdeskjet - HP DeskJet 500C [ gs_cdeskjet ] tc=pcl_gs gs_device=cdeskjet gs_options= [ gs_cdjcolor ] tc=pcl_gs gs_device=cdjcolor gs_options= # PRINTER gs_cdjmono - HP DeskJet 500C # PRINTER gs_cdjmono - HP DeskJet 510 # PRINTER gs_cdjmono - HP DeskJet 520 # PRINTER gs_cdjmono - HP DeskJet 540C # PRINTER gs_cdjmono - HP DeskJet 693C [ gs_cdjmono ] tc=pcl_gs gs_device=cdjmono gs_options= # PRINTER gs_epsonc - Fujitsu DL-1100 # PRINTER gs_epsonc - Fujitsu DL-2400 [ gs_epsonc ] tc=pcl_gs gs_device=epsonc gs_options= # PRINTER gs_hl7x0 - Brother HL-720 # PRINTER gs_hl7x0 - Brother HL-730 [ gs_hl7x0 ] tc=pcl_gs gs_device=hl7x0 gs_options= # PRINTER gs_laserjet - Bull Compuprint Pagemaster 415 [ gs_laserjet ] tc=pcl_gs gs_device=laserjet gs_options= # PRINTER gs_lips3 - Canon LBP4+ [ gs_lips3 ] tc=ghostscript gs_device=lips3 gs_options= # PRINTER gs_lj4dith - HP DeskJet 600 [ gs_lj4dith ] tc=pcl_gs gs_device=lj4dith gs_options= # PRINTER gs_ljet2 - HP LaserJet II # PRINTER gs_ljet2 - Xerox 4030 - PCL, PostScript support using GhostScript [ gs_ljet2 ] tc=pcl_gs gs_device=ljet2p gs_options= # PRINTER gs_ljet3 - Tandy LP800 With LaserJet III emulation. [ gs_ljet3 ] tc=pcl_gs gs_device=ljet3 gs_options= # PRINTER gs_ljet4 - Brother HL-660 # PRINTER gs_ljet4 - Brother HL-760 600dpi # PRINTER gs_ljet4 - Epson EPL5700 300dpi OK # PRINTER gs_ljet4 - HP DeskJet 600 margins wrong # PRINTER gs_ljet4 - HP DeskJet 870Cse # PRINTER gs_ljet4 - HP LaserJet 5 300dpi or 600dpi # PRINTER gs_ljet4 - HP LaserJet 5L 300dpi or 600dpi # PRINTER gs_ljet4 - HP LaserJet 6L 600dpi # PRINTER gs_ljet4 - HP LaserJet 1100 600dpi OK. # PRINTER gs_ljet4 - IBM Network Printer 17 # PRINTER gs_ljet4 - IBM/Lexmark 4029 Margins wrong. # PRINTER gs_ljet4 - Lexmark Optra E+ # PRINTER gs_ljet4 - Lexmark Optra SC 1275 B/W only. # PRINTER gs_ljet4 - Oki OL410ex LED printer 300dpi or 600dpi [ gs_ljet4 ] # tc=pcl_gs gs_device=ljet4 gs_options= # PRINTER gs_ljetplus - HP LaserJet Plus # PRINTER gs_ljetplus - Canon Laser LBP-600 # PRINTER gs_ljetplus - NEC SuperScript 860 [ gs_ljetplus ] tc=pcl_gs gs_device=ljetplus gs_options= # PRINTER gs_pjxl300 - HP PaintJet XL300 # PRINTER gs_pjxl300 - HP DeskJet 600 # PRINTER gs_pjxl300 - HP DeskJet 1200C # PRINTER gs_pjxl300 - HP DeskJet 1600C [ gs_pjxl300 ] tc=pcl_gs gs_device=pjxl300 gs_options= # PRINTER gs_r4081 - Ricoh 4081 laser printer # PRINTER gs_r4081 - Ricoh 6000 laser printer [ gs_r4081 ] tc=ghostscript gs_device=r4081 gs_options= # # gs_uniprint driver # # Does the following for GhostScript: # gs @MODEL.upp -sOutputFile=- .... # # Uses: # ps_converter= [ \%s{gs_unidriver} ] # gs_unidriver= @GS@ -dSAFER -dPARANOIDSAFER -dBATCH -dNOPAUSE -q '-sOutputFile=@DEVFD3@' 3>&1 1>&2 # @\%s{gs_device}.upp \%s{gs_options} - # # set gs_device to MODEL and you will get the desired operation # # The user can interface to this by using the ifhp options: # # lp: # :ifhp=model=gs_uniprint,gs_device=bjc610a0 # # Canon BubbleJet BJC-610 (color, rendered) # bjc610a0.upp 360x360dpi plain paper, high speed # bjc610a1.upp 360x360dpi plain paper # bjc610a2.upp 360x360dpi coated paper # bjc610a3.upp 360x360dpi transparency film # bjc610a4.upp 360x360dpi back print film # bjc610a5.upp 360x360dpi fabric sheet # bjc610a6.upp 360x360dpi glossy paper # bjc610a7.upp 360x360dpi high gloss film # bjc610a8.upp 360x360dpi high resolution paper # bjc610b1.upp 720x720dpi plain paper # bjc610b2.upp 720x720dpi coated paper # bjc610b3.upp 720x720dpi transparency film # bjc610b4.upp 720x720dpi back print film # bjc610b6.upp 720x720dpi glossy paper # bjc610b7.upp 720x720dpi high-gloss paper # bjc610b8.upp 720x720dpi high resolution paper # HP DeskJet 550C # cdj550.upp 300x300dpi 32-bit CMYK # NEC P2X # necp2x.upp 360x360dpi 8-bit (Floyd-Steinberg) # Epson Stylus Color (Any) # stcany.upp 360x360dpi 4-bit, PostScript halftoning # Epson Stylus (Original) and Stylus Pro Color # stc.upp 360x360dpi 32-bit CMYK, 15-pin # stc_l.upp 360x360dpi 4-bit, PostScript halftoning, weaved noWeave # stc_h.upp 720x720dpi 32-bit CMYK, 15-pin Weave # stc2.upp 360x360dpi 32-bit CMYK, 20-pin, Epson Stylus Color II(s) # stc2_h.upp 720x720dpi 32-bit CMYK, 20-pin, Epson Stylus Color II # stc2s_h.upp 720x720dpi 32-bit CMYK, 20-pin, Epson Stylus Color IIs # Epson Stylus Color 500 (good transfer curves for plain paper) # stc500p.upp 360x360dpi 32-bit CMYK, noWeave, plain paper # stc500ph.upp 720x720dpi 32-bit CMYK, noWeave, plain paper # Epson Stylus Color 600, 32/90-inch weaving # stc600pl.upp 360x360dpi 32-bit CMYK, 32-pin, plain paper # stc600p.upp 720x720dpi 32-bit CMYK, 32-pin, plain paper # stc600ih.upp 1440x720dpi 32-bit CMYK, 30-pin, inkjet paper # Epson Stylus Color 800, 64/180-inch weaving # stc800pl.upp 360x360dpi 32-bit CMYK, 64-pin, plain paper # stc800p.upp 720x720dpi 32-bit CMYK, 64-pin, plain paper # stc800ih.upp 1440x720dpi 32-bit CMYK, 62-pin, inkjet paper # stc1520h.upp 1440x720dpi 32-bit CMYK, 62-pin, inkjet paper # (This is erroneously described in the GhostScript # documentation as the stc1520.upp) [ gs_uniprint ] tc=pcl_gs gs_converter= \%s{gs_unidriver} # example: gs_device= gs_device= gs_options= # PRINTER bjc610a0.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi plain paper, high speed [ bjc610a0.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610a0.upp # PRINTER bjc610a1.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi plain paper [ bjc610a1.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610a1.upp # PRINTER bjc610a2.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi coated paper [ bjc610a2.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610a2.upp # PRINTER bjc610a3.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi transparency film [ bjc610a3.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610a3.upp # PRINTER bjc610a4.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi back print film [ bjc610a4.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610a4.upp # PRINTER bjc610a5.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi fabric sheet [ bjc610a5.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610a5.upp # PRINTER bjc610a6.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi glossy paper [ bjc610a6.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610a6.upp # PRINTER bjc610a7.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi high gloss film [ bjc610a7.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610a7.upp # PRINTER bjc610a8.upp - Canon BubbleJet BJC-610 (color, rendered) 360x360dpi high resolution paper [ bjc610a8.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610a8.upp # PRINTER bjc610b1.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi plain paper [ bjc610b1.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610b1.upp # PRINTER bjc610b2.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi coated paper [ bjc610b2.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610b2.upp # PRINTER bjc610b3.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi transparency film [ bjc610b3.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610b3.upp # PRINTER bjc610b4.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi back print film [ bjc610b4.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610b4.upp # PRINTER bjc610b6.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi glossy paper [ bjc610b6.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610b6.upp # PRINTER bjc610b7.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi high-gloss paper [ bjc610b7.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610b7.upp # PRINTER bjc610b8.upp - Canon BubbleJet BJC-610 (color, rendered) 720x720dpi high resolution paper [ bjc610b8.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=bjc610b8.upp # PRINTER cdj550.upp - HP DeskJet 550C 300x300dpi 32-bit CMYK [ cdj550.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=cdj550.upp # PRINTER necp2x.upp - NEC P2X 360x360dpi 8-bit (Floyd-Steinberg) [ necp2x.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=necp2x.upp # PRINTER stcany.upp - Epson Stylus Color (Any) 360x360dpi 4-bit, PostScript halftoning [ stcany.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stcany.upp # PRINTER stc.upp - Epson Stylus (Original) and Stylus Pro Color 360x360dpi 32-bit CMYK, 15-pin [ stc.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc.upp # PRINTER stc_l.upp - Epson Stylus (Original) and Stylus Pro Color 360x360dpi 4-bit, PostScript halftoning, weaved noWeave [ stc_l.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc_l.upp # PRINTER stc_h.upp - Epson Stylus (Original) and Stylus Pro Color 720x720dpi 32-bit CMYK, 15-pin Weave [ stc_h.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc_h.upp # PRINTER stc2.upp - Epson Stylus (Original) and Stylus Pro Color 360x360dpi 32-bit CMYK, 20-pin, Epson Stylus Color II(s) [ stc2.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc2.upp # PRINTER stc2_h.upp - Epson Stylus (Original) and Stylus Pro Color 720x720dpi 32-bit CMYK, 20-pin, Epson Stylus Color II [ stc2_h.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc2_h.upp # PRINTER stc2s_h.upp - Epson Stylus (Original) and Stylus Pro Color 720x720dpi 32-bit CMYK, 20-pin, Epson Stylus Color IIs [ stc2s_h.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc2s_h.upp # PRINTER stc500p.upp - Epson Stylus Color 500 360x360dpi 32-bit CMYK, noWeave, plain paper [ stc500p.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc500p.upp # PRINTER stc500ph.upp - Epson Stylus Color 500 720x720dpi 32-bit CMYK, noWeave, plain paper [ stc500ph.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc500ph.upp # PRINTER stc600pl.upp - Epson Stylus Color 600, 360x360dpi, 32/90-inch weaving 32-bit CMYK, 32-pin, plain paper [ stc600pl.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc600pl.upp # PRINTER stc600p.upp - Epson Stylus Color 600, 720x720dpi, 32/90-inch weaving 32-bit CMYK, 32-pin, plain paper [ stc600p.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc600p.upp # PRINTER stc600ih.upp - Epson Stylus Color 600, 1440x720dpi, 32/90-inch weaving 32-bit CMYK, 30-pin, inkjet paper [ stc600ih.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc600ih.upp # PRINTER stc800pl.upp - Epson Stylus Color 800, 64/180-inch weaving 360x360dpi 32-bit CMYK, 64-pin, plain paper [ stc800pl.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc800pl.upp # PRINTER stc800p.upp - Epson Stylus Color 800, 64/180-inch weaving 720x720dpi 32-bit CMYK, 64-pin, plain paper [ stc800p.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc800p.upp # PRINTER stc800ih.upp - Epson Stylus Color 800, 64/180-inch weaving 1440x720dpi 32-bit CMYK, 62-pin, inkjet paper [ stc800ih.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc800ih.upp # PRINTER stc1520h.upp - Epson Stylus Color 800, 64/180-inch weaving 1440x720dpi 32-bit CMYK, 62-pin, inkjet paper [ stc1520h.upp ] tc=pcl_gs gs_converter= \%s{gs_unidriver} gs_device=stc1520h.upp # PRINTER imagerunner550 - Canon imageRUNNER 550/600 iR600-550-60 # PRINTER imagerunner600 - Canon imageRUNNER 550/600 iR600-550-60 [ ir550 ir600 ] # PostScript for Canon iR600-550-60 PS Print Server Ver 2.0P # PCFileName: "EFMC6A30.PPD" # most of the commands at the PJL/PCL level are the same as the # HP5Si, or so the documentation leads us to believe # - Patrick Powell Tue Jun 18 18:54:00 EDT 2002 tc = hp5si # *MediaType Plain/Plain Paper: " ps_plain= /XJXsetmediatype where { pop 0 XJXsetmediatype } if # *MediaType Transparent/Transparency: ps_transparency= /XJXsetmediatype where { pop 1 XJXsetmediatype } if # *MediaType Interleaved/Interleaving (Blank): ps_interleaved= /XJXsetmediatype where { pop 2 XJXsetmediatype } if # *MediaType P_Interleaved/Interleaving (Printed): ps_printerleaved= /XJXsetmediatype where { pop 3 XJXsetmediatype } if # # *%EFIFlags *EFStapler Spooler|Command # *%EFIGroup *EFStapler Finishing/Finishing # *EFStapler None/Off: # /XJXsetstapler where { pop 0 XJXsetstapler } if # *EFStapler PUpperLeft/Corner [Upper Left-P]: ps_staple = [ staple_ulp ] ps_staple_ulp= /XJXsetstapler where { pop 1 XJXsetstapler } if # *EFStapler LUpperLeft/Corner [Upper Left-L]: ps_staple_ull= /XJXsetstapler where { pop 3 XJXsetstapler } if # *EFStapler PUpperRight/Corner [Upper Right-P]: ps_staple_urp= /XJXsetstapler where { pop 2 XJXsetstapler } if # *EFStapler LUpperRight/Corner [Upper Right-L]: ps_staple_url= /XJXsetstapler where { pop 1 XJXsetstapler } if # *EFStapler PLeft/Double [Left-P]: ps_staple_dlp= /XJXsetstapler where { pop 5 XJXsetstapler } if # *EFStapler LLeft/Double [Left-L]: ps_staple_dll= /XJXsetstapler where { pop 8 XJXsetstapler } if # *EFStapler PUpper/Double [Top-P]: ps_staple_dtp= /XJXsetstapler where { pop 7 XJXsetstapler } if # *EFStapler LUpper/Double [Top-L]: ps_staple_dtl= /XJXsetstapler where { pop 5 XJXsetstapler } if # *EFStapler PRight/Double [Right-P]: ps_staple_drp= /XJXsetstapler where { pop 6 XJXsetstapler } if # *EFStapler LRight/Double [Right-L]: ps_staple_drl= /XJXsetstapler where { pop 7 XJXsetstapler } if # *EFStapler Stitch/Saddle Stitch: # /XJXsetstapler where { pop 9 XJXsetstapler } if ps_staple_saddle= /XJXsetstapler where { pop 7 XJXsetstapler } if # # *EFPunch False/Off: # /XJXsetpunch where { pop 0 XJXsetpunch } if # *EFPunch PUpper/Top-Portrait: ps_punch= [ punch_lp ] ps_punch_tp= /XJXsetpunch where { pop 7 XJXsetpunch } if # *EFPunch LUpper/Top-Landscape: ps_punch_tl= /XJXsetpunch where { pop 5 XJXsetpunch } if # *EFPunch PLeft/Left-Portrait: ps_punch_lp= /XJXsetpunch where { pop 5 XJXsetpunch } if # *EFPunch LLeft/Left-Landscape: ps_punch_ll= /XJXsetpunch where { pop 8 XJXsetpunch } if # *EFPunch PRight/Right-Portrait: ps_punch_rp= /XJXsetpunch where { pop 6 XJXsetpunch } if # *EFPunch LRight/Right-Landscape: ps_punch_rl= /XJXsetpunch where { pop 7 XJXsetpunch } if # # *%EFIFlags *EFDuplexing Spooler|Command # *EFDuplexing None/Off: ps_simplex= /XJXSetEngineDuplex where { pop 0 XJXSetEngineDuplex } if /XJXSetEngineBinding where { pop 0 XJXSetEngineBinding } if # *EFDuplexing Top/Long Edge Binding: ps_duplex= /XJXSetEngineDuplex where { pop 1 XJXSetEngineDuplex } if /XJXSetEngineBinding where { pop 0 XJXSetEngineBinding } if # *EFDuplexing Bottom/Short Edge Binding: ps_duplexshort= /XJXSetEngineDuplex where { pop 1 XJXSetEngineDuplex } if /XJXSetEngineBinding where { pop 1 XJXSetEngineBinding } if # *%EFIFlags *EFFirstPage Spooler|Command # *%EFIGroup *EFFirstPage Job/Job # *OpenUI *EFFirstPage/First Page Source :PickOne # *OrderDependency: 50 AnySetup *EFFirstPage # *DefaultEFFirstPage: None # *EFFirstPage ManualFeed/Stack Bypass: ps_1manual= /XJXsetFirstPageTray where { pop 1 neg XJXsetFirstPageTray } if # *EFFirstPage Tray1/Drawer 1: ps_1intray1= /XJXsetFirstPageTray where { pop 1 XJXsetFirstPageTray } if # *EFFirstPage Tray2/Drawer 2: ps_1intray2= /XJXsetFirstPageTray where { pop 2 XJXsetFirstPageTray } if # *EFFirstPage Tray3/Drawer 3: ps_1intray3= /XJXsetFirstPageTray where { pop 3 XJXsetFirstPageTray } if # *EFFirstPage Tray4/Drawer 4: ps_1intray4= /XJXsetFirstPageTray where { pop 4 XJXsetFirstPageTray } if # *EFFirstPage Tray5/Side Paper Deck: ps_1intray5= /XJXsetFirstPageTray where { pop 5 XJXsetFirstPageTray } if # *CloseUI: *EFFirstPage # # *OpenUI *InputSlot/Paper Source : PickOne # *InputSlot AutoSelect/Auto: ps_autoselect= /XJXsettraysel where { pop 0 XJXsettraysel } if # *InputSlot ManualFeed/Stack Bypass: ps_manual= /XJXsettraysel where { pop 1 neg XJXsettraysel } if # *InputSlot Tray1/Drawer 1: ps_intray1= /XJXsettraysel where { pop 1 XJXsettraysel } if # *InputSlot Tray2/Drawer 2: ps_intray2= /XJXsettraysel where { pop 2 XJXsettraysel } if # *InputSlot Tray3/Drawer 3: ps_intray3= /XJXsettraysel where { pop 3 XJXsettraysel } if # *InputSlot Tray4/Drawer 4: ps_intray4= /XJXsettraysel where { pop 4 XJXsettraysel } if # *InputSlot Tray5/Side Paper Deck: ps_intray5= /XJXsettraysel where { pop 5 XJXsettraysel } if # *CloseUI: *InputSlot # *DefaultPageSize: Letter # *PageSize Tabloid/11x17: ps_ledger= /XJXsetpagesize where { pop (Tabloid) XJXsetpagesize } if # *PageSize Legal/Legal: ps_legal= /XJXsetpagesize where { pop (Legal) XJXsetpagesize } if # *PageSize Letter/Letter: ps_letter= /XJXsetpagesize where { pop (Letter) XJXsetpagesize } if # *PageSize Statement/Statement: ps_statement= /XJXsetpagesize where { pop (Statement) XJXsetpagesize } if # *PageSize A3/A3: ps_a3= /XJXsetpagesize where { pop (A3) XJXsetpagesize } if # *PageSize B4/B4: ps_b4= /XJXsetpagesize where { pop (B4) XJXsetpagesize } if # *PageSize A4/A4: ps_a4= /XJXsetpagesize where { pop (A4) XJXsetpagesize } if # *PageSize B5/B5: ps_b5= /XJXsetpagesize where { pop (B5) XJXsetpagesize } if # *PageSize A5/A5: ps_a5= /XJXsetpagesize where { pop (A5) XJXsetpagesize } if # *PageSize Executive/Executive: ps_executive= /XJXsetpagesize where { pop (Executive) XJXsetpagesize } if ps_user_opts += [ plain transparency interleaved printerleaved staple staple_ulp staple_ull staple_urp staple_url staple_dlp staple_dll staple_dtp staple_dtl staple_drp staple_drl staple_saddle punch punch_tp punch_tl punch_lp punch_ll punch_rp punch_rl simplex duplex duplexshort 1manual 1intray1 1intray2 1intray3 1intray4 1intray5 autoselect manual intray1 intray2 intray3 intray4 intray5 ledger legal letter statement a3 b4 a4 b5 a5 executive ] # really really stripped down PJL support pjl_only=[ COMMENT ECHO ENTER EOJ INFO INITIALIZE INQUIRE JOB RESET SET ] ps pcl pjl # no console, or at least not supported the same # way as HP and similar printers pjl_console@ appsocket pagecount@ ps_ctrl_t@ ps_eoj_at_start@ # HP DesignJet 800ps # Lars Kellogg-Stedman # Id: hpdj800ps.ifhp,v 1.5 2003/02/11 12:55:10 lars Exp # PRINTER % - HP DesignJet 800ps [ hpdj800ps ] pcl@ ps pjl ps_eoj@ # No pagecount, because it's just one big roll. pagecount@ # There appear to be problems communicating with the printer -- with # status turned on, a print job will be constantly resubmitted because # IFHP cannot determine whether or not the job has completed # successfully. status@ file_output_match = [ *postscript* ps *pdf* ps \%s{pdf2ps_converter} *text* ps \%s{a2ps_converter} *gzip_compressed* filter \%s{gzip_decompress} * msg ps_no_converter ] ps_colorasgray= << /ProcessColorModel /DeviceGray >> setpagedevice ps_colorascolor = << /ProcessColorModel /DeviceCMYK >> setpagedevice # Auto-scaling Control ps_autoscale_letter = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [619 792] exch exec <<>> setpagedevice ps_autoscale_tabloid = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [792 1224] exch exec <<>> setpagedevice ps_autoscale_ansic = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1224 1584] exch exec <<>> setpagedevice ps_autoscale_ansid = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1584 2448] exch exec <<>> setpagedevice ps_autoscale_ansie = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2448 3168] exch exec <<>> setpagedevice ps_autoscale_archA = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [648 864] exch exec <<>> setpagedevice ps_autoscale_archB = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [864 1296] exch exec <<>> setpagedevice ps_autoscale_archC = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1296 1728] exch exec <<>> setpagedevice ps_autoscale_archD = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1728 2592] exch exec <<>> setpagedevice ps_autoscale_archE = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2592 3456] exch exec <<>> setpagedevice ps_autoscale_a4 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [595 842] exch exec <<>> setpagedevice ps_autoscale_a3 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [842 1191] exch exec <<>> setpagedevice ps_autoscale_a2 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1191 1684] exch exec <<>> setpagedevice ps_autoscale_a1 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1684 2384] exch exec <<>> setpagedevice ps_autoscale_a0 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2384 3370] exch exec <<>> setpagedevice ps_autoscale_b4 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [729 1032] exch exec <<>> setpagedevice ps_autoscale_b3 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1032 1460] exch exec <<>> setpagedevice ps_autoscale_b2 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1460 2064] exch exec <<>> setpagedevice ps_autoscale_b1 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2064 2920] exch exec <<>> setpagedevice ps_24x48 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1728 3456] exch exec <<>> setpagedevice ps_24x60 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [1728 4320] exch exec <<>> setpagedevice ps_36x60 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2592 4320] exch exec <<>> setpagedevice ps_36x72 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [2592 5184] exch exec <<>> setpagedevice ps_42x60 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [3024 4320] exch exec <<>> setpagedevice ps_42x72 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [3024 5184] exch exec <<>> setpagedevice ps_42x84 = /HPDict /ProcSet findresource /SetAutoScale get true exch exec /HPDict /ProcSet findresource /SetDestinationPageSize get [3024 6048] exch exec <<>> setpagedevice # Print Quality ps_fast = << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /PrintQuality 1 /Type 36 >> >> systemdict /setpagedevice get exec ps_normal = << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /PrintQuality 2 /Type 36 >> >> systemdict /setpagedevice get exec ps_best = << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /PrintQuality 3 /Type 36 >> >> systemdict /setpagedevice get exec ps_maxdetail = << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /MaxQualityResolution true /Type 36 >> >> systemdict /setpagedevice get exec ps_caddrawings = << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 1 /Type 36 >> >> systemdict /setpagedevice get exec # Mirror print ps_mirrorprint = <>setpagedevice # Transverse ps_transverse = userdict /HPCustTrans known { (<<) cvx exec /Orientation userdict /HPCustTrans get 1 eq { 0 } { 1 } ifelse (>>) cvx exec setpagedevice } { <> setpagedevice } ifelse # HP Color Management ps_colorman = /CMYKColorManagement where { pop /Native CMYKColorManagement /sRGB RGBColorManagement } if ps_cmykswop = /CMYKColorManagement where { pop /SWOP CMYKColorManagement } if ps_cmykjapan = /CMYKColorManagement where { pop /JapanOffset CMYKColorManagement } if ps_cmykeuro = /CMYKColorManagement where { pop /EuroOffset CMYKColorManagement } if ps_cmykdic = /CMYKColorManagement where { pop /DIC CMYKColorManagement } if ps_srgb = /RGBColorManagement where { pop /sRGB RGBColorManagement } if ps_adobergb = /RGBColorManagement where { pop /AdobeRGB RGBColorManagement } if ps_applergb = /RGBColorManagement where { pop /AppleRGB RGBColorManagement } if ps_colormatchrgb = /RGBColorManagement where { pop /ColorMatchRGB RGBColorManagement } if # Rendering Intent ps_perceptual = userdict /UserRenderIntent (Perceptual) put <<>> setpagedevice ps_colorimetric = userdict /UserRenderIntent (RelativeColorimetric) put <<>> setpagedevice ps_saturation = userdict /UserRenderIntent (Saturation) put <<>> setpagedevice # Paper Handling ps_letter = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_tabloid = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_ansic = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_ansid = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_ansie = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_archA = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_archB = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_archC = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_archD = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_archE = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_a4 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_a3 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_a2 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_a1 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_a0 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_b4 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_b3 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_b2 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_b1 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_24x48 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_24x60 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_36x60 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_36x72 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_42x60 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_42x72 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice ps_42x84 = /HPDict /ProcSet findresource /SetMargins get [ 48 48 14 14 ] exch exec <>setpagedevice # Brightness Control ps_cyan = /HPBrightness where pop /Cyan \%d{cyan} HPBrightness }if ps_magenta = /HPBrightness where { pop /Magenta \%d{magenta} HPBrightness }if ps_yellow = /HPBrightness where { pop /Yellow \%d{yellow} HPBrightness }if ps_black = /HPBrightness where { pop /Black \%d{black} HPBrightness }if # Pantone Color As Spot ps_pantone = /SpotColorMatching where { pop true SpotColorMatching } if ps_nopantone = /SpotColorMatching where { pop false SpotColorMatching } if ps_user_opts = [ autoscale_letter autoscale_tabloid autoscale_ansic autoscale_ansid autoscale_ansie autoscale_archA autoscale_archB autoscale_archC autoscale_archD autoscale_archE autoscale_a4 autoscale_a3 autoscale_a2 autoscale_a1 autoscale_a0 autoscale_b4 autoscale_b3 autoscale_b2 autoscale_b1 fast normal best colorasgray colorascolor maxdetail caddrawings mirrorprint transverse colorman cmykswop cmykjapan cmykeuro cmykdic srgb adobergb applergb colormatchrgb perceptual colorimetric saturation letter tabloid ansic ansid ansie archA archB archC archD archE a4 a3 a2 a1 a0 b4 b3 b2 b1 24x48 24x60 36x60 36x72 42x60 42x72 42x84 cyan magenta yellow black pantone nopantone ] # # Sharp Printers # Only a smple of these have been tested. # The information is based on MIB dumps and information supplied by Sharp # Patrick Powell, 2 Dec 2003 # The PostScript for these printers is basically that of the HP5si # # PRINTER % - Sharp Generic Panther Family, PS and PCL, uses SNMP for status and pagecount [ panther ] # ## Panther Printer Model Names from MIB ## #%Model # Sharp AR-160 = 1 # Sharp AR-161 = 2 # Sharp AR-162 = 3 # Sharp AR-162S = 4 # # Sharp AR-163 = 5 # shifter # Sharp AR-164 = 6 # shifter # Sharp AR-200 = 7 # shifter # Sharp AR-200S = 8 # shifter # Sharp AR-201 = 9 # shifter # Sharp AR-205 = 10 # shifter # Sharp AR-206 = 11 # shifter , duplex # Sharp AR-207 = 12 # shifter , duplex, R-SPF, E-sort # Sharp AR-F201 = 13 # shifter , FAX, SDF # # Sharp AR-160/200 Series PCL5e : PCL 5e # Sharp AR-160/200 Series PCL6 : PCL XL # Sharp AR-160/200 Series PS2 : Postscript # use the HP4si as a starting point for PostScript and PCL tc=hp5si pjl pcl ps snmp_monitor sync=snmp waitend=snmp pagecount=snmp pjl_vars_set= [ COPIES=RANGE;1,999 ORIENTATION=PORTRAIT!ENUMERATED;PORTRAIT,LANDSCAPE BINDING=ENUMERATED;SHORTEDGE,LONGEDGE PAPER=LETTER!ENUMERATED;LETTER,LEGAL,LEDGER,FOOLSCAP,A3,A4,A5,B4,B5,INVOICE MEDIASOURCE=AUTO!ENUMERATED;AUTO,TRAY1,TRAY2,TRAY3,TRAY4,MANUALFEED RESOLUTION=ENUMERATED;300,600 RET=ENUMERATED;OFF,ON ECONOMODE=ENUMERATED;OFF,ON PAGEPROTECT=ENUMERATED;OFF,ON ] # Copies: # copies=[n] # Standard options: # portrait, landscape pjl_portrait = [ orientation=portrait ] pjl_landscape = [ orientation=landscape ] # # duplex, duplexshort, sduplex, simplex # ADDED: book = duplex, tablet = sduplex # # Note: 'longedge' is the direction in which the document is to # be viewed, not the edge on which you do the binding. pjl_book = [ duplex ] pjl_tablet = [ duplexshort ] pjl_sduplex = [ duplexshort ] pjl_lduplex = [ duplex ] pjl_simplex = @PJL SET DUPLEX = OFF pjl_duplexshort = @PJL SET DUPLEX = ON @PJL SET BINDING = LONGEDGE pjl_duplex = @PJL SET DUPLEX = ON @PJL SET BINDING = SHORTEDGE # # Paper selection: paper=[...] or just use the paper name: # letter legal ... # pjl_letter = [ paper=letter ] pjl_legal = [ paper=legal ] pjl_ledger = [ paper=ledger ] pjl_foolscap = [ paper=foolscap ] pjl_a3 = [ paper=a3 ] pjl_a4 = [ paper=a4 ] pjl_a5 = [ paper=a5 ] pjl_b4 = [ paper=b4 ] pjl_b5 = [ paper=b5 ] pjl_invoice = [ paper=invoice ] # # Standard Input Tray options: # manual, manualfeed # intray1, intray2, .... # ADDED: inauto # pjl_manual = [ mediasource=manualfeed ] pjl_manualfeed = [ mediasource=manualfeed ] pjl_inauto = [ mediasource=auto ] pjl_intray1 = [ mediasource=tray1 ] pjl_intray2 = [ mediasource=tray2 ] pjl_intray3 = [ mediasource=tray3 ] pjl_intray4 = [ mediasource=tray4 ] # Note: only one output tray # # Resolution: # resolution=[300,600] # # image enhancement: image_enhnance=[on,off] # pjl_image_enhance = [ ret=\%s{image_enhance} ] # Toner Save: # economode=[on,off] # # Page Protect # pageprotect=[on,off] # pjl_user_opts = [ portrait landscape book tablet sduplex lduplex simplex duplex duplexshort letter legal ledger foolscap a3 a4 a5 b4 b5 invoice manual manualfeed inauto intray1 intray2 intray3 intray4 image_enhance copies orientation binding paper mediasource resolution ret economode pageprotect ] pcl_user_opts += [ ] # PRINTER % - Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount [ ar-160 ar-161 ar-162 ar-162s ar-163 ar-164 ar-200 ar-200s ar-201 ar-205 ar-206 ar-207 ar-f201 ] tc=panther # # Sharp Printers # Only a smple of these have been tested. # The information is based on MIB dumps and information supplied by Sharp # Patrick Powell, 2 Dec 2003 # # PRINTER % - Sharp Generic Cougar Family, PS and PCL, uses SNMP for status and pagecount [ cougar ] # # # # Cougar Printer Model Names from MIB # # # %Model # Sharp AR-335 = 1 # Sharp AR-336 = 2 # Sharp AR-337/S337 = 3 # Sharp AR-405 = 4 # Sharp AR-407 = 5 # Sharp AR-505/S505 = 6 # Sharp AR-507/S507 = 7 # Sharp AR-250 = 8 # Sharp AR-280 = 9 # Sharp AR-281 = 10 # Sharp AR-285 = 11 # Sharp AR-286 = 12 # # # # # Cougar Printer Driver Names installed on PC # # # %Driver # Sharp AR-335 PCL5e (1) : PCL 5e # Sharp AR-335 PCL6 (1) : PCL XL # Sharp AR-335 PS (1) : Postscript # Sharp AR-336 PCL5e (2) : PCL 5e # Sharp AR-336 PCL6 (2) : PCL XL # Sharp AR-336 PS (2) : Postscript # Sharp AR-337 PCL5e (3) : PCL 5e # Sharp AR-337 PCL6 (3) : PCL XL # Sharp AR-337 PS (3) : Postscript # Sharp AR-405 PCL5e (4) : PCL 5e # Sharp AR-405 PCL6 (4) : PCL XL # Sharp AR-405 PS (4) : Postscript # Sharp AR-407 PCL5e (5) : PCL 5e # Sharp AR-407 PCL6 (5) : PCL XL # Sharp AR-407 PS (5) : Postscript # Sharp AR-505 PCL5e (6) : PCL 5e # Sharp AR-505 PCL6 (6) : PCL XL # Sharp AR-505 PS (6) : Postscript # Sharp AR-507 PCL5e (7) : PCL 5e # Sharp AR-507 PCL6 (7) : PCL XL # Sharp AR-507 PS (7) : Postscript # Sharp AR-250 PCL5e (8) : PCL 5e # Sharp AR-250 PCL6 (8) : PCL XL # Sharp AR-250 PS (8) : Postscript # Sharp AR-280 PCL5e (9) : PCL 5e # Sharp AR-280 PCL6 (9) : PCL XL # Sharp AR-280 PS (9) : Postscript # Sharp AR-281 PCL5e (10) : PCL 5e # Sharp AR-281 PCL6 (10) : PCL XL # Sharp AR-281 PS (10) : Postscript # Sharp AR-285 PCL5e (11) : PCL 5e # Sharp AR-285 PCL6 (11) : PCL XL # Sharp AR-285 PS (11) : Postscript # Sharp AR-286 PCL5e (12) : PCL 5e # Sharp AR-286 PCL6 (12) : PCL XL # Sharp AR-286 PS (12) : Postscript # use the HP4si as a starting point for PostScript and PCL tc=hp5si pjl pcl ps snmp_monitor sync=snmp waitend=snmp pagecount=snmp pjl_vars_set= [ COPIES=RANGE;1,999 COLLATE=ENUMERATED;OFF,ON ORIENTATION=PORTRAIT!ENUMERATED;PORTRAIT,LANDSCAPE JOBORDER=ENUMERATED;ORDER1TON,ORDERNTO1 OUTFACEMODE=ENUMERATED;FACEUP,FACEDOWN BINDING=ENUMERATED;SHORTEDGE,LONGEDGE JOBBOOKLET=ENUMERATED;OFF,ON INTERLEAVE=ENUMERATED;OFF,BLANK,ON INTERLEAVESRC=ENUMERATED;TRAY1,TRAY2,TRAY3,TRAY4,TRAY5,LCC,MANUALFEED,MANUALENV PAPER=LETTER!ENUMERATED;LETTER,LEGAL,LEDGER,FOOLSCAP,A3,A4,A5,B4,B5 MEDIASOURCE=ENUMERATED;AUTO,TRAY1,TRAY2,TRAY3,TRAY4,TRAY5,LLC,MANUALFEED,MANUALENV OUTTRAY=ENUMERATED;TRAY1,TRAY2,TRAY3,TRAY4 RESOLUTION=ENUMERATED;300,600 RET=ENUMERATED;OFF,ON ECONOMODE=ENUMERATED;OFF,ON JOBSTAPLE=ENUMERATED;STAPLENON,STAPLELEFT,STAPLEBOTH TANDEM=ENUMERATED;OFF,ON ACCOUNTNUMBER=STRING; SUSPEND=ENUMERATED;OFF,CONFIDENTIAL SUSPENDKEY=STRING; JOBNAME=STRING; USERNAME=STRING; ] # Copies: # copies=[n] - n copies # # Copy Collation: # collate=[on,off] # # Standard options: # portrait, landscape pjl_portrait = [ orientation=portrait ] pjl_landscape = [ orientation=landscape ] # # duplex, duplexshort, sduplex, simplex # ADDED: book = duplex, tablet = sduplex # # Note: 'longedge' is the direction in which the document is to # be viewed, not the edge on which you do the binding. pjl_book = [ duplex ] pjl_tablet = [ duplexshort ] pjl_sduplex = [ duplexshort ] pjl_lduplex = [ duplex ] pjl_simplex = @PJL SET DUPLEX = OFF pjl_duplexshort = @PJL SET DUPLEX = ON @PJL SET BINDING = LONGEDGE pjl_duplex = @PJL SET DUPLEX = ON @PJL SET BINDING = SHORTEDGE # Page Order: # order: joborder=[order1ton,ordernto1] # normalorder = order1ton # reverseorder = order1ton # pjl_normalorder = [ joborder=order1ton ] pjl_reverseorder = [ joborder=ordernto1 ] # Face Up/Down # facing: outfacemode=[faceup,facedown] # faceup = outfacemode=faceup # facedown = outfacemode=facedown # pjl_faceup = [ outfacemode=faceup ] pjl_facedown = [ outfacemode=facedown ] # Booklet # booklet=[on,off] pjl_booklet = [ jobbooklet=\%s{booklet} ] # # Inserts: # insert_off = no insert # Printed insert: # insert_printed=[tray1, ... ] - input tray source # Blank insert: # insert_blank=[tray1, ... ] - input tray source # pjl_insert_off = [ interleave=off ] pjl_insert_printed = [ interleave=on interleavesrc=\%s{insert_printed} ] pjl_insert_blank = [ interleave=blank interleavesrc=\%s{insert_blank} ] # # Paper selection: paper=[...] or just use the paper name: # letter legal ... # pjl_letter = [ paper=letter ] pjl_legal = [ paper=legal ] pjl_ledger = [ paper=ledger ] pjl_foolscap = [ paper=foolscap ] pjl_a3 = [ paper=a3 ] pjl_a4 = [ paper=a4 ] pjl_a5 = [ paper=a5 ] pjl_b4 = [ paper=b4 ] pjl_b5 = [ paper=b5 ] # # Input Tray: Standard options # manual, manualfeed # intray1, intray2, .... # ADDED: inauto, inlcc pjl_manual = [ mediasource=manualfeed ] pjl_manualfeed = [ mediasource=manualfeed ] pjl_inauto = [ mediasource=auto ] pjl_intray1 = [ mediasource=tray1 ] pjl_intray2 = [ mediasource=tray2 ] pjl_intray3 = [ mediasource=tray3 ] pjl_intray4 = [ mediasource=tray4 ] pjl_inlcc = [ mediasource=lcc ] pcl_manual =\033&l2H pcl_manualfeed =\033&l2H pcl_inauto=\033&l7H pcl_intray1=\033&l1H pcl_intray2=\033&l4H pcl_intray3=\033&l5H pcl_intray4=\033&l20H pcl_inlcc = \033&22H # # Output Tray is supported in Printer # # outbin=[tray1,tray2,...] # outtray=[tray1,tray2,...] # Added: # outupper outtray=tray1 # outoffset outtray=tray3 # outtray1 outtray=tray1, outtray2 outtray=tray2, etc. # outbin1 outtray=tray1, outbin2 outtray=tray2, etc. # pjl_outbin = [ outtray=\%s{outbin} ] pjl_outtray = [ outtray=\%s{outtray} ] pjl_outupper = [ outtray=tray1 ] pjl_outoffset = [ outtray=tray3 ] pjl_outtray1 = [ outtray=tray1 ] pjl_outtray2 = [ outtray=tray2 ] pjl_outtray3 = [ outtray=tray3 ] pjl_outtray4 = [ outtray=tray4 ] pjl_outbin1 = [ outtray=tray1 ] pjl_outbin2 = [ outtray=tray2 ] pjl_outbin3 = [ outtray=tray3 ] pjl_outbin4 = [ outtray=tray4 ] # Resolution # resolution=[600] # # Image Enhancement: image_enhnance=[on,off] # pjl_image_enhance = [ ret=\%s{image_enhance} ] # Toner Save: # economode=[on,off] # # Staple is supported as a Finisher Option # # staple=[none, left right, 2left, 2right, 2top] # pjl_staple = [ staple_\%s{staple} ] pjl_staple_none = [ jobstaple=staplenon ] pjl_staple_left = [ jobstaple=stapleleft binding=shortedge outtray=tray3 ] pjl_staple_right = [ jobstaple=stapleleft binding=rightedge outtray=tray3 ] pjl_staple_2left = [ jobstaple=stapleboth binding=shortedge outtray=tray3 ] pjl_staple_2right = [ jobstaple=stapleboth binding=rightedge outtray=tray3 ] pjl_staple_2top = [ jobstaple=stapleboth binding=longedge outtray=tray3 ] # Account Number: # accountnumber=[value] # # PIN Printing is supported in printer # Note: I do not have the slightest idea what this is. # # pin_off - turns PIN off # pin_confidential=key - sets suspend to CONFIDENTIAL, supplies key # pjl_pin_off = [ suspend=off ] pjl_pin_confidential = [ suspend=confidential suspendkey=\%s{pin_confidential} ] # # Firmware Copy Splitting ( across MFPs ) is supported # copysplit=[on,off] # translates to tandem=[on,off] # pjl_copysplit = [ tandem=\%s{copysplit} ] # # Job Name is supported # # jobname=name # User Name ( Owner ) is supported # username=name pjl_user_opts = [ portrait landscape book tablet sduplex lduplex simplex duplex duplexshort normalorder reverseorder faceup facedown booklet insert_off insert_printed insert_blank letter legal ledger foolscap a3 a4 a5 b4 b5 manual manualfeed inauto intray1 intray2 intray3 intray4 inlcc outbin outtray outupper outoffset outtray1 outtray2 outtray3 outtray4 outbin1 outbin2 outbin3 outbin4 image_enhance staple staple_none staple_left staple_right staple_2left staple_2right staple_2top pin_off pin_confidential copysplit copies collate orientation joborder outfacemode binding jobbooklet interleave interleavesrc paper mediasource outtray resolution ret economode jobstaple tandem accountnumber suspend suspendkey jobname username ] pcl_user_opts = [ manual manualfeed inauto intray1 intray2 intray3 intray4 inlcc ] # PRINTER % - Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount [ ar-335 ar-336 ar-337 ar-s337 ar-405 ar-407 ar-505 ar-s505 ar-507 ar-s507 ar-250 ar-280 ar-281 ar-285 ar-286 ] tc=cougar # # Sharp Printers # Only a smple of these have been tested. # The information is based on MIB dumps and information supplied by Sharp # Patrick Powell, 2 Dec 2003 # The PostScript for these printers is basically that of the HP5si # # PRINTER % - Sharp Generic Leopard Family, PS and PCL, uses SNMP for status and pagecount [ leopard ] # # # # Leopard Printer Model Names from MIB # # # %Model # Sharp AR-235 = 1 # Sharp AR-275 = 2 # Sharp AR-N275 = 3 # Sharp AR-M208 = 4 # 20ppm raster only version # # # # # Leopard Printer Driver Names from Printer Folder # # # %Driver # Sharp AR-235 PCL5e (1) : PCL 5e # Sharp AR-235 PCL6 (1) : PCL XL # Sharp AR-235 PS (1) : Postscript # Sharp AR-275 PCL5e (2) : PCL 5e # Sharp AR-275 PCL6 (2) : PCL XL # Sharp AR-275 PS (2) : Postscript # Sharp AR-N275 PCL5e (3) : PCL 5e # Sharp AR-N275 PCL6 (3) : PCL XL # Sharp AR-N275 PS (3) : Postscript # # use the HP4si as a starting point for PostScript and PCL tc=hp5si pjl pcl ps snmp_monitor sync=snmp waitend=snmp pagecount=snmp pjl_vars_set= [ COPIES=RANGE;1,999 RIPONCE=ENUMERATED;OFF,ON ORIENTATION=PORTRAIT!ENUMERATED;PORTRAIT,LANDSCAPE BINDING=ENUMERATED;SHORTEDGE,LONGEDGE INTERLEAVE=ENUMERATED;OFF,BLANK,ON INTERLEAVESRC=ENUMERATED;TRAY1,TRAY2,TRAY3,TRAY4,TRAY5,LCC,MANUALFEED,MANUALENV PAPER=LETTER!ENUMERATED;LETTER,LEGAL,LEDGER,EXECUTIVE,FOOLSCAP,FOLIO,A3,A4,A5,A6,B4,B5,B6,C5,8K,16K,DL,INVOICE,COM10 MEDIASOURCE=ENUMERATED;AUTO,TRAY1,TRAY2,TRAY3,TRAY4,TRAY5,LLC,MANUALFEED,MANUALENV OUTTRAY=ENUMERATED;TRAY1,TRAY2,TRAY3,TRAY4 RESOLUTION=ENUMERATED;300,600 RET=ENUMERATED;OFF,ON ECONOMODE=ENUMERATED;OFF,ON PAGEPROTECT=ENUMERATED;OFF,ON JOBSTAPLE=ENUMERATED;STAPLENON,STAPLELEFT ACCOUNTNUMBER=STRING; JOBNAME=STRING; USERNAME=STRING; ] # Copies: # copies=[n] - n copies # # Copy Collation: # collate=[on,off] # pjl_collate = [ riponce=\%s{collate} ] # Standard options: # portrait, landscape # pjl_portrait = [ orientation=portrait ] pjl_landscape = [ orientation=landscape ] # Standard options: # duplex, duplexshort, sduplex, simplex # ADDED: book = duplex, tablet = sduplex # # Note: 'longedge' is the direction in which the document is to # be viewed, not the edge on which you do the binding. pjl_book = [ duplex ] pjl_tablet = [ duplexshort ] pjl_sduplex = [ duplexshort ] pjl_lduplex = [ duplex ] pjl_simplex = @PJL SET DUPLEX = OFF pjl_duplexshort = @PJL SET DUPLEX = ON @PJL SET BINDING = LONGEDGE pjl_duplex = @PJL SET DUPLEX = ON @PJL SET BINDING = SHORTEDGE # # Inserts: # insert_off = no insert # Printed insert: # insert_printed=[tray1, ... ] - input tray source # Blank insert: # insert_blank=[tray1, ... ] - input tray source # pjl_insert_off = [ interleave=off ] pjl_insert_printed = [ interleave=on interleavesrc=\%s{insert_printed} ] pjl_insert_blank = [ interleave=blank interleavesrc=\%s{insert_blank} ] # # Paper selection: paper=[...] or just use the paper name: # letter legal ... # pjl_letter = [ paper=letter ] pjl_legal = [ paper=legal ] pjl_ledger = [ paper=ledger ] pjl_executive = [ paper=executive ] pjl_foolscap = [ paper=foolscap ] pjl_folio = [ paper=folio ] pjl_a3 = [ paper=a3 ] pjl_a4 = [ paper=a4 ] pjl_a5 = [ paper=a5 ] pjl_a6 = [ paper=a6 ] pjl_b4 = [ paper=b4 ] pjl_b5 = [ paper=b5 ] pjl_b6 = [ paper=b6 ] pjl_c5 = [ paper=c5 ] pjl_8k = [ paper=8k ] pjl_16k = [ paper=16k ] pjl_dl = [ paper=dl ] pjl_invoice = [ paper=invoice ] pjl_com10 = [ paper=com10 ] # # Input Tray: Standard options # manual, manualfeed # intray1, intray2, .... # ADDED: inauto, inlcc pjl_manual = [ mediasource=manualfeed ] pjl_manualfeed = [ mediasource=manualfeed ] pjl_inauto = [ mediasource=auto ] pjl_intray1 = [ mediasource=tray1 ] pjl_intray2 = [ mediasource=tray2 ] pjl_intray3 = [ mediasource=tray3 ] pjl_intray4 = [ mediasource=tray4 ] pjl_inenvelope = [ mediasource=manualenv ] pcl_manual =\033&l2H pcl_manualfeed =\033&l2H pcl_inauto=\033&l7H pcl_intray1=\033&l1H pcl_intray2=\033&l4H pcl_intray3=\033&l5H pcl_intray4=\033&l20H pcl_inenvelope = \033&8H # # Output Tray is supported in Printer # # outbin=[tray1,tray2,...] # outtray=[tray1,tray2,...] # Added: # outupper outtray=tray1 # outoffset outtray=tray3 # outtray1 outtray=tray1, outtray2 outtray=tray2, etc. # outbin1 outtray=tray1, outbin2 outtray=tray2, etc. # pjl_outbin = [ outtray=\%s{outbin} ] pjl_outtray = [ outtray=\%s{outtray} ] pjl_outcenter = [ outtray=tray1 ] pjl_outupper = [ outtray=tray2 ] pjl_outoffset = [ outtray=tray3 ] pjl_outtray1 = [ outtray=tray1 ] pjl_outtray2 = [ outtray=tray2 ] pjl_outtray3 = [ outtray=tray3 ] pjl_outtray4 = [ outtray=tray4 ] pjl_outbin1 = [ outtray=tray1 ] pjl_outbin2 = [ outtray=tray2 ] pjl_outbin3 = [ outtray=tray3 ] pjl_outbin4 = [ outtray=tray4 ] # Resolution # resolution=[300,600] # # Image Enhancement: image_enhnance=[on,off] # pjl_image_enhance = [ ret=\%s{image_enhance} ] # Toner Save: # economode=[on,off] # Page Protect # pageprotect=[on,off] # # # Staple is supported as a Finisher Option # # staple=[none, left ] # pjl_staple = [ staple_\%s{staple} ] pjl_staple_none = [ jobstaple=staplenon ] pjl_staple_left = [ jobstaple=stapleleft binding=shortedge outtray=tray3 ] # Account Number: # accountnumber=[value] # # Job Name is supported # jobname=[name] # # User Name ( Owner ) is supported # username=[name] pjl_user_opts = [ collate portrait landscape book tablet sduplex simplex lduplex simplex duplex duplexshort insert_off insert_printed insert_blank letter legal ledger executive foolscap folio a3 a4 a5 a6 b4 b5 b6 c5 8k 16k dl invoice com10 manual manualfeed inauto intray1 intray2 intray3 intray4 inenvelope outbin outtray outcenter outupper outoffset outtray1 outtray2 outtray3 outtray4 outbin1 outbin2 outbin3 outbin4 image_enhance staple staple_none staple_left copies riponce orientation binding interleave interleavesrc paper mediasource outtray resolution ret economode pageprotect jobstaple accountnumber jobname username ] pcl_user_opts = [ manual manualfeed inauto intray1 intray2 intray3 intray4 inenvelope ] # PRINTER % - Sharp %s, Leopard Family, PS and PCL, uses SNMP for status and pagecount [ ar-235 ar-275 ar-n275 ar-m208 ] tc=leopard # # Sharp Printers # Only a smple of these have been tested. # The information is based on MIB dumps and information supplied by Sharp # Patrick Powell, 2 Dec 2003 # The PostScript for these printers is basically that of the HP5si # # PRINTER % - Sharp Generic Tiger Family, PS and PCL, uses SNMP for status and pagecount [ tiger ] # # # # Tiger Printer Model Names from MIB # # # %Model # Sharp AR-P350 = 1 # Sharp AR-M350 = 2 # Sharp AR-M350U = 3 # Sharp AR-M350N = 4 # Sharp AR-P450 = 5 # Sharp AR-M450 = 6 # Sharp AR-M450U = 7 # Sharp AR-M450N = 8 # # # # # Tiger Printer Driver Names from Printer Folder # # # %Driver # Sharp AR-P350 PCL5e (1) : PCL 5e # Sharp AR-P350 PCL6 (1) : PCL XL # Sharp AR-P350 PS (1) : Postscript # Sharp AR-M350 PCL5e (2,3,4) : PCL 5e # Sharp AR-M350 PCL6 (2,3,4) : PCL XL # Sharp AR-M350 PS (2,3,4) : Postscript # Sharp AR-P450 PCL5e (5) : PCL 5e # Sharp AR-P450 PCL6 (5) : PCL XL # Sharp AR-P450 PS (5) : Postscript # Sharp AR-M450 PCL5e (6,7,8) : PCL 5e # Sharp AR-M450 PCL6 (6,7,8) : PCL XL # Sharp AR-M450 PS (6,7,8) : Postscript # # use the HP4si as a starting point for PostScript and PCL tc=hp5si pjl pcl ps snmp_monitor sync=snmp waitend=snmp pagecount=snmp pjl_vars_set= [ COPIES=RANGE;1,999 COLLATE=ENUMERATED;OFF,ON ORIENTATION=PORTRAIT!ENUMERATED;PORTRAIT,LANDSCAPE REVERSEIMAGE=ENUMERATED;OFF,ON BINDING=ENUMERATED;SHORTEDGE,LONGEDGE JOBBOOKLET=ENUMERATED;OFF,ON INTERLEAVE=ENUMERATED;OFF,BLANK,ON PAPERTYPE=ENUMERATED;TRANSPARENCY INTERLEAVETYPE=ENUMERATED;TRAY1,TRAY2,TRAY3,TRAY4,LCC MARGINSHIFT=RANGE;0,2000 PAPER=LETTER!ENUMERATED;LETTER,LEGAL,LEDGER,EXECUTIVE,FOOLSCAP,FOLIO,A3,A4,A5,B4,B5,JISB6,C5,INVOICE,DL,COM10,MONARCH,JPOST MEDIASOURCE=AUTO!ENUMERATED;AUTO,TRAY1,TRAY2,TRAY3,TRAY4,LCC OUTTRAY=ENUMERATED;TRAY1,TRAY2,TRAY3,TRAY4,TRAY5,TRAY6,TRAY7,TRAY8,TRAY9,TRAY10,TRAY11 RESOLUTION=ENUMERATED;300,600 RET=ENUMERATED;OFF,ON ECONOMODE=ENUMERATED;OFF,ON JOBSTAPLE=ENUMERATED;STAPLENON,STAPLELEFT,STAPLEBOTH SUSPEND=ENUMERATED;OFF,CONFIDENTIAL,HOLD,SAMPLE SUSPENDKEY=STRING; ACCOUNTNUMBER=STRING; JOBNAME=STRING; USERNAME=STRING; ] # Copies: # copies=[n] - n copies # # Copy Collation: # collate=[on,off] # # Standard options: # portrait, landscape # ADDED: reverse_portrait, reverse_landscape pjl_portrait = [ orientation=portrait reverseimage=off ] pjl_landscape = [ orientation=landscape reverseimage=off ] pjl_reverse_portrait = [ orientation=portrait reverseimage=on ] pjl_reverse_landscape = [ orientation=landscape reverseimage=on ] # Standard options: # duplex, duplexshort, sduplex, simplex # ADDED: book = duplex, tablet = sduplex # # Note: 'longedge' is the direction in which the document is to # be viewed, not the edge on which you do the binding. pjl_book = [ duplex ] pjl_tablet = [ duplexshort ] pjl_sduplex = [ duplexshort ] pjl_lduplex = [ duplex ] pjl_simplex = @PJL SET DUPLEX = OFF pjl_duplexshort = @PJL SET DUPLEX = ON @PJL SET BINDING = LONGEDGE pjl_duplex = @PJL SET DUPLEX = ON @PJL SET BINDING = SHORTEDGE # Booklet # booklet=[on,off] pjl_booklet = [ jobbooklet=\%s{booklet} ] # # Inserts: # insert_off = no insert # Printed insert: # insert_printed=[tray1, ... ] - input tray source # Blank insert: # insert_blank=[tray1, ... ] - input tray source # pjl_insert_off = [ interleave=off ] pjl_insert_printed = [ interleave=on papertype=transparency interleavetype=\%s{insert_printed} ] pjl_insert_blank = [ interleave=blank papertype=transparency interleavetype=\%s{insert_blank} ] # Margin Shift # marginshift=[n] - shifts directly # margin=[none,small,medium,large] shifts [0,240,472,708] respectively pjl_margin = [ margin_\%s{margin} ] pjl_margin_none = [ marginshift=0 ] pjl_margin_small = [ marginshift=240 ] pjl_margin_medium = [ marginshift=472 ] pjl_margin_large = [ marginshift=708 ] # # Paper selection: paper=[...] or just use the paper name: # letter legal ... # pjl_letter = [ paper=letter ] pjl_legal = [ paper=legal ] pjl_ledger = [ paper=ledger ] pjl_executive = [ paper=executive ] pjl_foolscap = [ paper=foolscap ] pjl_folio = [ paper=folio ] pjl_a3 = [ paper=a3 ] pjl_a4 = [ paper=a4 ] pjl_a5 = [ paper=a5 ] pjl_b4 = [ paper=b4 ] pjl_b5 = [ paper=b5 ] pjl_jisb6 = [ paper=jisb6 ] pjl_c5 = [ paper=c5 ] pjl_invoice = [ paper=invoice ] pjl_dl = [ paper=dl ] pjl_com10 = [ paper=com10 ] pjl_monarch = [ paper=monarch ] pjl_jpost = [ paper=jpost ] # # Input Tray: Standard options # manual, manualfeed # intray1, intray2, .... # ADDED: inauto, inlcc # pjl_manual = [ mediasource=manualfeed ] # pjl_manualfeed = [ mediasource=manualfeed ] pjl_inauto = [ mediasource=auto ] pjl_intray1 = [ mediasource=tray1 ] pjl_intray2 = [ mediasource=tray2 ] pjl_intray3 = [ mediasource=tray3 ] pjl_intray4 = [ mediasource=tray4 ] pjl_inlcc = [ mediasource=lcc ] pcl_manual =\033&l2H pcl_manualfeed =\033&l2H pcl_inauto=\033&l7H pcl_intray1=\033&l1H pcl_intray2=\033&l4H pcl_intray3=\033&l5H pcl_intray4=\033&l20H pcl_lcc = \033&22H # # Output Tray is supported in Printer # # outbin=[tray1,tray2,...] # outtray=[tray1,tray2,...] # Added: # outupper outtray=tray1 # outoffset outtray=tray3 # outtray1 outtray=tray1, outtray2 outtray=tray2, etc. # outbin1 outtray=tray1, outbin2 outtray=tray2, etc. # Also the (out) center, left, top, offset, offset_saddle, mail_top, # mail1, mail2, ... mail7, tray1, ..., tray11 pjl_outbin = [ outtray=\%s{outbin} ] pjl_outtray = [ outtray=\%s{outtray} ] pjl_outcenter = [ outtray=tray1 ] pjl_outleft = [ outtray=tray2 ] pjl_outupper = [ outtray=tray4 ] pjl_outoffset = [ outtray=tray5 ] pjl_outoffset_saddle = [ outtray=tray2 ] pjl_outmail_top = [ outtray=tray4 ] pjl_outmail1 = [ outtray=tray5 ] pjl_outmail2 = [ outtray=tray6 ] pjl_outmail3 = [ outtray=tray7 ] pjl_outmail4 = [ outtray=tray8 ] pjl_outmail5 = [ outtray=tray9 ] pjl_outmail6 = [ outtray=tray10 ] pjl_outmail7 = [ outtray=tray11 ] pjl_outbin1 = [ outtray=tray1 ] pjl_outbin2 = [ outtray=tray2 ] pjl_outbin3 = [ outtray=tray3 ] pjl_outbin4 = [ outtray=tray4 ] pjl_outbin5 = [ outtray=tray5 ] pjl_outbin6 = [ outtray=tray6 ] pjl_outbin7 = [ outtray=tray7 ] pjl_outbin8 = [ outtray=tray8 ] pjl_outbin9 = [ outtray=tray9 ] pjl_outbin10 = [ outtray=tray10 ] pjl_outbin11 = [ outtray=tray11 ] pjl_outtray1 = [ outtray=tray1 ] pjl_outtray1 = [ outtray=tray1 ] pjl_outtray2 = [ outtray=tray2 ] pjl_outtray3 = [ outtray=tray3 ] pjl_outtray4 = [ outtray=tray4 ] pjl_outtray5 = [ outtray=tray5 ] pjl_outtray6 = [ outtray=tray6 ] pjl_outtray7 = [ outtray=tray7 ] pjl_outtray8 = [ outtray=tray8 ] pjl_outtray9 = [ outtray=tray9 ] pjl_outtray10 = [ outtray=tray10 ] pjl_outtray11 = [ outtray=tray11 ] pcl_outcenter = [ outbin1 ] pcl_outleft = [ outbin2 ] pcl_outupper = [ outbin4 ] pcl_outoffset = [ outbin5 ] pcl_outoffset_saddle = [ outbin2 ] pcl_outmail_top = [ outbin4 ] pcl_outmail1 = [ outbin5 ] pcl_outmail2 = [ outbin6 ] pcl_outmail3 = [ outbin7 ] pcl_outmail4 = [ outbin8 ] pcl_outmail5 = [ outbin9 ] pcl_outmail6 = [ outbin10 ] pcl_outmail7 = [ outbin11 ] #pcl_outbin1 = pcl_outbin2 = \033&l2G pcl_outbin3 = \033&l3G pcl_outbin4 = \033&l1G pcl_outbin5 = \033&l4G pcl_outbin6 = \033&l5G pcl_outbin7 = \033&l6G pcl_outbin8 = \033&l7G pcl_outbin9 = \033&l8G pcl_outbin10 = \033&l9G pcl_outbin11 = \033&l10G #pcl_outtray1 = pcl_outtray2 = \033&l2G pcl_outtray3 = \033&l3G pcl_outtray4 = \033&l1G pcl_outtray5 = \033&l4G pcl_outtray6 = \033&l5G pcl_outtray7 = \033&l6G pcl_outtray8 = \033&l7G pcl_outtray9 = \033&l8G pcl_outtray10 = \033&l9G pcl_outtray11 = \033&l10G # # Resolution: # resolution=[300,600] # # image enhancement: image_enhnance=[on,off] # pjl_image_enhance = [ ret=\%s{image_enhance} ] # Toner Save: # economode=[on,off] # # # Staple is supported as a Finisher Option # # staple=[none, left, right, top, 2left, 2right, 2top ] pjl_staple = [ staple_\%s{staple} ] pjl_staple_none = [ jobstaple=staplenon ] pjl_staple_left = [ jobstaple=stapleleft binding=shortedge outtray=tray2 ] pjl_staple_right = [ jobstaple=stapleleft binding=rightedge outtray=tray2 ] pjl_staple_top = [ jobstaple=stapleleft binding=longedge outtray=tray2 ] pjl_staple_2left = [ jobstaple=stapleboth binding=shortedge outtray=tray2 ] pjl_staple_2right = [ jobstaple=stapleboth binding=rightedge outtray=tray2 ] pjl_staple_2top = [ jobstaple=stapleboth binding=longedge outtray=tray2 ] # # Hole Punch is supported as a Finisher Option # punch=[none,left] pjl_punch = [ punch_\%s{punch} ] pjl_punch_none = @PJL SET PUNCH=OFF pjl_punch_left = @PJL SET PUNCH=ON # # Account Number: # accountnumber=[value] # PIN Printing is supported in printer # # # PIN Printing is supported in printer # pjl_pin_off = [ suspend=off ] pjl_pin_confidential = [ suspend=confidential suspendkey=\%s{pin_confidential} ] pjl_pin_hold = [ suspend=confidential suspendkey=\%s{pin_hold} ] pjl_pin_sample = [ suspend=confidential suspendkey=\%s{pin_sample} ] # Job Name is supported # jobname=[name] # # User Name ( Owner ) is supported # username=[name] pjl_user_opts = [ portrait landscape reverse_portrait reverse_landscape book tablet sduplex simplex lduplex simplex duplex duplexshort booklet insert_off insert_printed insert_blank margin margin_none margin_small margin_medium margin_large letter legal ledger executive foolscap folio a3 a4 a5 b4 b5 jisb6 c5 invoice dl com10 monarch jpost inauto intray1 intray2 intray3 intray4 inlcc outbin outtray outcenter outleft outupper outoffset outoffset_saddle outmail_top outmail1 outmail2 outmail3 outmail4 outmail5 outmail6 outmail7 outbin1 outbin2 outbin3 outbin4 outbin5 outbin6 outbin7 outbin8 outbin9 outbin10 outbin11 outtray1 outtray1 outtray2 outtray3 outtray4 outtray5 outtray6 outtray7 outtray8 outtray9 outtray10 outtray11 image_enhance staple staple_none staple_left staple_right staple_top staple_2left staple_2right staple_2top pin_off pin_confidential pin_hold pin_sample copies collate orientation reverseimage binding jobbooklet interleave papertype interleavetype marginshift paper mediasource outtray resolution ret economode jobstaple punch punch_none punch_left suspend suspendkey accountnumber jobname username ] pcl_user_opts = [ manual manualfeed inauto intray1 intray2 intray3 intray4 lcc outcenter outleft outupper outoffset outoffset_saddle outmail_top outmail1 outmail2 outmail3 outmail4 outmail5 outmail6 outmail7 outbin2 outbin3 outbin4 outbin5 outbin6 outbin7 outbin8 outbin9 outbin10 outbin11 outtray2 outtray3 outtray4 outtray5 outtray6 outtray7 outtray8 outtray9 outtray10 outtray11 ] # PRINTER % - Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount [ ar-p350 ar-m350 ar-m350u ar-m350n ar-p450 ar-m450 ar-m450u ar-m450n ] tc=tiger # # Sharp Printers # Only a smple of these have been tested. # The information is based on MIB dumps and information supplied by Sharp # Patrick Powell, 2 Dec 2003 # The PostScript for these printers is basically that of the HP5si # # PRINTER % - Sharp Generic Toshiba650 Family, PS and PCL, uses SNMP for status and pagecount [ toshiba650 ] # # # # # Toshiba 650/800 Printer Model Names from MIB # # # %Model # Sharp AR-650/800 Printer Board = 1 # Controller Board does not distinquish model # Sharp AR-650 = 2 # Alias Name for 65ppm model # Sharp AR-800 = 3 # Alias Name for 80ppm model # # # # # Toshiba 650/800 Printer Driver Names installed on PC # # # %Driver # Sharp AR-650/800 PCL5e : PCL 5e # Sharp AR-650/800 PCLXL : PCL XL # Sharp AR-650/800 PDL # # use the HP4si as a starting point for PostScript and PCL tc=hp5si pjl pcl ps snmp_monitor sync=snmp waitend=snmp pagecount=snmp pjl_vars_set= [ COPIES=RANGE;1,999 SORTING=ENUMERATED;SORT,GROUP PRINTORDER=ENUMERATED;REVERSE,NORMAL ORIENTATION=PORTRAIT!ENUMERATED;PORTRAIT,LANDSCAPE BINDING=ENUMERATED;SHORTEDGE,LONGEDGE COVERMODE=ENUMERATED;NONE,INSERT,COPY BACKCOVER=ENUMERATED;OFF,ON COVERSOURCE=ENUMERATED;AUTO,UCAS,MCAS,LCAS,MANUAL,MANUALNR,LCC MEDIASOURCE=AUTO!ENUMERATED;AUTO,UCAS,MCAS,LCAS,MANUAL,MANUALNR,LCC SHEET=ENUMERATED;AUTO,UCAS,MCAS,LCAS,MANUAL,MANUALNR,LCC PAPER=LETTER!ENUMERATED;LETTER,LEGAL,LEDGER,A3,A4,A5,A6,B4,B5,FOLIO,STATEMENT,COMPUTER,LEGAL13,SQ85 OUTBIN=ENUMERATED;STD,BIN1,BIN2 RESOLUTION=ENUMERATED;600 SMOOTH=ENUMERATED;OFF,ON FINISH=ENUMERATED;NONE,LEFTUPPER,RIGHTUPPER,LEFT2,UPPER2,SADDLE GROUPCODE=STRING; DOCNAME=STRING; USRNAME=STRING; ] # Copies: # copies=[n] - n copies # # Copy Collation: # collate=[on,off] or sorting=[sort,group] pjl_collate = [ collate_\%s{collate} ] pjl_collate_on = [ sorting=sort ] pjl_collate_off = [ sorting=group ] # # Standard options: # portrait, landscape pjl_portrait = [ orientation=portrait ] pjl_landscape = [ orientation=landscape ] # Page Order # printorder = [normal, reverse ] # Standard options: # duplex, duplexshort, sduplex, simplex # ADDED: book = duplex, tablet = sduplex # # Note: 'longedge' is the direction in which the document is to # be viewed, not the edge on which you do the binding. pjl_book = [ duplex ] pjl_tablet = [ duplexshort ] pjl_sduplex = [ duplexshort ] pjl_lduplex = [ duplex ] pjl_simplex = @PJL SET DUPLEX = OFF pjl_duplexshort = @PJL SET DUPLEX = ON @PJL SET BINDING = LONGEDGE pjl_duplex = @PJL SET DUPLEX = ON @PJL SET BINDING = SHORTEDGE pjl_duplex_on = @PJL SET DUPLEX = ON # # CoverSheet: # cover_none = no insert # Printed cover: # cover_printed=[tray1, ... ] - input tray source # Blank cover: # cover_blank=[tray1, ... ] - input tray source # pjl_cover_none = [ covermode=none ] pjl_cover_printed = [ covermode=copy coversource=\%s{cover_printed} ] pjl_cover_blank = [ covermode=insert coversource=\%s{cover_blank} ] # # Back CoverSheet: # backcover_none - no back cover # backcover_on=[tray1, ... ] - input tray source # pjl_backcover_none = [ backcover=off ] pjl_backcover_on = [ backcover=on coversource=\%s{backcover_on} ] # # Inserts: # insert_off = no insert # Printed insert: # insert_printed=[tray1, ... ] - input tray source # Blank insert: # insert_blank=[tray1, ... ] - input tray source # #pjl_insert_off = pjl_insert_printed = [ sheet=\%s{insert_printed} ] pjl_insert_blank = [ sheet=\%s{insert_blank} ] # # Paper selection: paper=[...] or just use the paper name: # letter legal ... # pjl_letter = [ paper=letter ] pjl_legal = [ paper=legal ] pjl_ledger = [ paper=ledger ] pjl_a3 = [ paper=a3 ] pjl_a4 = [ paper=a4 ] pjl_a5 = [ paper=a5 ] pjl_b4 = [ paper=b4 ] pjl_b5 = [ paper=b5 ] pjl_folio = [ paper=folio ] pjl_statement = [ paper=statement ] pjl_computer = [ paper=computer ] pjl_legal13 = [ paper=legal13 ] pjl_13inchlg = [ paper=legal13 ] pjl_sq85 = [ paper=sq85 ] pjl_85sq = [ paper=sq85 ] # # Input Tray: Standard options # manual, manualfeed # # ADDED: (in) ucas, mcas, lcas, lcc, envelope = manualnr # upper = ucas, middle = mcas, lower = lcas, lcc, manualnr pjl_manual = [ mediasource=manual ] pjl_manualfeed = [ mediasource=manual ] pjl_inauto = [ mediasource=auto ] pjl_inucas = [ mediasource=ucas ] pjl_inmcas = [ mediasource=mcas ] pjl_inlcas = [ mediasource=lcas ] pjl_inupper = [ mediasource=ucas ] pjl_inmiddle = [ mediasource=mcas ] pjl_inlower = [ mediasource=lcas ] pjl_inenvelope = [ mediasource=manualnr ] pjl_inlcc = [ mediasource=lcc ] pcl_manual =\033&l2H pcl_manualfeed =\033&l2H pcl_inauto=\033&l7H pcl_inucas=\033&l1H pcl_inupper=\033&l1H pcl_inmcas=\033&l5H pcl_inmiddle=\033&l5H pcl_inlcas=\033&l10H pcl_inlower=\033&l10H pcl_inenvelope=\033&l11H pcl_inlcc=\033&8H # # Output Tray is supported in Printer # # outbin=[auto,bin1,bin2] # outtray=[auto,bin1,bin2] pjl_outbin = [ outbin=\%s{outbin} ] pjl_outtray = [ outbin=\%s{outtray} ] pjl_outauto = [ outbin=auto ] pjl_outbin1 = [ outbin=bin1 ] pjl_outbin2 = [ outbin=bin2 ] pjl_outtray1 = [ outbin=bin1 ] pjl_outtray2 = [ outbin=bin2 ] pjl_outupper = [ outbin=bin1 ] pjl_outoffset = [ outbin=bin2 ] # # Resolution: # resolution=[600] # # image enhancement: image_enhnance=[on,off] # pjl_image_enhance = [ smooth=\%s{image_enhance} ] # # Staple is supported as a Finisher Option # # staple=[none, left, right, 2left, 2top, saddle ] pjl_staple = [ staple_\%s{staple} ] pjl_staple_none = [ finish=none ] pjl_staple_left = [ finish=leftupper sorting=sort ] pjl_staple_right = [ finish=rightupper sorting=sort ] pjl_staple_2left = [ finish=left2 sorting=sort ] pjl_staple_2top = [ finish=upper2 sorting=sort ] pjl_staple_saddle = [ finish=saddle sorting=sort duplex_on binding=shortedge ] # # Hole Punch is supported as a Finisher Option # punch=[none,left,upper] pjl_punch = [ punch_\%s{punch} ] pjl_punch_none = @PJL SET PUNCH=NONE pjl_punch_left = @PJL SET PUNCH=LEFT pjl_punch_upper = @PJL SET PUNCH=UPPER # # Account Number: # accountnumber=[value] pjl_accountnumber = [ groupcode=\%s{accountnumber} ] # PIN Printing is supported in printer # # # # PIN Printing is supported in printer # NOTE: The information provided by Sharp was not complete for this # section: # PIN: Printer # - # @PJL SET MODE=NORMAL # @PJL SET PIN<*CONFIDENTIAL> # @PJL SET MODE=PRIVATE # @PJL SET PIN=* # # Job Name is supported # jobname=[name] pjl_jobname=[ docname=\%s{jobname} ] # # User Name ( Owner ) is supported # username=[name] pjl_username=[ usrname=\%s{username} ] pjl_user_opts = [ punch punch_none punch_left punch_upper collate collate_on collate_off portrait landscape book tablet sduplex simplex lduplex simplex duplex duplexshort cover_none cover_printed cover_blank backcover_none backcover_on insert_printed insert_blank letter legal ledger a3 a4 a5 b4 b5 folio statement computer legal13 13inchlg sq85 85sq manual manualfeed inauto inucas inmcas inlcas inupper inmiddle inlower inenvelope inlcc outbin outtray outauto outbin1 outbin2 outtray1 outtray2 outupper outoffset image_enhance staple staple_none staple_left staple_right staple_2left staple_2top staple_saddle accountnumber jobname username copies sorting printorder orientation binding covermode backcover coversource sheet paper mediasource outbin resolution smooth finish punch groupcode docname usrname ] pcl_user_opts = [ manual manualfeed inauto inucas inupper inmcas inmiddle inlcas inlower inenvelope inlcc ] # PRINTER % - Sharp %, Toshiba650 Family, PS and PCL, uses SNMP for status and pagecount [ ar-650 ar-800 ] tc=toshiba650 # # Sharp Printers # Only a smple of these have been tested. # The information is based on MIB dumps and information supplied by Sharp # Patrick Powell, 2 Dec 2003 # The PostScript for these printers is basically that of the HP5si # # PRINTER % - Sharp Generic Fiery651 Family, PS and PCL, uses SNMP for status and pagecount [ fiery651 ] # # # # # Toshiba/Fiery 651/810 Printer Model Names from MIB # # # %Model # PlaceHolder = 1 # Sharp AR-651 = 2 # Alias Name for 65ppm model # Sharp AR-810 = 3 # Alias Name for 81ppm model # # use the HP4si as a starting point for PostScript and PCL tc=hp5si pjl pcl ps snmp_monitor sync=snmp waitend=snmp pagecount=snmp pjl_vars_set= [ COPIES=RANGE;1,999 BINDING=ENUMERATED;SHORTEDGE,LONGEDGE SORTMODE=ENUMERATED;SORT,GROUP PAPER=LETTER!ENUMERATED;LETTER,LEGAL,LEDGER,A3,A4,A5,A6,B4,B5,8K,16K,FOLIO,STATEMENT,COMPUTER,LEGAL13,SQ85 OUTBIN=ENUMERATED;UPPER,LOWER RET=ENUMERATED;OFF,ON,LIGHT,MEDIUM,DARK ] X # Copies: # copies=[n] - n copies # # Copy Collation: # collate=[on,off] or sorting=[sort,group] pjl_collate = [ collate_\%s{collate} ] pjl_collate_on = @PJL COMMENT EFIPJL SET SORTMODE=SORT pjl_collate_off = @PJL COMMENT EFIPJL SET SORTMODE=GROUP # # Standard options: # duplex, duplexshort, sduplex, simplex # ADDED: book = duplex, tablet = sduplex # # Note: 'longedge' is the direction in which the document is to # be viewed, not the edge on which you do the binding. pjl_book = [ duplex ] pjl_tablet = [ duplexshort ] pjl_sduplex = [ duplexshort ] pjl_lduplex = [ duplex ] pjl_simplex = @PJL SET DUPLEX = OFF pjl_duplexshort = @PJL SET DUPLEX = ON @PJL SET BINDING = LONGEDGE pjl_duplex = @PJL SET DUPLEX = ON @PJL SET BINDING = SHORTEDGE # Fit to Page # we fit to page # fit=[letter, legal, ... ] pjl_fit = [ fit_\%s{fit} ] pjl_fit_letter = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=LETTER pjl_fit_legal = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=LEGAL pjl_fit_ledger = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=LEDGER pjl_fit_a3 = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=A3 pjl_fit_a4 = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=A4 pjl_fit_a5 = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=A5 pjl_fit_b4 = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=B4 pjl_fit_b5 = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=B5 pjl_fit_8k = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=8K pjl_fit_16k = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=16K pjl_fit_folio = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=FOLIO pjl_fit_statement = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=STATEMENT pjl_fit_computer = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=COMPUTER pjl_fit_13inchlg = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=LEGAL13 pjl_fit_legal13 = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=LEGAL13 pjl_fit_85sq = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=SQ85 pjl_fit_sq85 = @PJL COMMENT EFIPJL SET ENGINEOUTPUTSIZE=SQ85 # Standard options: # # CoverSheet: # cover_none = no insert # Printed cover: # cover_printed=[ upper, lower, lcf, external_lcf, manual, env, post_fuser] # Blank cover: # cover_blank=[ upper, lower, lcf, external_lcf, manual, env, post_fuser] # # CoverSheet: Printer # - # @PJL COMMENT EFIPJL SET FRONTCOVER=OFF # <*BLANK> # @PJL COMMENT EFIPJL SET FRONTCOVER=BLANK # @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=* # Upper = 1 # # Lower = 4 # # LCF = 21 # # External LCF = 22 # # Manual = 6 # # Env = 2 # # Post-Fuser = 10 pjl_cover_none = @PJL COMMENT EFIPJL SET FRONTCOVER=OFF pjl_cover_blank = [ xcover_\%s{cover_blank} ] pjl_cover_printed = [ ycover_\%s{cover_printed} ] pjl_xcover_upper = @PJL COMMENT EFIPJL SET FRONTCOVER=BLANK @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=1 pjl_xcover_lower = @PJL COMMENT EFIPJL SET FRONTCOVER=BLANK @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=4 pjl_xcover_lcf = @PJL COMMENT EFIPJL SET FRONTCOVER=BLANK @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=21 pjl_xcover_external_lcf = @PJL COMMENT EFIPJL SET FRONTCOVER=BLANK @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=22 pjl_xcover_manual = @PJL COMMENT EFIPJL SET FRONTCOVER=BLANK @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=6 pjl_xcover_env = @PJL COMMENT EFIPJL SET FRONTCOVER=BLANK @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=2 pjl_xcover_postfuser = @PJL COMMENT EFIPJL SET FRONTCOVER=BLANK @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=10 pjl_ycover_upper = @PJL COMMENT EFIPJL SET FRONTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=1 pjl_ycover_lower = @PJL COMMENT EFIPJL SET FRONTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=4 pjl_ycover_lcf = @PJL COMMENT EFIPJL SET FRONTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=21 pjl_ycover_external_lcf = @PJL COMMENT EFIPJL SET FRONTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=22 pjl_ycover_manual = @PJL COMMENT EFIPJL SET FRONTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=6 pjl_ycover_env = @PJL COMMENT EFIPJL SET FRONTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=2 pjl_ycover_postfuser = @PJL COMMENT EFIPJL SET FRONTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET FIRSTPAGETRAY=10 # # Back CoverSheet: # backcover_none - no back cover # backcover_blank= [ upper, lower, lcf, external_lcf, manual, env, post_fuser] # backcover_printed= [ upper, lower, lcf, external_lcf, manual, env, post_fuser] # backcover_inserter # backcover_inserter_reverse # pjl_backcover_none = @PJL COMMENT EFIPJL SET BACKCOVER=OFF pjl_backcover_blank = [ xback_\%s{backcover_blank} ] pjl_backcover_printed = [ yback_\%s{backcover_printed} ] pjl_backcover_inserter = @PJL COMMENT EFIPJL SET BACKCOVER=BLANK @PJL COMMENT EFIPJL SET BACKCOVERTRAY=10 @PJL COMMENT EFIPJL SET BACKCOVERFLIP=0 pjl_backcover_inserter_reverse = @PJL COMMENT EFIPJL SET BACKCOVER=BLANK @PJL COMMENT EFIPJL SET BACKCOVERTRAY=10 @PJL COMMENT EFIPJL SET BACKCOVERFLIP=1 pjl_xback_upper = @PJL COMMENT EFIPJL SET BACKCOVER=BLANK @PJL COMMENT EFIPJL SET BACKCOVERTRAY=1 pjl_xback_lower = @PJL COMMENT EFIPJL SET BACKCOVER=BLANK @PJL COMMENT EFIPJL SET BACKCOVERTRAY=4 pjl_xback_lcf = @PJL COMMENT EFIPJL SET BACKCOVER=BLANK @PJL COMMENT EFIPJL SET BACKCOVERTRAY=21 pjl_xback_external_lcf = @PJL COMMENT EFIPJL SET BACKCOVER=BLANK @PJL COMMENT EFIPJL SET BACKCOVERTRAY=22 pjl_xback_manual = @PJL COMMENT EFIPJL SET BACKCOVER=BLANK @PJL COMMENT EFIPJL SET BACKCOVERTRAY=6 pjl_xback_env = @PJL COMMENT EFIPJL SET BACKCOVER=BLANK @PJL COMMENT EFIPJL SET BACKCOVERTRAY=2 pjl_xback_postfuser = @PJL COMMENT EFIPJL SET BACKCOVER=BLANK @PJL COMMENT EFIPJL SET BACKCOVERTRAY=10 pjl_yback_upper = @PJL COMMENT EFIPJL SET BACKCOVER=SIMPLEX @PJL COMMENT EFIPJL SET BACKCOVERTRAY=1 pjl_yback_lower = @PJL COMMENT EFIPJL SET BACKCOVER=SIMPLEX @PJL COMMENT EFIPJL SET BACKCOVERTRAY=4 pjl_yback_lcf = @PJL COMMENT EFIPJL SET BACKCOVER=SIMPLEX @PJL COMMENT EFIPJL SET BACKCOVERTRAY=21 pjl_yback_external_lcf = @PJL COMMENT EFIPJL SET BACKCOVER=SIMPLEX @PJL COMMENT EFIPJL SET BACKCOVERTRAY=22 pjl_yback_manual = @PJL COMMENT EFIPJL SET BACKCOVER=SIMPLEX @PJL COMMENT EFIPJL SET BACKCOVERTRAY=6 pjl_yback_env = @PJL COMMENT EFIPJL SET BACKCOVER=SIMPLEX @PJL COMMENT EFIPJL SET BACKCOVERTRAY=2 pjl_yback_postfuser = @PJL COMMENT EFIPJL SET BACKCOVER=SIMPLEX @PJL COMMENT EFIPJL SET BACKCOVERTRAY=10 # # Inserts: # insert_off = no insert # Printed insert: # insert_printed=[tray1, ... ] - input tray source # Blank insert: # insert_blank=[tray1, ... ] - input tray source # pjl_insert_off = @PJL COMMENT SET INSERTSHEET=OFF pjl_insert_printed = @PJL COMMENT EFIPJL SET INSERTSHEET= pjl_insert_blank = [ xinsert_\%s{insert_blank} ] pjl_insert_printed = [ yinsert_\%s{insert_printed} ] pjl_xinsert_upper = @PJL COMMENT EFIPJL SET INSERTCOVER=BLANK @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=1 pjl_xinsert_lower = @PJL COMMENT EFIPJL SET INSERTCOVER=BLANK @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=4 pjl_xinsert_lcf = @PJL COMMENT EFIPJL SET INSERTCOVER=BLANK @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=21 pjl_xinsert_external_lcf = @PJL COMMENT EFIPJL SET INSERTCOVER=BLANK @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=22 pjl_xinsert_manual = @PJL COMMENT EFIPJL SET INSERTCOVER=BLANK @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=6 pjl_xinsert_env = @PJL COMMENT EFIPJL SET INSERTCOVER=BLANK @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=2 pjl_xinsert_postfuser = @PJL COMMENT EFIPJL SET INSERTCOVER=BLANK @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=10 pjl_yinsert_upper = @PJL COMMENT EFIPJL SET INSERTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=1 pjl_yinsert_lower = @PJL COMMENT EFIPJL SET INSERTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=4 pjl_yinsert_lcf = @PJL COMMENT EFIPJL SET INSERTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=21 pjl_yinsert_external_lcf = @PJL COMMENT EFIPJL SET INSERTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=22 pjl_yinsert_manual = @PJL COMMENT EFIPJL SET INSERTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=6 pjl_yinsert_env = @PJL COMMENT EFIPJL SET INSERTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=2 pjl_yinsert_postfuser = @PJL COMMENT EFIPJL SET INSERTCOVER=SIMPLEX @PJL COMMENT EFIPJL SET INSERTCOVERTRAY=10 # # Paper selection: paper=[...] or just use the paper name: # letter legal ... # pjl_letter = [ paper=letter ] pjl_legal = [ paper=legal ] pjl_ledger = [ paper=ledger ] pjl_a3 = [ paper=a3 ] pjl_a4 = [ paper=a4 ] pjl_a5 = [ paper=a5 ] pjl_b4 = [ paper=b4 ] pjl_b5 = [ paper=b5 ] pjl_8k = [ paper=8k ] pjl_16k = [ paper=16k ] pjl_folio = [ paper=folio ] pjl_statement = [ paper=statement ] pjl_computer = [ paper=computer ] pjl_statement = [ paper=statement ] pjl_computer = [ paper=computer ] pjl_legal13 = [ paper=legal13 ] pjl_13inchlg = [ paper=legal13 ] pjl_sq85 = [ paper=sq85 ] pjl_85sq = [ paper=sq85 ] # # Input Tray: Standard options # manual, manualfeed # # ADDED: (in) ucas, mcas, lcas, lcc, envelope = manualnr # upper = ucas, middle = mcas, lower = lcas, lcc, manualnr pcl_manual =\033&l6H pcl_manualfeed =\033&l6H pcl_inauto=\033&l7H pcl_inupper=\033&l1H pcl_inlower=\033&l4H pcl_inenvelope=\033&2H pcl_inlcc=\033&21H pcl_inelcc=\033&22H # # Output Tray is supported in Printer # # outbin=[upper,lower] # outtray=[upper,lower] pjl_outbin = [ outbin=\%s{outbin} ] pjl_outtray = [ outbin=\%s{outtray} ] pjl_outupper = [ outbin=upper ] pjl_outlower = [ outbin=lower ] pjl_outbin1 = [ outbin=upper ] pjl_outbin2 = [ outbin=lower ] pjl_outtray1 = [ outbin=upper ] pjl_outtray2 = [ outbin=lower ] # # Resolution: # resolution=[600] # # image enhancement: image_enhnance=[on,off,light,medium,dark] # pjl_image_enhance = [ ret=\%s{image_enhance} ] # Toner Save: # economode=[on,off] # pjl_economode = [ economode_\%s{economode} ] pjl_economode_on = @PJL COMMENT EFIPJL SET TONERSAVE = GENERICON pjl_economode_off = @PJL COMMENT EFIPJL SET TONERSAVE = GENERICOFF # # Staple is supported as a Finisher Option # # staple=[none, left, right, 2left, 2top, saddle ] pjl_staple = [ staple_\%s{staple} ] pjl_staple_none = @PJL COMMENT EFIPJL STAPLE=GENERICOFF pjl_staple_left = @PJL COMMENT EFIPJL SET STAPLE=ONEUPLEFT @PJL COMMENT EFIPJL SET SORTERMODE=SORT @PJL SET OUTBIN=UPPER pjl_staple_right = @PJL COMMENT EFIPJL SET STAPLE=ONEUPRIGHT @PJL COMMENT EFIPJL SET SORTERMODE=SORT @PJL SET OUTBIN=UPPER pjl_staple_2left = @PJL COMMENT EFIPJL SET STAPLE=TWOLEFT @PJL COMMENT EFIPJL SET SORTERMODE=SORT @PJL SET OUTBIN=UPPER pjl_staple_2top = @PJL COMMENT EFIPJL SET STAPLE=TWOUP @PJL COMMENT EFIPJL SET SORTERMODE=SORT @PJL SET OUTBIN=UPPER pjl_staple_saddle = @PJL SET DUPLEX=ON @PJL SET BINDING=SHORTEDGE @PJL COMMENT EFIPJL SET STAPLE=SADDLESTITCH @PJL COMMENT EFIPJL SET SORTERMODE=SORT @PJL SET OUTBIN=UPPER # # Hole Punch is supported as a Finisher Option # punch=[none,left,upper] # pjl_punch = [ punch_\%s{punch} ] pjl_punch_none = @PJL SET PUNCH=NONE pjl_punch_left = @PJL COMMENT EFIPJL SET PUNCH = LEFT @PJL SET OUTBIN=UPPER pjl_punch_upper = @PJL COMMENT EFIPJL SET PUNCH = TOP @PJL SET OUTBIN=UPPER # # Account Number: # accountnumber=[value] pjl_accountnumber = @PJL COMMENT EFIPJL SET UNAME = "??" @PJL COMMENT EFIPJL SET DEPARTMENTCODE = "\%s{accountnumber}" # Job Name is supported # jobname=[name] pjl_jobname= @PJL COMMENT EFIPJL SET DOCNAME="\%s{jobname}" # # User Name ( Owner ) is supported # username=[name] pjl_username= @PJL COMMENT EFIPJL SET USERNAME="\%s{username}" # OPTIONS pjl_user_opts = [ collate collate_on collate_off book tablet sduplex simplex lduplex simplex duplex duplexshort fit fit_letter fit_legal fit_ledger fit_a3 fit_a4 fit_a5 fit_b4 fit_b5 fit_8k fit_16k fit_folio fit_statement fit_computer fit_13inchlg fit_legal13 fit_85sq fit_sq85 cover_none cover_blank cover_printed xcover_upper xcover_lower xcover_lcf xcover_external_lcf xcover_manual xcover_env xcover_postfuser ycover_upper ycover_lower ycover_lcf ycover_external_lcf ycover_manual ycover_env ycover_postfuser backcover_none backcover_blank backcover_printed backcover_inserter backcover_inserter_reverse xback_upper xback_lower xback_lcf xback_external_lcf xback_manual xback_env xback_postfuser yback_upper yback_lower yback_lcf yback_external_lcf yback_manual yback_env yback_postfuser insert_off insert_printed insert_blank insert_printed xinsert_upper xinsert_lower xinsert_lcf xinsert_external_lcf xinsert_manual xinsert_env xinsert_postfuser yinsert_upper yinsert_lower yinsert_lcf yinsert_external_lcf yinsert_manual yinsert_env yinsert_postfuser letter legal ledger a3 a4 a5 b4 b5 8k 16k folio statement computer statement computer legal13 13inchlg sq85 85sq outbin outtray outupper outlower outbin1 outbin2 outtray1 outtray2 image_enhance economode economode_on economode_off staple staple_none staple_left staple_right staple_2left staple_2top staple_saddle punch punch_none punch_left punch_upper accountnumber jobname username copies binding sortmode paper outbin ret punch ] pcl_user_opts = [ manual manualfeed inauto inupper inlower inenvelope inlcc inelcc ] # PRINTER % - Sharp %, Fiery651 Family, PS and PCL, uses SNMP for status and pagecount [ ar-651 ar-810 ] tc=fiery651 ##### This is the end of the standard ifhp.conf file. ##### Add your local files after this ##### If you want to override some entries, simply change the names to ##### something different, i.e. hp4 hp4.old ##### Here is a script to do this and then append your local file to the ##### end of the ifhp.conf file: ##### ##### #!/bin/sh ##### for i in $* ; do ##### perl -spi.bak -e 's/ $i / $i.orig /g' ifhp.conf ##### done ##### ##### sed -n -e '1,/XXX END XXX/p' ifhp.conf >ifhp.conf.new ##### sed '1,/XXX END XXX/d' ifhp.old >> ifhp.conf.new ##### ##### You can probably improve on this. ##### #### XXX END XXX ##### ifhp-3.5.20/config.guess0100555000175100017510000012206510130541210015271 0ustar papowellpapowell#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003 Free Software Foundation, Inc. timestamp='2003-07-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; arc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; macppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; pmax:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mipseb-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sun3:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; wgrisc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit 0 ;; alpha:OSF1:*:*) if test $UNAME_RELEASE = "V4.0"; then UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` fi # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha*:OpenVMS:*:*) echo alpha-hp-vms exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit 0 ;; DRS?6000:UNIX_SV:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7 && exit 0 ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c \ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && exit 0 echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then # avoid double evaluation of $set_cc_for_build test -n "$CC_FOR_BUILD" || eval $set_cc_for_build if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; *:UNICOS/mp:*:*) echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) # Determine whether the default compiler uses glibc. eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #if __GLIBC__ >= 2 LIBC=gnu #else LIBC= #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` # GNU/FreeBSD systems have a "k" prefix to indicate we are using # FreeBSD's kernel, but not the complete OS. case ${LIBC} in gnu) kernel_only='k' ;; esac echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; x86:Interix*:[34]*) echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' exit 0 ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit 0 ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #ifdef __INTEL_COMPILER LIBC=gnu #else LIBC=gnuaout #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit 0 ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) case `uname -p` in *86) UNAME_PROCESSOR=i686 ;; powerpc) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ifhp-3.5.20/LICENSE0100644000175100017510000005761410130541262013776 0ustar papowellpapowell *LPRng and IFHP LICENSE* GNU GPL and Artistic License (Version 4, Jan 24, 2000) Copyright Patrick Powell, Astart Technologies All rights reserved. You may use "LPRng" or "IFHP" under either the terms of the GNU GPL License or the Artistic License. These licenses are included below. These Licenses apply to the computer software packages known as "LPRng", "IFHP", and associated files. The "Package" or "Program" below refers to the programs, files, and associated software which are distributed as the package. The "LPRng" Software Package is a copyrighted work whose copyright is held by Patrick Powell. The "IFHP" Software Package is a copyrighted work whose copyright is held by Patrick Powell. BY MODIFYING OR DISTRIBUTING THE PROGRAM (OR ANY WORK BASED ON THE PROGRAM), YOU INDICATE YOUR ACCEPTANCE OF THIS LICENSE TO DO SO, AND ALL ITS TERMS AND CONDITIONS FOR COPYING, DISTRIBUTING OR MODIFYING THE PROGRAM OR WORKS BASED ON IT. NOTHING OTHER THAN THIS LICENSE GRANTS YOU PERMISSION TO MODIFY OR DISTRIBUTE THE PROGRAM OR ITS DERIVATIVE WORKS. THESE ACTIONS ARE PROHIBITED BY LAW. IF YOU DO NOT ACCEPT THESE TERMS AND CONDITIONS, DO NOT MODIFY OR DISTRIBUTE THE PROGRAM. ----------------------------------------------------------------------- Artistic License The "Artistic License" Preamble The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. Definitions: "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder. "Copyright Holder" is whoever is named in the copyright or copyrights for the package. "You" is you, if you're thinking about copying or distributing this Package. "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. 1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. 3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as ftp.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. b) use the modified Package only within your corporation or organization. c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. d) make other distribution arrangements with the Copyright Holder. 4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. b) accompany the distribution with the machine-readable source of the Package with your modifications. c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. d) make other distribution arrangements with the Copyright Holder. 5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. 6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package. 7. C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package. 8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. 9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. This license is based on the Open Source License available from http://www.opensource.org/artistic-license.html ------------------------------------------------------------------ GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. ifhp-3.5.20/LINK0100644000175100017510000000016510130541262013436 0ustar papowellpapowell#!/bin/sh DIR=`pwd | sed -e 's,.*/,,'` PREFIX=`echo $DIR | sed -e 's,-.*,,'` cd ..; rm -f $PREFIX ln -s $DIR $PREFIX ifhp-3.5.20/acinclude.m40100644000175100017510000000167310130541263015155 0ustar papowellpapowelldnl dnl set $(LOCALEDIR) from --with-localedir=value dnl define(WITH_LOCALEDIR,[ AC_ARG_WITH([localedir], [ --with-localedir=PATH specify locale information directory], AC_MSG_RESULT(LOCALEDIR is $withval) LOCALEDIR="$withval", LOCALEDIR="$LOCALEDIR" [AC_MSG_RESULT(LOCALEDIR defaults to $LOCALEDIR)] )dnl AC_SUBST(LOCALEDIR)dnl ])dnl define(WITH_CPPOPTS,[ AC_ARG_WITH([ccpopts], [ --with-ccopts OBSOLETE - use CPPFLAGS=..., see configure --help], [AC_MSG_ERROR([ --with-cppopts OBSOLETE - use CPPFLAGS=... see configure --help])] )])dnl define(WITH_LDOPTS,[ AC_ARG_WITH([ldopts], [ --with-ldopts OBSOLETE - use LDFLAGS=..., see configure --help], [AC_MSG_ERROR([ --with-ldopts OBSOLETE - use LDFLAGS=... see configure --help])] )])dnl define(WITH_CCOPTS,[ AC_ARG_WITH([ccopts], [ --with-copts OBSOLETE - use CFLAGS=..., see configure --help], [AC_MSG_ERROR([ --with-ccopts OBSOLETE - use CFLAGS=... see configure --help])] )])dnl ifhp-3.5.20/gsPrint0100644000175100017510000000011310130541264014322 0ustar papowellpapowell%! /Courier findfont 200 scalefont setfont 72 300 moveto (1) show showpage ifhp-3.5.20/Makefile.in0100644000175100017510000001454510130541262015032 0ustar papowellpapowell################################################################### # ifhp Software # copyright 1988-2003 Patrick Powell # papowell@astart.com # See LICENSE for conditions of use. ########################################################################### # $Id: Makefile.in,v 1.116 2004/10/05 15:50:10 papowell Exp papowell $ ########################################################################### PACKAGE=@PACKAGE@ VERSION=3.5.20 SRC=@srcdir@ @SET_MAKE@ prefix=@prefix@ exec_prefix=@exec_prefix@ sysconfdir=@sysconfdir@ mandir=@mandir@ libexecdir=@libexecdir@ INSTALLCMD=@INSTALL@ FILTER_DIR=@FILTER_DIR@ IFHP_CONF=@IFHP_CONF@ LOCALEDIR=@LOCALEDIR@ USE_NLS=@USE_NLS@ SHELL=@SHELL@ CAT=@CAT@ top_builddir=. #============================================================================= # List the directories you want to generate: # DIRS for all, clean, etc. # ALLDIRS for other such as documentation #============================================================================= DIRS= src po man ALLDIRS= $(DIRS) fonts DOCS TARGET= ./ifhp.conf # define default target MAKETARGET=all FILES= ./ifhp.conf all: ${FILES} ${DIRS} .PHONY: \ all install ci cifiles clean realclean distclean \ configure dist tar update send supported FRC ${ALLDIRS} # we use this to do recursion to specified directories $(ALLDIRS): if [ "$@" = po ] ; then \ for i in po/Makefile* ; do \ if [ -f "$$i" ] ; then \ if grep '^mkinstalldirs.*=.*case' $$i ; then \ echo "fixing broken $$i which causes wrong path to mkinstalldirs to be used"; \ perl -spi -e 's:^mkinstalldirs\s*=\s*.*:mkinstalldirs = \$$(SHELL) \$$(MKINSTALLDIRS):' $$i; \ fi \ fi \ done \ fi if [ "$@" != po -o "$(USE_NLS)" != "no" ] ; then \ cd $@; $(MAKE) localedir=${LOCALEDIR} \ DESTDIR=$(DESTDIR) $(MAKETARGET) ; \ fi ############################################################################### install: all $(MAKE) MAKETARGET=$@ $(DIRS) DESTDIR=${DESTDIR} if [ -n "${VERBOSE_INSTALL}" ] ; then set -x; fi; if [ "${POSTINSTALL}" != "NO" ] ; then \ if [ -f ${DESTDIR}${IFHP_CONF} ] ; then \ date=`date | awk '{ print $$6 "_" $$2 "_" $$3 "_" $$4;}'`; \ mv ${DESTDIR}${IFHP_CONF} ${DESTDIR}${IFHP_CONF}.$$date; \ fi; \ d=`dirname ${DESTDIR}${IFHP_CONF}`; \ if [ ! -d $$d ] ; then ${SHELL} ${SRC}/mkinstalldirs $$d; fi; \ ${INSTALLCMD} -m 644 ./ifhp.conf ${DESTDIR}${IFHP_CONF}.sample; \ ${INSTALLCMD} -m 644 ./ifhp.conf ${DESTDIR}${IFHP_CONF}; \ fi; if [ -n "${VERBOSE_INSTALL}" ] ; then set -x; fi; if [ "${POSTINSTALL}" != "NO" ] ; then \ if [ ! -d ${DESTDIR}${FILTER_DIR}/UTILS ] ; then ${SHELL} ${SRC}/mkinstalldirs ${DESTDIR}${FILTER_DIR}/UTILS; fi; \ for f in ${SRC}/UTILS UTILS ; do ( cd UTILS; \ for i in * ; do \ if [ -f $$i ] ; then ${INSTALLCMD} -m 644 $$i ${DESTDIR}${FILTER_DIR}/UTILS/$$i; fi; \ done; ); done; \ fi; ############################################################################### ./ifhp.conf: ${SRC}/ifhp.conf.in Makefile rm -f $@ sed \ -e "s,.CAT@,$(CAT),g" \ -e "s,.FILTER_DIR@,$(FILTER_DIR),g" \ -e "s,.A2PS@,@A2PS@,g" \ -e "s,.GS@,@GS@,g" \ -e "s,.GZIP@,@GZIP@,g" \ -e "s,.FILEUTIL@,@FILEUTIL@,g" \ -e "s,.PAGE_SIZE@,@PAGE_SIZE@,g" \ -e "s,.FONT_DIR@,@FONT_DIR@,g" \ -e "s,.DEVFD3@,@DEVFD3@,g" \ -e "s,.FOOMATIC@,@FOOMATIC@,g" \ -e "s,.FOOMATIC_RIP@,@FOOMATIC_RIP@,g" \ ${SRC}/ifhp.conf.in >$@ ci: cifiles for i in $(ALLDIRS); do \ case $$i in \ po ) ;; \ * ) $(MAKE) MAKETARGET=$@ $$i ;; \ esac; \ done; chmod 755 `find . -name install-sh -print` chmod 755 `find . -name mkinstalldirs -print` #CI= #CO=-kv CO=-l # rcs -l $$1; cifiles: for i in . $(ALLDIRS); do \ if test ! -d $$i/RCS ; then \ mkdir $$i/RCS; \ fi; \ done; checkin() { \ ci $(CI) -mUpdate -t-Initial $$1; \ yes |co $(CO) $$1; \ }; \ for i in * po/* UTILS/* ; do \ if test -f "$$i" ; then \ case "$$i" in \ *.mo ) ;; \ *.in ) checkin $$i;; \ config.* ) ;; \ configure ) ;; \ * ) checkin $$i ;; \ esac; \ fi; \ done; ############################################################################### clean: $(MAKE) MAKETARGET=$@ $(DIRS) -rm -f *.o *.a ? ?.* *core $(TARGET) po/POTFILES -rm -f header *.bak $(SCRIPTS) po/*~ realclean: clean $(MAKE) MAKETARGET=$@ $(ALLDIRS) distclean: clean rm -rf DISTRIBUTIONS/FreeBSD*/work DISTRIBUTIONS/FreeBSD*/*.tgz ; $(MAKE) MAKETARGET=$@ DESTDIR=$(DESTDIR) $(ALLDIRS) -rm -f config.cache config.h config.log config.status -rm -f Makefile */Makefile */*core* ltmain -rm -f UTILS/*.sh rm -f `find . -type f -name '*.old' -print` \ `find . -type f -name '*.bak' -print` \ `find . -type f -name '*.orig' -print` \ Makefile */Makefile po/POTFILES rm -f `find . -type f -name '*.in' -print | sed -e 's/\.in$$//' -e /configure/d ` ############################################################################### configure: configure.in autoconf autoheader dist: update ci tar send redist: ci tar send send: if [ -f ../SENDTO ] ; then cd ..; sh SENDTO; fi tar: distclean DIR=`pwd | sed 's,.*/,,'`; \ cd ..; \ tar --exclude '*RCS' -zcf $${DIR}.tgz $${DIR}; \ md5 $${DIR}.tgz |pgp -fast > $${DIR}.tgz.md5 @echo ""; update: for i in VERSION ./src/patchlevel.h configure.in ; do \ rcs -l $$i; chmod +w $$i; \ done; DIR=`pwd | sed 's,.*/,,'`; \ DIRVER=` echo $${DIR} | sed 's,.*-,,'`; \ echo DIR $${DIR}, DIRVER $${DIRVER}; \ echo "#define PATCHLEVEL \"$${DIR}\"" >./src/patchlevel.h; \ echo $${DIR} >VERSION; \ S=`echo *.sh | sed -e 's/\.sh//g'`; \ perl -spi -e "s,=.*,=$${DIRVER}, if(/^VERSION=/ or /^#.* VERSION=/); \ s,^IFHP_VER=.*,IFHP_VER=$${DIRVER},; \ s,^DISTNAME=.*,DISTNAME= $${DIR},; \ s,^PORTNAME=.*,PORTNAME= $(PACKAGE),; \ s,^PORTVERSION=.*,PORTVERSION= $${DIRVER},; \ s,^Version: .*,Version: $${DIRVER},; \ s,^Release: .*,Release: 1,; \ s,package name \".*\",package name \"$${DIR}\",; \ s,^SCRIPTS=.*,SCRIPTS=$$S,;" \ Makefile.in configure.in src/Makefile.in ifhp.conf.in \ DISTRIBUTIONS/*/Makefile \ DISTRIBUTIONS/*/*.spec \ po/Makefile.in.in; \ perl -spi -e 's,.*,"Project-Id-Version: $(PACKAGE) '$${DIRVER}'\\n", if(/^"Project-Id/);' \ po/*.po sh CREATE_CONFIGURE sh STANDARD_configuration ci -l -mUpdate -t-Initial Makefile for i in DOCS man ; do \ (cd $$i ; $(MAKE) $@; $(MAKE) ); \ done; -for i in po ; do \ (cd $$i ; $(MAKE) update-po ); \ done $(MAKE) supported supported: perl -i.bak UTILS/supported ifhp.conf.in ifhp-3.5.20/CHANGES.OLD0100644000175100017510000022024610130541262014372 0ustar papowellpapowellVersion ifhp-3.5.19 - Thu Sep 30 16:16:28 PDT 2004 Grrr... changed the default 'Inputfile' value to 'STDIN' so it would print nicely, but this value is also used as a parameter to the file program. Grrr... added another test to the regression tests. This is getting silly. Patrick Powell Version ifhp-3.5.18 - Thu Jul 22 10:19:09 PDT 2004 More fixes/improvements to LED display support. (Patch from: Hermann Lauer ) Opening the 'file' name and not /dev/fd/0. This cause problem when running with LPRng and a -p format. (Reported by: Justus J. Addiss Changed email names in various lists, etc. from to . Modified some of the /dev/fd/0 device entries in ifhp.conf to be '-' so that older versions of GhostScript do not have problems Version ifhp-3.5.17 - Tue Feb 3 17:25:42 PST 2004 GCC extensions are unloved by some ANSI compilers. (Fix and Patches Courtesy: Jim Trocki ) Patch for ifhp which separates generation of jobnames from generation of display names. I see no reason why displaynames shouldn't contain for example ':' (Handy for displaying times...) (Patch from: Hermann Lauer ) Added: Phaser 7700 (with amendments to to SNMP monitoring) (Courtesy of: Stuart Marshall ) Version ifhp-3.5.16 - Fri Jan 2 07:28:39 PST 2004 The file conversion table for the 'DEFAULT' printer had a2ps producing PCL output. This should have been PostScript output. Version ifhp-3.5.15 - Wed Dec 17 16:48:50 PST 2003 ifhp.conf file was missing default ps_converter entry. Typeo in command argument parsing fixed. Version ifhp-3.5.14 - Tue Dec 2 15:43:20 PST 2003 If a printcap entry is provided as the PRINTCAP_ENTRY environment variable, it is used to initialize the IFHP configuration options. It turns out that the only option in conflict is the IFHP 'ps' (postscript) option and the LPD ps (printer status file) option. Only the 'lp' and options longer than two characters are used. You still need to use 'ifhp=...' for specifying options page control or other options that are order sensitive. You can put all of the other IFHP options that normally are in the ifhp.conf entry into the printcap file. The order of processing of options is: a) printcap - config extracted b) printcap - ifhp=... from printcap processed b) command line -T options extracted c) value of 'config' and 'model' found from current set of options d) ifhp.conf read for model information e) printcap (options > 2 chars long), ifhp=... and -T options reprocessed The page and formatting options must still be specified in the :ifhp entry for proper processing. OLD: lp:...:ifhp=model=hp5si,status@,letter OLD: lp:...:model=hp5si:status@:ifhp=letter Added a fixup so that a PJL value of '1' matches 'on' and '0' matches 'off'. Discovered that the Fix_option_str value was being discarded rather than used when looking up options of the form: xx=\%s{key} Also, expansions of the form name = [ value_\%s{id} ] were not being handled correctly. Added the baseline code for using ifhp options found in PPD files. Added support for Sharp AR-507 and other printers Version ifhp-3.5.13 - Mon Nov 17 08:40:15 PST 2003 The ifhp-3.5.12 distributions that were put up on various web sites were incomplete. Rather than try find and update them this version is simply a repackaging of the old version. Version ifhp-3.5.12 - Fri Nov 14 13:54:02 PST 2003 changed (char **) casts to (void *) casts ** SEE README.SNMP for details ** Added snmp_printer_status to get printer status via SNMP. Based on original check_printer_status script by John Perkins . Tested with several printers. Added README.SNMP to the top level README files. This can be used to help in reporting page counts for HP4100i printers, among others. WARNING: if you plan to use SNMP monitoring, then use the APPSOCKET option as well. This will cause connections to the printer to close and the SNMP agent will then indicate that the printer is 'idle'. If the connection is open, then several test printers reported their status as 'busy' rather than 'idle'. # if you want to use SNMP monitoring then use the snmp_printer_status # program. This program will report the status of a printer # by polling it using SNMP. Status will be read from both the # back channel (i.e. - connection to printer) and from the SNMP # monitoring program. The 'snmp_dev' device is determinded by the # ifhp program; it depends on the appsocket and other options snmp_monitor@ snmp_program=@FILTER_DIR@/snmp_printer_status -h "\%s{snmp_dev}" \ -m "\%s{snmp_model}" -f "\%s{snmp_program_conf}" snmp_program_conf=@FILTER_DIR@/snmp_printer_status.conf # the snmp_dev is a 'pseudo-variable'. If it is set # explictily by -Tsnmp_dev=IPADDR, else a printcap # :ifhp=...,snmp_dev=IPADDR, option, and finally the # printcap :lp=IPADDR%port value is used. The first one # found sets snmp_dev to IPADDR. # The snmp_printer_status.conf file has entries to specify the # SNMP Object Identifiers (OIDs) for variuos printers # The [model default] entry specifies a standard set of Printer MIB # OIDs to for status. # See the sample snmp_printer_status.conf file or the snmp_printer_status # man page for details. snmp_model=default # when we get status, we look for the following words in the # status to indicate that the printer is ready and/or idle. # Spaces in the status are replaced by underscores if necessary snmp_sync_status=ready power_save_mode snmp_end_status=ready idle # There are some totally brain dead printers that will NOT report # status correctly until a timeout period after the last close or # job sent. These are evil and ugly, but we love them anyways. # Delay snmp_wait_after_close seconds when you are using Appsocket # snmp_wait_after_close=1 # to use SNMP for sync purposes, set: # sync=snmp # to use SNMP for pagecount purposes, set: # pagecount=snmp # to use SNMP for waitend purposes, set: # waitend=snmp The snmp_printer_status program assumes that the device has some basic Printer-MIB functionality. If it does not, then you cannot obtain status reliably. Added the 'close_connection' option that closes appsocket connections after a transfer. Apparently needed for some printers that do not recognize an end of job until they get a closed connection. In order to handle broken PJL status reporting from some printers, added the status_ignore and status_translate options. From the ifhp.conf file: ## Status information is converted into strings of the form ## key=statusvalue. ## The following keys are assumed to be valuable: ## status - current device status ## error - device error ## warn - device error ## pagecount - device pagecount ## Other status will be shown in the log file but not used, ## and only when it changes. ## Ignore status reported with the following keys. ## These match the first characters of the keys. You can ## use _ to stand for blanks. Match is done using globmatch ## status_ignore= markerlifecount prt*stuff ## ## ## Under some very bizzare circumstances such as broken PJL ## implementations, you may need to translate the status keys from ## the vendor supplied to the ones needed above. ## Use status_translate to do the translation. The entries have the ## oldvalue=newvalue ## These match the first characters of the keys. You can ## use _ to stand for blanks. Match is done using globmatch ## status_translate= id=hostid *status=status ## Added foomatic support: lp: :ifhp=foomatic :ppd=/usr/share.../ppdfile OR lp: :ifhp=foomatic,ppd=/usr/share/.../ppdfile This will use the foomatic-rip program to process PostScript files. This is preliminary support and will be extended in later releases. Updated the ifhp.conf file for HP4100: [ hp4100 hp4200 hp4300 ] tc=hp4000_pcl pjl_waitend_byjobname (Thanks to: qiang lee ) Added the ability to specify the PJL SET variable values. MANUALFEED=ENUMERATED;OFF,ON ORIENTATION=PORTRAIT!ENUMERATED;PORTRAIT,LANDSCAPE Version ifhp-3.6.0 - Fri Sep 5 10:36:39 PDT 2003 Fixed up the 'ifhpXXXX' temp file problem and added HPGL2 support. (Thanks to Sam Lown ) There is now a 'send_job_rw_timeout' option that sets a maximum non-responding/non-accepting data time for a printer. This allows you to set a timeout for the maximum time that you expect a normal job to take and gives you a way to try to manage printers that will lock up with an hard error when fed a bad PostScript, PCL file, network overload, or SNMP packet. However, it also will cause printers which, when they are off line or or when they have an out of paper condition, etc., perhaps to be identified as a bad printer. It is a compromise and should only be used for this particuar situation. Fixed configure so that it now handles 'enable-OPTION' and 'disable-OPTION' correctly. Added the 'pjl_waitend_byjobname' patch. Briefly, this patch causes IFHP not to send a dummy job and to wait for the end of the original job using the PJL JOB facility. This may not work for some printers that do job spooling, and will send the end of job before the job is finished. It may be useful on other printers where this is not a problem. (Clever idea by: "Raymond M. Reskusich" ) Added some more agressive 64 bit file system support as suggested. (Neat suggestion by: Ben Woodard ) HP DesignJet 800ps support by Lars Kellogg-Stedman Version ifhp-3.5.10 - Fri Jul 12 16:21:49 PDT 2002 The top level install (make install) did not install the utilities correctly on systems that did not have a BSD install. (Reported first by: Jason Keltz ) Pdf2gs_converter should be pdf2ps_converter in ifhp.conf.in file. The code for += did not handle tc= inclusions correctly. (Side effect of this reported by: Jason Keltz ) Updated some PostScript definitions for some printers. configure now uses AC_MSG_WARN. The check for /dev/fd/xx now issues warning that PDF conversion may not work for the default PDF to PostScript conversion. The \%s{inputfile} option expands to: command line -e value (compatible with LPRng passing file name as the value of the -e option) OR /dev/fd/0 if -e value not defined OR - if /dev/fd facility is not available. This solves a problem with PDF to PostScript conversion, where the PDF conversion was done using GhostScript and GhostScript needed to perform a file seek operation, and the '-' (stdinput) specifier was deemed to be 'unseekable'. Sigh... So we have this fix in ifhp. Updated the CREATE_CONFIGURE and STANDARD_configuration scripts. Using the automake, autoconf facilities. Version ifhp-3.5.9 - Sat Jun 22 14:11:15 PDT 2002 Fixed up tc parsing so it handles tc= [ xx ] by not expanding the xx entries (and tc=[xx], etc. as well). The configure tests for detecting the version of ghostscript were incorrect. This really screwed up conversions. Installing the UTILS in FILTER_DIR/UTILS. This makes them available for use. Added a README.TESTING file. This contains notes on how to use the sendhp.sh script for testing. Missing initialization for 'pagecount_prog' in main(); Fixed up problem with ifhp error message printing. (Found and patched by: Thierry Besancon ) Added '-dPARANOIDSAFER' to ghostscript flags and made the security check cause an abort. The ghostscript problems should be fixed by now. Added Canon imageRUNNER 550/600 ifhp.conf entry. This printer is REALLY unusual. May extend the printcap entry in the future. Couple of minor fixes to ifhp.conf (Patches by: Steven J. Birt ) Version ifhp-3.5.8 - Mon Apr 1 17:14:06 PST 2002 New 'Appsocket' support and configuration lp: :lp=host%port :ifhp=model=xxx,appsocket :filter=/.../ifhp #:of=/.../ifhp You do not need to have /dev/null now, you can have LPD open the connection, and then IFHP will simply use the connection information. This greatly simplifies things. Note that you MUST use ifhp 3.5.8 or later for this to work. The 'Read_status' code has been savagely attacked, once again, and the varous insane combinations of devices that have read return 0 or -1 when there is no data has been worked at again. Also, the code for parsing return status has been looked at and the odd case of PostScript printers that return a 'print' value WITHOUT a CR/LF has been attempted to be solved... I hope this is the last time we go around the rose bush on this one. Also, the Xerox/Phaser 5400 has been added. This device has the obnoxious habit of returning a JOB ID whose key (ID) conflicts with the INFO ID key (ID). So we ignore any ID keys/value pairs unless they are returned by the 'PJL INFO' status. hp4l entry modified, Using 'laserjet', the printed area is shifted to the right on a 'portrait letter' piece of paper. Using 'ljet4', it prints centered. I.e., it looks better. (From: Luca Filipozzi ) ps_eoj, ps_eoj_at_start, ps_eoj_at_end now work correctly Once again the 'Appsocket' stuff rears its ugly head. Added a 'shutdown(1,SHUT_RW)' to FORCE the &*()()*& connection to the printer to be clobbered. Grrrr.. Also, added a check for the special case when appsocket is specified and you are using the OF filter (banner printing). STATUS HELPERS sync=|/path_to_program pagecount=|/path_to_program waitend=|/path_to_program The sync, pagecount, and waitend functions can be implemented by running a 'status helper' program. These programs are run with: STDIN = printing device STDOUT = STDERR = status Information written to STDOUT/STDERR should have the format: key=value as for PJL status information. The same processing is done for this information as for the PJL USTATUS information, so you can return an error code (CODE=xxxx) value that will be treated as a PJL USTATUS error. The following are 'special' keys: KEY VALUE sync 1 (or nonzero) - sync is done waitend 1 (or nonzero) - waitend is done pagecount nnn - pagecounter value Note: you can use a single program to do all 3 operations, in which case simply write 3 lines with sync, waitend, and pageount values, i.e: sync=1 pagecount=205667 waitend=1 Alternatively, if the sync,waitend, or pagecount program exits with 0 status, then success is assumed, otherwise IFHP will exit with an error status. Exit code: JSUCC - 0 - success JFAIL - 1 - fail with retry later JABORT - any other code Added special case parsing for PostScript printers that do not put NL (\n) at the end of error messages. Now handles %%[ status: xxx ]%%%%[ stuff: xxx ]%% correctly as %%[ status: xxx ]%% %%[ stuff: xxx ]%% (Pointed out by a Netatalk user: Rob Joyce ) Fixed up STRIP in configure.in so that it does not collide with autoconf STRIP Added a '--with-pagesize' option to allow you to specify default page size. Currently only selects default size with PCL. Added a '--with-fontdir' to specify the font directories. The default directories are now: default: FONT_DIR=${libexecdir}/fonts OR /usr/libexec/fonts/ pcl_fontdir = ${FONT_DIR}/pcl ps_fontdir = ${FONT_DIR}/ps pjl_fontdir = ${FONT_DIR}/pjl Note: you can always add these to the END of ifhp.conf file: [default] ps_fontdir=/... pcl_fontdir=/... pjl_fontdir=/... Discovered a stupid typeo that somehow crept in via the joys of cut and paste. Now the xx += stuff works again. Grrrr.... (Nudged into looking at the right place by: "Steven J. Birt" ) Note: this also solves the core dump problem reported by Christoph Beyer Found a possible core dump problem. Added safestrlen() to the paranoid string stuff. Fixed up a slew of casts so that gcc -W stops nattering. Changed GhostScript driver from ljet2 to ljet2p in ifhp.conf. Version ifhp-3.5.6 - Sat Feb 23 07:36:20 PST 2002 display@ option disables/enables display of console message display_size=nnn sets size of display - lp:ifhp=display@ or ifhp -Tdisplay@ - lp:ifhp=display_size=20 of ifhp -Tdisplay_size=20 (Suggested by: Nick Bruton ) Version ifhp-3.5.5 - Fri Feb 22 16:47:59 PST 2002 Lexmark 4039 should be: ps_sync= serverdict begin 0 exitserver statusdict begin true setenginesync end ps_async= serverdict begin 0 exitserver statusdict begin false setenginesync end (Reported by: Johan Bengtsson ) On the alpha, cc insists that (the line of the beast): > cc: Error: ../../src/perlobj.c, line 666: In this statement, "p->info.array.value" and "len" cannot be added. (noadd) > memmove(p->info.array.value+len, p->info.array.value, olen+1 ); > --------^ > As far as I can tell, p->info.array.value is a void*, so adding an int to > it is not allowed. I suggest you explicitly cast it to (char *), like in the > previous line, *((char *)(p->info.array.value)+olen) = 0; > This is also the case in lines 615, 713, 813, and 837. Fixed. I wonder why GCC -warn did not catch this? (Reported by: Hans Peter Verne ) HP8100 'ps_tabloid' selection should really be ps_ledger. (Patch from: Steven J. Birt ) Replaced PDF2PS with the GhostScript conversion stuff. (Idea from: Thies Meincke ) Version ifhp-3.5.4 - Fri Feb 8 19:23:05 PST 2002 Use the new OBJ library and debug options: debug= 0-6 - displays details about job handling. bigger the number, more detail database, database+1 - database+4 - ifhp.conf parsing REALLY verbose utils, utils+1 - utils+4 - OBJ library, REALLY verbose Fixed up PostScript printer messages when the printer detects an error. This problem appears when a bad PostScript job is sent to the printer and the printer returns status information. Some of the fields are 'unusual' for some vendors. Rather than just display the 'error' information, I now put out the whole PostScript status message. The 'gs_converter' values needed '|cat >&3'. (From the mystery poster: imacat@mail.imacat.idv.tw) GhostScript developers have added a -dPARANOIDSAFER flag to solve some security issues. Added this to the gs_converter definitions. The 'pagesize' option has been merged into the papersize facility. Now you can select the papersize from PCL and PostScript using the same facility. This is, as they say, a one-size-fits-all approach. You must modify the ifhp.conf file now if you want to add more paper sizes/changes. This is kinda reasonable... The method used was to add a translation table (pcl_papersize_index for PCL), and to use the %d{key,lookuptable} facility. This does a lookup on the value for 'key' and then translates it using it as a key into the lookuptable. The lookuptable has to be a value which hash the format: k=value k=value and this is then split into a hash and used for the lookup. Version ifhp-3.5.3 - Tue Jan 22 16:17:59 PST 2002 changed a lot of strxxx to safestrxxx to avoid problems with strxxx coredumps when passed NULL strings. Missing check to see if output is to a file - if so, then we set status@ (Courtesy: Jim Trocki ) Version ifhp-3.5.2 - Fri Dec 21 11:08:36 PST 2001 New parallel port birectional IO support. This has been tested on RedHat 7.2 linux (Kernel 2.4.7-10), FreeBSD 4.4-Release. It is REALLY stupid, but it seems to work. If you turn the printer on and offline then you might get an IO error. Note that the printer must be connected and detected by the kernel for bidirectional IO to work, otherwise the IEEE nibble mode will not be enabled. I wish there was a way to force this to be rescanned at open(), but it does not appear to be easily done. Of course, if you turn your printer on, then it may or may not work... New USB port birectional IO support. This has been tested on RedHat 7.2 linux (Kernel 2.4.7-10), FreeBSD 4.4-Release. The parallel port code seems to also handle USB ports as well. Amazing... I have also put in some friendly 'hints' why you may not be getting status. This will help the folks who have problems. I have also update the ifhp man page to reflect this. Added @PJL RESET to the PJL setup commands. Note: Should I also add a PJL INITIALIZE as well? This will control the sticky fingers on the control panel. But if this is the case then I suggest that the admins use a special job and lock the control panel. See the PJL refence manual for Password and DEFAULT stuff. Job cancellation now handle gracefully... but you still have to send the entire job to the printer... This is a bit of a pain, but it seems to be the right thing to do. Update gs invocation, using clever trick from the foomatic folks: Grant Taylor (www.linuxprinting.org). gs ... -sOutputFile=|cat >&3 3>&1 1>&2 This causes the error messages and other things to be sent to STDERR. Ummm... This may fail, so make sure that /bin/cat is fixed up. Version ifhp-3.5.1 - Mon Dec 17 20:17:53 PST 2001 The ifhp=option,option... was being ignored. It is now not ignored. The processing is: printcap ifhp=option1,option2 command line -Toption3,option4 -Zoption5,option6 As the options are processed, they are put into a list: option order: option1,option2,option3,option4,option5,option6 If they have form: option=value, the values are set as the list is constructed. Next, they are scanned for effect, i.e. - simplex, duplex, etc. and those which cause output have output generated. (Pointed out by: Akop Pogosian ) Version ifhp-3.5.0 - Tue Dec 11 17:19:24 PST 2001 Fixed up configure, make files, DISTRIBUTIONS, stuff. sh STANDARD_configuration now install man pages in /usr/share/man if it is available. Updated man pages, clarified default set of options. gs_hplj4 printer entry now accepts PJL as all of the associated printers accept PJL. Version ifhp-3.4.9 - Wed Nov 28 10:10:25 PST 2001 Added 'pjl_done_msg' to ifhp.conf: ## Set console message when job is done ## Set this to empty string if you do not want a ready message ## at end of job pjl_done_msg = Done: \%s{n} \%s{J}:\%s{P} Freeing memory already freed. (Reported by: imacat@mail.imacat.idv.tw) Version ifhp-3.4.8 - Thu Oct 18 14:07:52 PDT 2001 Modified configure messages for clarity. The PJL JOB START stuff was really messed up - missing buffer[0] = 0 caused junk message to be sent to the printer (sometimes). (Found, reported with a gleeful cackle, and patch sent by: Jason Keltz ) The PJL 'STARTPAGE' and 'ENDPAGE' options need quotes around them. Now you can do 'lpr -Zstartpage=1,endpage=2' and it will work. Version 3.4.7 Tue Oct 16 13:37:17 PDT 2001 Added pdf2ps conversion support in ifhp.conf Version 3.4.6 Fri Sep 14 12:45:11 PDT 2001 Corrections and format errors in IFHP-HOWTO corrected. Thanks to Rick Cochran (Patch by: Rick Cochran ) ifhp support for 'inet_ntop' used mystrncpy() (Patch supplied by: Dejan Ilic ) Updates to the ifhp.conf file for HP 4050, LN15, LN16, LN17 printers. (Update by: Helmut Kreiser, ) Added SCO 5.5 patches: From: Paul Freeman SCO doesn't define MAXPATHLEN in the 'normal' include files (it is in arpa/ftp.h). Instead they use PATHSIZE (in sys/param.h). SCO doesn't define the S_ISSOCK POSIX macro. My investigations reveal the mode of a socket is 0020000 (same as a character special). I have defined the S_ISSOCK macro This results in a duplicate test in lpd_jobs.c at lines 2407-2409 but this is harmless. Added SCO 5.5 patches: From: Paul Freeman SCO doesn't define MAXPATHLEN in the 'normal' include files (it is in arpa/ftp.h). Instead they use PATHSIZE (in sys/param.h). SCO doesn't define the S_ISSOCK POSIX macro. My investigations reveal the mode of a socket is 0020000 (same as a character special). I have defined the S_ISSOCK macro This results in a duplicate test in lpd_jobs.c at lines 2407-2409 but this is harmless. Version 3.4.5 Mon Aug 6 12:59:27 PDT 2001 The pjl_ready_msg string was not being used for PJL JOB commands. Thus, the console message was not correct. (Noticed by: Jason L Tibbitts III ) Much nicer console message support by: Hermann Lauer The following change/update/modification was inspired by a set of patches from "Daniel E. Singer" who had some REALLY nice ideas. Added a 'no converter' and 'conversion error' to the file_output_match: file_output_match = [ ... * msg no_converter ] The '* msg no_converter' is appended to the end of all of the 'non-empty' file_output_match entries. The 'no_converter' is used to lookup the message; if postscript enabled then ps_no_converter value, else if pcl enabled then pcl_no_converter value, else no_converter Here are the default values: ps_no_converter = %!PS-Adobe-3.0 /Courier findfont 10 scalefont setfont 72 500 moveto (No conversion available for type '\%s{file_output}') show showpage no_converter = No conversion available for type '\%s{file_output}' Similarly, if the conversion fails, we use 'conversion_error' (we also define some some handy strings as well): ps_conversion_error = %!PS-Adobe-3.0 /Courier findfont 10 scalefont setfont 72 500 moveto (Conversion failed for type '\%s{file_output}') show 72 480 moveto (Using '\%s{pgm}') show 72 460 moveto (Error: '\%s{msg}') show showpage conversion_error = Conversion failed for type '\%s{file_output}' Using '\%s{pgm}' Error: '\%s{msg}' Version 3.4.4 Sun Dec 24 17:52:16 PST 2000 Added ALL the user options to the ifhp.conf.in file so that you can use them. You now have all the PostScript, PCL, and PJL options available for use. Of course if your printer does not support this facility, nothing will happen. Pagecounter polling now works as advertised, sort of, most of the time, (I hope). You can specify a 'pagecount_poll' value and it will poll the printer for a 'non-changing' pagecounter value the specified number of times (default=1). Fixed up the ifhp.conf entries for HP Laserjet III aka LJ4 # PRINTER % - HP LaserJet III (PCL and PostScript Interpreter) [ hpiiisi hp3si ljet3 lj3 ] This now assumes a PostScript interpreter on the printer # PRINTER % - HP LaserJet III (PCL, PostScript via GhostScript) [ hpiiisi.gs hp3si.gs ljet3.gs lj3.gs ] This now assumes you use GhostScript Added a section in the README for Solaris compilation. The dreaded GCC 2.95 check for character values as indexes got me again. (Reported by: Lots and lots of people, including Jonas Olsson ) Added a 'pcl_term' and 'ps_term' option to allow PCL and PostScript strings to be send immediately after the job file and BEFORE the PCL EOJ or PostScript EOJ. (Inspired by: David E. Cross ) HPUX compilation without GCC had a gratuitious CFLAGS=-Aa. I removed the flags. (Reported by: Ryan Novosielski ) Version 3.4.3 Thu Nov 30 09:28:33 PST 2000 There is a total bizzarity of operation that seems happen with various printers. If the printer goes 'offline' or fails to respond for a long time, then the code tries to send command sequences that will force the printer to respond or retry the last operation. These happen during: SYNC sync_interval = 20 seconds default PAGECOUNT pagecount_interval = 20 seconds default WAITEND waitend_interval = 300 seconds default I have 'robustified' the code beyond all sensible levels... lets see if this works. Device Information for the 'appsocket' protocol is now obtained from the PRINTCAP_ENTRY environment variable. This allows you to have a simple standard printer configuration. IFHP-HOWTO updated as well. I have added a VERY odd formatting capability for options: value=ThisString %s{value} -> ThisString %U{value} -> THISSTRING %M{value} -> Thisstring %L{value} -> thisstring Ah, the joys of various programs that want 'UPPERCASE' 'Leading case' or 'lowercase' for option values. This now allows you to have lpr -Zpaper=legal -> Zlegal -> a2ps -M %M{paper} -> a2ps -M Legal which is truly a hack of the worst kind. However, the alternative is to support a modified version of GhostScript (yes... it is fussy as well), mpage, a2ps, etc etc etc GhostScript now gets paper sizes passed to it if you use the standard 'letter legal ...' OR paper=letter OR papersize=XXX This is managed by a new configuration entry: papersize= a1 a2 ... letter legal - all the sizes that GhostScript can handle papersize_default= letter - default value. The '\%s{papersize}' is a BUILT IN that handles this by searching the -Z and -T options for the last entry in the papersize list and using this as the size value. And of course, GhostScript conversion now has a -PAPERSIZE=\%M{papersize} entry. Version 3.4.2 Mon Oct 16 09:29:53 PDT 2000 unsetenv does not exist on some systems, and I better check all the executables. (Spotted by: Christian Haul ) The 'shutdown_app_socket' option is now made the default. This will cause ifhp to do shutdown(1,1) and then read from the printer until EOF. This solves the mysterious 'RST' packets that have terminated connections and caused the printer to abort printing. (Astute observeration by: Gerald Damian ) ifhp was exiting when it got an 'out of paper' message. A bit too extreme, this one. (Reported by: Scott Schwartz ) Version 3.4.1 Sat Oct 14 13:37:40 PDT 2000 Updated Internationalization Fixed up some errors in the ifhp.conf comments. (Spotted by the eagle eyes of: Pekka Savola ) Added a 'forceprocessing' flag as suggested by Brendon Hack. (Patch and suggestion by: Brendan Hack ) PostScript, CTRL-D and CTRL-T support There are many printers which do not like/allow the CTRL-D (Serial port 'end of job' indication) and/or the CTRL-T (Serial port 'request status' indication) over network or parallel port connections. This is yet another attempt to handle this in a simple manner: ps_eoj (default TRUE) - use ^D ps_eoj_at_start (default TRUE) - use ^D at start of job ps_eoj_at_end (default TRUE) - use ^D at end of job ps_ctrl_t (default TRUE) - use ^T to solicit status end_status=busy:idle use these keywords in the status indication solicited by CTRL-T or when there is an error to determine that the job is done. If your printer cannot handle ^D at all, set: ps_eoj@ If your printer cannot handle ^D at job start, but requires it at job end, set: ps_eoj_at_start@ If your printer cannot handle ^D at job end, but requires it at job start, set: ps_eoj_at_end@ (I don't think this is possible, but it is included for completeness). If your printer cannot handle CTRL-T in the input stream or cannot return status when solicited, set: ps_ctrl_t@ Version 3.3.22 - Sun Aug 20 11:24:02 PDT 2000 The 'read from parallel port' code caused status@ to be ignored. Just a tad aggressive on this, I was. (Reported by: Godfrey ) Version 3.3.21 - Fri Aug 11 12:49:40 PDT 2000 After a deep look into parallel port IO and bidirectionality, I have come to the conclusion that it is possible to handle this, at the cost of a high polling rate at the process level. To this end, the Read_write_timeout() code has been rewritten, and now does polling. This actually works BETTER than the original version in my tests. First, the device must be opened read/write. This is done by LPRng when you set the :rw flag - lp: :rw:lp=/dev/tty0 Next, if the device is a character device (S_ISCHR(statb.st_mode) is true AND not a tty (isatty(fd) returns 0) then ifhp will perform IO by doing a write followed by a read(). On Linux systems the read is done in blocking mode; on non-Linux systems it is done in nonblocking mode. It is expected that the read will either terminate with a 0 value (nothing to read), -1 and errno set to 'EWOULDBLOCK' or 'ENOAVAIL' or an appropriate error code indicating no status, or N where N is the number of bytes read. If this code is run on a non-linux system which has implemented bidirectional IO and this does not work, I would be interested in hearing about this. Note that on these systems the 'nonblocking' and 'blocking' calls might need to be removed. Please try this and tell me the results and I will update the ifhp filter. I have added a small flag for the convenience of people who have some very strange accounting requirements. The 'wait_for_banner' flag causes the OF filter mode to wait for banner printing to be completed before suspending. This will allow the accounting facility to correctly assign pages to banners, jobs, and so forth. Version 3.3.20 - Fri Aug 11 08:03:39 PDT 2000 Fixed up error message for 'file_output_match' parsing so the original line is printed. You can now handle key += [ ] correctly. More tracing statements added to allow you to trace what option value is being used where. Expanded option values and interpolated escapes. This allows things like: ps_cardstock = [ media=Card\040Stock ] This will now expand correctly and be interpolated as 'Card Stock'. (Problem discovered by: Lars Kellogg-Stedman ) You can try to do job nesting using things like: :ifhp=model=hp,pjl_job@,of_options=pjl_job This requires that you also use 'PJL ECHO' for end of job detection. Version 3.3.19 - Sat Jul 15 17:08:42 PDT 2000 Fixed the configure error message about the file utility so that it referenced the ftp://ftp.astron.com/pub/file/ site. (Note by: Raymond Lam ) Do write with timeout if the output device is not readable. Also if the device is readable, then it must not be a file, block device, or character device and not a tty. Forced blocking mode on file descriptors before calling select. This appears to solve the problem with 'select' failing on various devices. Statistics were bogusly computed, progress_k did not work correctly. (Patch by: Tom Fitzgerald ) Tried to speed up output when an OF filter is being used by not having the OF filter confirm that the banner was output, but simply proceed with no checks. This, of course, results in a bogus page count by the IF filter. But it seems to speed things up quite a bit. This also now behaves like the older versions of ifhp that did not check for end of job when stopping of filters. C'est dommage! Version 3.3.18 Sat Jul 8 12:35:16 PDT 2000 gs_unidriver entry had \%s{gs_device}.upp instead of \%s{gs_device} Found by: Mark Steph Added ps_eoj_at_start@ to HP 8550 printer entry, which does not like ^D at start of PostScript jobs. (Discovered and reported by: Micheler Klaus ) Update ifhp.conf with phaser360, phaser740, phaser550 Need different PostScript than the Phaser 350 and 550 (Supplied by: Michael J. Carter ) Modified the Is_readable() to use fcntl() to get the RD,RW,WR status of the file descriptor. Added options: pjl_ready_msg = \%s{n} \%s{J}:\%s{P} pjl_display_size = 20 The 'ready_msg' is expanded and displayed on the printer console display. The display has at most pjl_display_size characters. (Patch supplied by: John R Lane ) Version 3.3.17 Thu Jun 22 07:49:35 PDT 2000 The ifhp.conf file references the GhostScript uniprint driver configuration file 'stc1520.upp' or 'stc1520'. This was taken from the GhostScript documentation. In reality, this is the 'stc1520h.upp' configuration file. Corrected in the ifhp.conf file and email sent to the GhostScript support group. (Reported by: Gerald Damian ) The accounting information written to the accounting file did not include user and printer name. The 'accounting_info' option now allows you to specify the additional command line options you want added to the line written to the accounting file. (Reported by: Jonathan Knight ) The accounting script did not have any options passed to it. You now get the same options as with the 'accounting_info' added above. (Patch supplied by: Ian MacPhedran ) Version 3.3.16 Mon Jun 19 09:38:40 PDT 2000 If the status file is not open and an error message needs to be put out, it is now put out on STDERR. All fatal messages are also put out on STDERR as well, so you can see the information in the printer log file. This solves the problem of the 'silently vanishing filter'. The DISTRIBUTIONS/FreeBSD Makefile updated. Version 3.3.15 Fri Jun 2 18:01:36 PDT 2000 Updated configuration file entries so that they match reality a bit better. Fixed up problems with using GhostScript and options If the model information is not found then an error is reported. Updated status reporting so it was not as verbose. (Patch by: Ian MacPhedran ) Version 3.3.14 Fri Jun 2 18:01:36 PDT 2000 configure now checks to see that the file utility handles the file - option correctly. The ifhp.conf file now lists the HP8000 as a 'laserjet' (Spotted by: David Kerr Livingstone ) The test for pagecounting did not handle 'no status' correctly. Update the IFHP-HOWTO to use DocBook format. Version 3.3.13 Wed May 24 09:45:32 PDT 2000 added of_options option, which are a set of options that are used if the filter is in OF mode. This allows: :ifhp=pagecount@,sync@,waitend@,of_options=pagecount sync waitend So you can fling jobs at the printer as fast as possible and have the of filter do the dirty work of getting pagecounter values. I have modified the behavior of ifhp when it is running in OF mode. Previously, when running as an OF filter it would operate in 'passthrough' only mode and not detect the type of file it was printing. This would cause problems as usually the banner was the file it was printing and various 'setups' needed to be done to print the banner correctly. Now when it runs in OF mode it reads the input into a file, carefully looking for the '\033\001' sequence, and when it finds it, prints the file using the normal printing functions, and then suspends itself. This greatly improves the robustness of banner printing, etc., as the whole 9 yards^H^H^H24 meters of the ifhp filter processing is applied to the file. As far as I can tell, this appears to break no existing applications, programs, processing, etc., and now allows 'whacko' banner pages to be printed. Sigh... The console now displays the userid even when ifhp is getting the pagecount stuff. Edited the IFHP-HOWTO and update the section on pagecounts. Added an lseek() in a couple of critical places to rewind the input. (Noticed by: Niklas Edmundsson ) Version 3.3.12 Mon May 22 15:14:11 PDT 2000 The 3.3.12 distribution was screwed up - the old Makefile rather than the new one was used... oh the joys of RCS version control. Added a 'pagecount_start' and 'pagecount_end' flag to allow you to skip pagecounts at job start or end. Discovered the 'no_ps_eoj' and 'no_pcl_eoj' flags were conflicting with other stuff, and changed them to 'pcl_eoj_at_start' and 'ps_eoj_at_start'. Names are now compatible with rest of options. By the way, these flags look really strange... I wonder what horribly strange printer inpired them? Sigh... got to flag changes with printers but then some manufacturers would get a bit annoyed. "Its not a defect, it's a feature!" Sigh. Version 3.3.11 Sat May 20 09:37:02 PDT 2000 Fixed up a couple of missing 'ps_user_opts' entries Added a tc=entry1,entry2,... facility to allow you to include entries. WARNING: this is a literal include facility, so the placement of the tc=... is critical. Model configuration selection: The ifhp.conf information is first scanned for the 'default' model information, and then for model specific information. This allows you to add new 'default' values to the end of the ifhp.conf file and have them override the supplied ifhp.conf file. For example: #ifhp.conf - default forceconvesion@ ... more default values [ hp3* ] .... values specific to hp3* #--- end of the supplied stuff # user supplies this [ default ] # overrides default forceconversion forceconversion [ hp3* ] # overrides hp3* values Makefile: install -s on some system does now work with with script files, so Makefile changed to accomodate this. You can now use key += value to append to an option value. For example: key = [ this that ] key += [ the other ] -> [ this that the other ] key = value key += newvalue -> value newvalue key += on a line -> value newvalue on a line You want to you can now add stuff to an existing entry. This makes things like the following possible: [ xx* ] key = [ basic ] [ xx1 ] key += [ morefor1 ] [ xx2 ] key += [ morefor2 ] The 'a2ps', 'enscript', and similar programs may exit with bogus error codes if they need to wrap lines, change fonts, etc. The use of a 'wrapper' script is documented in the ifhp.conf file and the HOWTO. The -Zstartpage=xxx and -Zendpage=xxx options were not implemented and documented correctly. (Patch by: Ingo Jauer ) Makefile.in did not have $(SRC)/ifhp.conf.template (Noted by: Bill Kamp ) Makefile did not remove some files created during configure (Patch by: George Lindholm ) Fixed a problem with SIGCHLD handler - now sets the SIG_DFL Modified the 'Do_waitend' code to better handle appsocket and other printers that return strange error status. Modified the 'End_ctrl_t' option so that end_ctrl_t@ suppresses the use of CTRL_T to obtain status information. The Process_OF code did not reset the nonblocking mode of the output descriptor after restarting. This could be a problem for devices that do not return status on time. The amount and size of files printed is now a double, making the progress when printing 2GByte files correctly reported. Amazing, the size of files that people print... There was a very strange behavior of list variables that caused a memory leak. If you had: xx=testxx pjl_yy=testyy pjl_nn=[ v\%s{xx}=value v\%s{yy}=value ] then the variable would be set to: v\%s{xx} -> vtestxx (look up xx first, then pjl_xx) v\%s{yy} -> vtestyy (look up yy first, then pjl_yy) so you get the effect of: pjl_nn=[ vtestxx=value vtestyy=value ] This behavior has been modified to restrict the expansion to keys appearing in a list ( [ ... ]). I don't have the faintest idea why this was in the code, and it appears to be a development coprolite. Read_write_timeout() code has been Turkey Proofed. Now will exit with nasty message when called with inconsistent parameters. The Process_OF code was modified in order to make it more readable. A more rigorous check for option appsocket and a missing dev= option was put in. A malformed printcap file prompted this check. Bad coding with the 'banner' stuff once more revisted. Arrgghh... history and compatiblity is ugly. The problem here is trying to be compatible with older releases of LPRng. -- we should have LPRng generate banners -- need to generate banners based on printer type -- thus ifhp needs a 'banner generation' mode bp=/..../ifhp -Tbanner_only bp=/..../banner -> symlink to ifhp Added a 'set nonblocking' calls at the appropriate places to make sure that write will be done correctly. Did not terminate argv[] array with 0, caused execve problems. Also fixed up '/bin/sh -c' passing of converters The ARGV, ZOPTS, and TOPTS were not being passed to converters correctly. (Discovered by: Johan Claesson ) When using a converter, ZOPTS and TOPTS have been replaced by \%s{Z} and \%{T}, and you need to use \%s{ARGV}. Duh! The lookup code for parameters, etc., was using 'strcasecmp' rather than 'strcmp'. This had the effect of folding options with names such as A4 and a4 to the same entry. The code has been modified so that we lowercase the -Z and -T stuff, and lowercase strings where they are used to initialize a lookup table. I wonder where my mind was at when I decided to make name lookup case insensitive. Never again! Bad BAD idea. This is OK for user interface options, but HORRIBLE for internal lookups. (Original discrepancy noted by: Willi Burmeister ) For some very odd reason I was adding the ARGV arguments to the accounting information. This caused problems when a -T argument was passed as the first -T argument was the elapsed time. The \%s{name} lookup was not looking in the -Zopts for values. Moved the 'ps_sync' and 'ps_asynch' entries in the ifhp.conf.template to the defaults area so that other models can use them. The close_on_exec() code failed on systems where the number of file descriptors returned by getdtablesize(0 was bogus. Used the Get_max_fd() code. Oh, for a 'max open fd' call... Removed banner printing ENTIRELY. Banner printing support is now done by LPRng. Should have done this LONG ago. Breaking point reached when 'ld' string was used and this broke banner printing. Grrr... Fix up the format conversion program specification so that you can use \%s{name} parameters in the program list: file_output_match = [ *pcl* pcl \%s{pcl_converter} *ps* ps \%s{ps_converter} *postscript* ps \%s{ps_converter} *pjl* pjl \%s{pjl_converter} ] device=epson resolution=-r240x72 ps_converter= [ /usr/contrib/bin/gs -dSAFER -dBATCH -q -sDEVICE=\%s{device} \%s{resolution} -sOutputFile=- - ] Added a 'ghostscript' device as well: # PRINTER gs_support - Printer with GhostScript conversion [ ghostscript ] pcl@ pjl@ ps text # device=epsonc # resolution=-r240x72 ps_converter= [ /usr/contrib/bin/gs -dSAFER -dBATCH -q -sDEVICE=\%s{device} \%s{resolution} -sOutputFile=- - ] text_converter= [ /usr/contrib/bin/a2ps -q -B -1 -M Letter --borders=no -o- | \%s{ps_converter} ] file_output_match = [ *postscript* raw \%s{ps_converter} # if your printer has PCL, use: *text* raw \%s{text_converter} ] This allows you to use a printcap with: lp: :lp=xxxx :ifhp=model=ghostscript,device=epsonc,resolution=-r240x72 :if=/usr/local/libexec/filters/ifhp Makefile.in did not have default for UPDATE, and used $(SRC) - should have been ${SRC}. (Fix by: Willi Burmeister ) Removed the 'UPDATE' Added DISTRIBUTIONS directory with testscripts for installation and package generation for various systems. Added the ability to send 'alerts' to operators or whatever based on filter activity. ## PJL USTATUS information will include a lot of ## codes that are just not interesting, such as 'printer on line', ## or 'power up'. You can suppress reporting status for these codes ## by putting their code numbers in this list pjl_quiet_codes=[ 10001 40000 ] ## Special error messages ## One per line ## The idea is that you may get an error code, but you ## it is not 'standard'. You can add additional codes here ## or override the default strings in the ifhp source. ## pjl_error_codes=[ 10006=Toner Low ] ## Inform operator if this error number occurs pjl_alert_codes=[ 15* 40* 41* 42* 44* ] # use this program to write error to operator # error will be read from STDIN. You can play games with # mail or whatever you want here. # for example: pjl_alert_handler=/usr/local/libexec/filter/alert_handler The pjl_alert_handler program will read the error message on STDIN and is responsible for forwarding to the appropriate destination. Fixed up program forking and handling and put it in one spot. This was just a programming/debugging change. Went through the Appsocket code and ripped it out. Fixed up the logical flow of things so that if you set the appsocket code you can use pagecount with 'ps' and have it work. There is a workaround for the 'end of job' detection - if we have status enabled then we do the full 'idle detection' thing. This will now cause us to exit correctly when we have Appsocket and get an EOF on the read. You can now have a 'filter' in the file_output_match table: file_output_match = [ *postscript* ps \%s{ps_converter} *pcl* pcl \%s{pcl_converter} *pjl* pjl \%s{pjl_converter} *printer*job*language* pjl *text* pcl \%s{text_converter} *gzip_compressed* filter \%s{gzip_decompress} ] This will cause the indicated program to be used to decompress or recompress or whatever the input file. This can be done add nauseum... The mind boggles on what you can do with this. Courtesy of the a2ps and psfilter folks, who did a neat job... When Kyocera-FS1750 wakes up, it sends NULL PostScript status. This screws up or used to screw up 'waitend' operations. (Information and patch from: Sebastian Wahl ) Version 3.3.10 Sun Oct 24 16:05:55 PDT 1999 Updated 3.3.9 Change information with missing stuff. When using appsocket protocol, the of filter was not opening the status file correctly and was sending junk to the printer. (Spotted by: John McCash ) HP5SiMx (hp5simx) and similar printers with paper tray selection You should be aware that some HP and other manufacturers have a 'paper size' selection which OVERRIDES the normal tray selection. If you are printing PostScript, then by default the paper size is 'letter' and you will get paper fed from the tray with 'letter' paper in it. If you have a4 or some other size you may get interesting results. You should experiment with the various selection commands to determine if you need to have upper/lower or letter/ledger (a4/ledger) selection. Very nasty, this. (Experimental results by: John McCash ) The -c (binary) flag was not setting any values and the RAW file type was not being handled correctly. (Reported by: Pavel Lisy ) The 'file_output_match' value may now have the form '' meta characters separated by single spaces, then the filter is invoked using '/bin/sh -c "filter" This change allows us to put a pipe or other item in the filter specification. Needless to say, it also opens gaping security holes as well, so the system adminstrator is warned to be careful. Example: (Note: lines have been broken for convenience - all conversion filter specification must be on a single line): file_output_match = [ # invoked via execve *postscript* raw \ gs -sDEVICE=epson \ -sOutputFile=- -sPAPERSIZE=letter -q - # invoked via /bin/sh -c *text* raw \ /usr/local/bin/a2ps -q -B -1 -M Letter --borders=no -o- | \ gs -sDEVICE=epson \ -sOutputFile=- -sPAPERSIZE=letter -q - ] OR file_output_match = > >> setpagedevice } if ps_staple_front=<< /Staple 1 /StapleDetails << /Type 6 /StapleMode 0 >> >> setpagedevice ps_staple_rear=<< /Staple 1 /StapleDetails << /Type 6 /StapleMode 1 >> >> setpagedevice ps_staple_both=<< /Staple 1 /StapleDetails << /Type 6 /StapleMode 2 >> >> setpagedevice (Patches and idea by: Garrett D'Amore ) Modified ifhp.conf reading code to be more robust and efficient. Added a 'reopen_on_job' option to force appsocket to reopen connection to printer if there is a long delay sending job to printer. (Inspired by comments from: Isaac Hollander ) configure now takes --with-admindir=DIR where to install ifhp.conf, default: /etc --with-filterdir=DIR where to install ifhp and other executables Added FreeBSD ports template to distribution for tracking purposes. Version 3.3.3 Fri Jun 11 11:44:23 PDT 1999 ifhp.conf - added lexmark4039 entry, to do synchronizcation. accounting information - quotes added around options Version 3.3.2 Mon Jun 7 15:52:55 PDT 1999 File descriptor 3 was closed when forking accounting program. (Reported and fix by: Jesper Dangaard Brouer ) Fixed up minor problems with PostScript banner generation. (Reported by: Reinhard Zierke ) Added a 'forceconversion' flag to force the file utility and the conversion utilities to be used. Version 3.3.1 BASELINE DISTRIBUTION Version 3.2.10 QMS printer support updated to try and handle appsocket a bit better. You now need a 'qms' flag to identify the printer as a qms printer. (Patches and suggestions by: Johan Claesson ) Version 3.2.9 Removed '"' from ifhp.conf file that really messed things up. Version 3.2.8 Enabled PCL copies=nnn code (Missing operation reported by: Gerard Kok ) Fixed pcl_linesperpage=...F instead of E (Reported by: Gerard Kok ) When you are using the TEXT to XXX translation facility, the .... ZOPTS .... will get replaced with .... -Zzoptions .... and .... TOPTS .... will get replaced with .... -Ttoptions .... Updated ifhp.conf file, added comments, moved HP5SiMx PostScript to the HP5SiMx section. Modified the Pjl_console code to not be 'sticky'. This was painful. (Suggested by: Olav Kolbu ) After extensive hand to hand combat with QMS printers, discovered that they apparently do NOT return status or PostScript output in a reliable manner. Added/modified [qms1725] entry to reflect this. Use appsocket protocol, but WITHOUT status capability. Also note that port 35 seems to be used by default, although this can be configured via the TCP/IP telnet interface. (Your milage may vary). Version 3.2.7 Rearranged code in Read_write_timeout() so that a read of status is attempted BEFORE exiting on a write error. added pclbanner to the distribution IFHP recognizes the PJL 'reset' sequence and treats it as a 'raw' or unprocessed job. This allows you to send PJL jobs to the printer and not have them interpreted as PCL. Version 3.2.6 Added a console message for Lexmark and HP Printers that will be 'sticky' and stay visible after the job has been printed. (Provided by: Jason L Tibbitts III ) Fixed up 'progress' so that it prints Kbytes correctly... sigh. Version 3.2.5 changed the a2ps options in ifhp.conf: -q -B -1 -M Letter --borders=no -o- (Suggested by: Jeff Gostin ) Version 3.2.5 Cleaned up documentation, made sure the various configuration and installation defaults were consistent. Ummm... and also removed a core dump from the distribution. Sigh... Version 3.2.4 Cleaned up Makefile.in so that running configure in another directory will be possible. That is, cd ifhp... where=`pwd` mkdir ... cd ... sh $where/configure will now work correctly, and you can do a make install in $where Added README.utilities and updated ifhp.conf file so that it has URL and ftp sites for file, enscript and a2ps tools. The phaser support did not work with OF and IF filters. More 'shutdowns' and clean up added. Sync and waitend made separate operations. You can now skip 'syncing' at the start, but you can force 'waitend'. This is side effect of phaser operation. You need to read status back from the printer until it closes the reverse connnection. If you have appsocket with waitend, you will read status back until the job finishes. If you do appsocket with waitend@, you will get no status information for job. This is not good, but gives you very fast throughput. Version 3.2.3 Updated Makefile.in so that when you do $(path)/configure for building in a separate directory, the right files are found. Version 3.2.2 Added support for Tektronixs Phaser Printers - using the appsocket protocol Version 3.2.1 Most of the code seems pretty stable, so we start a new major release. There are mostly minor changes in the code for this release. Added 'PseudoMagicFilter Support' and got text to PS conversion working correctly. # # text conversion control # # control text to whatever conversion # # if you cannot find type, then try this file utility # # if the type is text and not supported on your system, do a conversion # Method 1 - set 'default_language' as text, and run # the program through a text to known converter # default_language=text text_converter=/usr/local/bin/a2ps -q -B -o- # output of the converter is pcl, ps, or raw text_converter_output=ps # # Method 2 - # Use the file util and match the output # file reports format information # glob text_output_format text_converter # - you do a glob match against pattern and use the converter # default_language=unknown file_util_path=/usr/bin/file - file_output_match = [ *text* ps /usr/local/bin/a2ps -q -B -o- ] # you need a temp file location tempfile=/var/tmp/ifhp Added a horrible horrible kludge that allows multiple fonts to be loaded. You need to use: ifhp -Zfont=this,font=that,... which gets translated into font=this,that and the font handling code then works OK. Added a QMS1725 entry that just might work. Fixed up a couple of minor PostScript quirks. Added PJL support for duplex. Version 3.1.20 Documentation. More Documentation. More ... Sigh... Version 3.1.19 Made status messages less verbose. 'trace_on_stderr' is now just 'trace' ... Sigh... Version 3.1.17 Changed CRLF back to not effective... Sigh. Version 3.1.16 Fixed a problem with testing short files for file type. (Noted by: Mike Whitson ) Added ledger paper types. HP printers are very odd... (John McCash thinks so too) Made CRLF the default in ifhp.conf Version 3.1.15 Not distributed Version 3.1.14 ifhp.conf: pcl_pagesize \033&l#A - set page size Thu Feb 4 16:52:58 PST 1999 remove_control=xyz... if PostScript AND you have a ^x, ^y, ^z, etc., remove it. Suggested use: remove_control=CT removes CTRL-C, CTRL-T (Suggested by Mike Whitson ) Version 3.1.6 - 3.1.13 Lots and lots and lots of changes in ifhp.conf, etc, etc. Stable version approaching. Version 3.1.5 Experiments with various printers showed that the ifhp.conf file needed modification. Added a 'banner_only' mode for banner printing only. Version 3.1.4 Sun Dec 27 18:22:44 PST 1998 Total rewrite of the ifhp software using a clean room approach. Patrick Powell papowell@astart.com $Id: CHANGES.OLD,v 1.22 2004/10/05 15:50:10 papowell Exp papowell $ ifhp-3.5.20/CHANGES0100644000175100017510000022032710130541262013755 0ustar papowellpapowellVersion ifhp-3.5.20 - Tue Oct 5 08:09:18 PDT 2004 Version ifhp-3.5.19 - Thu Sep 30 16:16:28 PDT 2004 Grrr... changed the default 'Inputfile' value to 'STDIN' so it would print nicely, but this value is also used as a parameter to the file program. Grrr... added another test to the regression tests. This is getting silly. Patrick Powell Version ifhp-3.5.18 - Thu Jul 22 10:19:09 PDT 2004 More fixes/improvements to LED display support. (Patch from: Hermann Lauer ) Opening the 'file' name and not /dev/fd/0. This cause problem when running with LPRng and a -p format. (Reported by: Justus J. Addiss Changed email names in various lists, etc. from to . Modified some of the /dev/fd/0 device entries in ifhp.conf to be '-' so that older versions of GhostScript do not have problems Version ifhp-3.5.17 - Tue Feb 3 17:25:42 PST 2004 GCC extensions are unloved by some ANSI compilers. (Fix and Patches Courtesy: Jim Trocki ) Patch for ifhp which separates generation of jobnames from generation of display names. I see no reason why displaynames shouldn't contain for example ':' (Handy for displaying times...) (Patch from: Hermann Lauer ) Added: Phaser 7700 (with amendments to to SNMP monitoring) (Courtesy of: Stuart Marshall ) Version ifhp-3.5.16 - Fri Jan 2 07:28:39 PST 2004 The file conversion table for the 'DEFAULT' printer had a2ps producing PCL output. This should have been PostScript output. Version ifhp-3.5.15 - Wed Dec 17 16:48:50 PST 2003 ifhp.conf file was missing default ps_converter entry. Typeo in command argument parsing fixed. Version ifhp-3.5.14 - Tue Dec 2 15:43:20 PST 2003 If a printcap entry is provided as the PRINTCAP_ENTRY environment variable, it is used to initialize the IFHP configuration options. It turns out that the only option in conflict is the IFHP 'ps' (postscript) option and the LPD ps (printer status file) option. Only the 'lp' and options longer than two characters are used. You still need to use 'ifhp=...' for specifying options page control or other options that are order sensitive. You can put all of the other IFHP options that normally are in the ifhp.conf entry into the printcap file. The order of processing of options is: a) printcap - config extracted b) printcap - ifhp=... from printcap processed b) command line -T options extracted c) value of 'config' and 'model' found from current set of options d) ifhp.conf read for model information e) printcap (options > 2 chars long), ifhp=... and -T options reprocessed The page and formatting options must still be specified in the :ifhp entry for proper processing. OLD: lp:...:ifhp=model=hp5si,status@,letter OLD: lp:...:model=hp5si:status@:ifhp=letter Added a fixup so that a PJL value of '1' matches 'on' and '0' matches 'off'. Discovered that the Fix_option_str value was being discarded rather than used when looking up options of the form: xx=\%s{key} Also, expansions of the form name = [ value_\%s{id} ] were not being handled correctly. Added the baseline code for using ifhp options found in PPD files. Added support for Sharp AR-507 and other printers Version ifhp-3.5.13 - Mon Nov 17 08:40:15 PST 2003 The ifhp-3.5.12 distributions that were put up on various web sites were incomplete. Rather than try find and update them this version is simply a repackaging of the old version. Version ifhp-3.5.12 - Fri Nov 14 13:54:02 PST 2003 changed (char **) casts to (void *) casts ** SEE README.SNMP for details ** Added snmp_printer_status to get printer status via SNMP. Based on original check_printer_status script by John Perkins . Tested with several printers. Added README.SNMP to the top level README files. This can be used to help in reporting page counts for HP4100i printers, among others. WARNING: if you plan to use SNMP monitoring, then use the APPSOCKET option as well. This will cause connections to the printer to close and the SNMP agent will then indicate that the printer is 'idle'. If the connection is open, then several test printers reported their status as 'busy' rather than 'idle'. # if you want to use SNMP monitoring then use the snmp_printer_status # program. This program will report the status of a printer # by polling it using SNMP. Status will be read from both the # back channel (i.e. - connection to printer) and from the SNMP # monitoring program. The 'snmp_dev' device is determinded by the # ifhp program; it depends on the appsocket and other options snmp_monitor@ snmp_program=@FILTER_DIR@/snmp_printer_status -h "\%s{snmp_dev}" \ -m "\%s{snmp_model}" -f "\%s{snmp_program_conf}" snmp_program_conf=@FILTER_DIR@/snmp_printer_status.conf # the snmp_dev is a 'pseudo-variable'. If it is set # explictily by -Tsnmp_dev=IPADDR, else a printcap # :ifhp=...,snmp_dev=IPADDR, option, and finally the # printcap :lp=IPADDR%port value is used. The first one # found sets snmp_dev to IPADDR. # The snmp_printer_status.conf file has entries to specify the # SNMP Object Identifiers (OIDs) for variuos printers # The [model default] entry specifies a standard set of Printer MIB # OIDs to for status. # See the sample snmp_printer_status.conf file or the snmp_printer_status # man page for details. snmp_model=default # when we get status, we look for the following words in the # status to indicate that the printer is ready and/or idle. # Spaces in the status are replaced by underscores if necessary snmp_sync_status=ready power_save_mode snmp_end_status=ready idle # There are some totally brain dead printers that will NOT report # status correctly until a timeout period after the last close or # job sent. These are evil and ugly, but we love them anyways. # Delay snmp_wait_after_close seconds when you are using Appsocket # snmp_wait_after_close=1 # to use SNMP for sync purposes, set: # sync=snmp # to use SNMP for pagecount purposes, set: # pagecount=snmp # to use SNMP for waitend purposes, set: # waitend=snmp The snmp_printer_status program assumes that the device has some basic Printer-MIB functionality. If it does not, then you cannot obtain status reliably. Added the 'close_connection' option that closes appsocket connections after a transfer. Apparently needed for some printers that do not recognize an end of job until they get a closed connection. In order to handle broken PJL status reporting from some printers, added the status_ignore and status_translate options. From the ifhp.conf file: ## Status information is converted into strings of the form ## key=statusvalue. ## The following keys are assumed to be valuable: ## status - current device status ## error - device error ## warn - device error ## pagecount - device pagecount ## Other status will be shown in the log file but not used, ## and only when it changes. ## Ignore status reported with the following keys. ## These match the first characters of the keys. You can ## use _ to stand for blanks. Match is done using globmatch ## status_ignore= markerlifecount prt*stuff ## ## ## Under some very bizzare circumstances such as broken PJL ## implementations, you may need to translate the status keys from ## the vendor supplied to the ones needed above. ## Use status_translate to do the translation. The entries have the ## oldvalue=newvalue ## These match the first characters of the keys. You can ## use _ to stand for blanks. Match is done using globmatch ## status_translate= id=hostid *status=status ## Added foomatic support: lp: :ifhp=foomatic :ppd=/usr/share.../ppdfile OR lp: :ifhp=foomatic,ppd=/usr/share/.../ppdfile This will use the foomatic-rip program to process PostScript files. This is preliminary support and will be extended in later releases. Updated the ifhp.conf file for HP4100: [ hp4100 hp4200 hp4300 ] tc=hp4000_pcl pjl_waitend_byjobname (Thanks to: qiang lee ) Added the ability to specify the PJL SET variable values. MANUALFEED=ENUMERATED;OFF,ON ORIENTATION=PORTRAIT!ENUMERATED;PORTRAIT,LANDSCAPE Version ifhp-3.6.0 - Fri Sep 5 10:36:39 PDT 2003 Fixed up the 'ifhpXXXX' temp file problem and added HPGL2 support. (Thanks to Sam Lown ) There is now a 'send_job_rw_timeout' option that sets a maximum non-responding/non-accepting data time for a printer. This allows you to set a timeout for the maximum time that you expect a normal job to take and gives you a way to try to manage printers that will lock up with an hard error when fed a bad PostScript, PCL file, network overload, or SNMP packet. However, it also will cause printers which, when they are off line or or when they have an out of paper condition, etc., perhaps to be identified as a bad printer. It is a compromise and should only be used for this particuar situation. Fixed configure so that it now handles 'enable-OPTION' and 'disable-OPTION' correctly. Added the 'pjl_waitend_byjobname' patch. Briefly, this patch causes IFHP not to send a dummy job and to wait for the end of the original job using the PJL JOB facility. This may not work for some printers that do job spooling, and will send the end of job before the job is finished. It may be useful on other printers where this is not a problem. (Clever idea by: "Raymond M. Reskusich" ) Added some more agressive 64 bit file system support as suggested. (Neat suggestion by: Ben Woodard ) HP DesignJet 800ps support by Lars Kellogg-Stedman Version ifhp-3.5.10 - Fri Jul 12 16:21:49 PDT 2002 The top level install (make install) did not install the utilities correctly on systems that did not have a BSD install. (Reported first by: Jason Keltz ) Pdf2gs_converter should be pdf2ps_converter in ifhp.conf.in file. The code for += did not handle tc= inclusions correctly. (Side effect of this reported by: Jason Keltz ) Updated some PostScript definitions for some printers. configure now uses AC_MSG_WARN. The check for /dev/fd/xx now issues warning that PDF conversion may not work for the default PDF to PostScript conversion. The \%s{inputfile} option expands to: command line -e value (compatible with LPRng passing file name as the value of the -e option) OR /dev/fd/0 if -e value not defined OR - if /dev/fd facility is not available. This solves a problem with PDF to PostScript conversion, where the PDF conversion was done using GhostScript and GhostScript needed to perform a file seek operation, and the '-' (stdinput) specifier was deemed to be 'unseekable'. Sigh... So we have this fix in ifhp. Updated the CREATE_CONFIGURE and STANDARD_configuration scripts. Using the automake, autoconf facilities. Version ifhp-3.5.9 - Sat Jun 22 14:11:15 PDT 2002 Fixed up tc parsing so it handles tc= [ xx ] by not expanding the xx entries (and tc=[xx], etc. as well). The configure tests for detecting the version of ghostscript were incorrect. This really screwed up conversions. Installing the UTILS in FILTER_DIR/UTILS. This makes them available for use. Added a README.TESTING file. This contains notes on how to use the sendhp.sh script for testing. Missing initialization for 'pagecount_prog' in main(); Fixed up problem with ifhp error message printing. (Found and patched by: Thierry Besancon ) Added '-dPARANOIDSAFER' to ghostscript flags and made the security check cause an abort. The ghostscript problems should be fixed by now. Added Canon imageRUNNER 550/600 ifhp.conf entry. This printer is REALLY unusual. May extend the printcap entry in the future. Couple of minor fixes to ifhp.conf (Patches by: Steven J. Birt ) Version ifhp-3.5.8 - Mon Apr 1 17:14:06 PST 2002 New 'Appsocket' support and configuration lp: :lp=host%port :ifhp=model=xxx,appsocket :filter=/.../ifhp #:of=/.../ifhp You do not need to have /dev/null now, you can have LPD open the connection, and then IFHP will simply use the connection information. This greatly simplifies things. Note that you MUST use ifhp 3.5.8 or later for this to work. The 'Read_status' code has been savagely attacked, once again, and the varous insane combinations of devices that have read return 0 or -1 when there is no data has been worked at again. Also, the code for parsing return status has been looked at and the odd case of PostScript printers that return a 'print' value WITHOUT a CR/LF has been attempted to be solved... I hope this is the last time we go around the rose bush on this one. Also, the Xerox/Phaser 5400 has been added. This device has the obnoxious habit of returning a JOB ID whose key (ID) conflicts with the INFO ID key (ID). So we ignore any ID keys/value pairs unless they are returned by the 'PJL INFO' status. hp4l entry modified, Using 'laserjet', the printed area is shifted to the right on a 'portrait letter' piece of paper. Using 'ljet4', it prints centered. I.e., it looks better. (From: Luca Filipozzi ) ps_eoj, ps_eoj_at_start, ps_eoj_at_end now work correctly Once again the 'Appsocket' stuff rears its ugly head. Added a 'shutdown(1,SHUT_RW)' to FORCE the &*()()*& connection to the printer to be clobbered. Grrrr.. Also, added a check for the special case when appsocket is specified and you are using the OF filter (banner printing). STATUS HELPERS sync=|/path_to_program pagecount=|/path_to_program waitend=|/path_to_program The sync, pagecount, and waitend functions can be implemented by running a 'status helper' program. These programs are run with: STDIN = printing device STDOUT = STDERR = status Information written to STDOUT/STDERR should have the format: key=value as for PJL status information. The same processing is done for this information as for the PJL USTATUS information, so you can return an error code (CODE=xxxx) value that will be treated as a PJL USTATUS error. The following are 'special' keys: KEY VALUE sync 1 (or nonzero) - sync is done waitend 1 (or nonzero) - waitend is done pagecount nnn - pagecounter value Note: you can use a single program to do all 3 operations, in which case simply write 3 lines with sync, waitend, and pageount values, i.e: sync=1 pagecount=205667 waitend=1 Alternatively, if the sync,waitend, or pagecount program exits with 0 status, then success is assumed, otherwise IFHP will exit with an error status. Exit code: JSUCC - 0 - success JFAIL - 1 - fail with retry later JABORT - any other code Added special case parsing for PostScript printers that do not put NL (\n) at the end of error messages. Now handles %%[ status: xxx ]%%%%[ stuff: xxx ]%% correctly as %%[ status: xxx ]%% %%[ stuff: xxx ]%% (Pointed out by a Netatalk user: Rob Joyce ) Fixed up STRIP in configure.in so that it does not collide with autoconf STRIP Added a '--with-pagesize' option to allow you to specify default page size. Currently only selects default size with PCL. Added a '--with-fontdir' to specify the font directories. The default directories are now: default: FONT_DIR=${libexecdir}/fonts OR /usr/libexec/fonts/ pcl_fontdir = ${FONT_DIR}/pcl ps_fontdir = ${FONT_DIR}/ps pjl_fontdir = ${FONT_DIR}/pjl Note: you can always add these to the END of ifhp.conf file: [default] ps_fontdir=/... pcl_fontdir=/... pjl_fontdir=/... Discovered a stupid typeo that somehow crept in via the joys of cut and paste. Now the xx += stuff works again. Grrrr.... (Nudged into looking at the right place by: "Steven J. Birt" ) Note: this also solves the core dump problem reported by Christoph Beyer Found a possible core dump problem. Added safestrlen() to the paranoid string stuff. Fixed up a slew of casts so that gcc -W stops nattering. Changed GhostScript driver from ljet2 to ljet2p in ifhp.conf. Version ifhp-3.5.6 - Sat Feb 23 07:36:20 PST 2002 display@ option disables/enables display of console message display_size=nnn sets size of display - lp:ifhp=display@ or ifhp -Tdisplay@ - lp:ifhp=display_size=20 of ifhp -Tdisplay_size=20 (Suggested by: Nick Bruton ) Version ifhp-3.5.5 - Fri Feb 22 16:47:59 PST 2002 Lexmark 4039 should be: ps_sync= serverdict begin 0 exitserver statusdict begin true setenginesync end ps_async= serverdict begin 0 exitserver statusdict begin false setenginesync end (Reported by: Johan Bengtsson ) On the alpha, cc insists that (the line of the beast): > cc: Error: ../../src/perlobj.c, line 666: In this statement, "p->info.array.value" and "len" cannot be added. (noadd) > memmove(p->info.array.value+len, p->info.array.value, olen+1 ); > --------^ > As far as I can tell, p->info.array.value is a void*, so adding an int to > it is not allowed. I suggest you explicitly cast it to (char *), like in the > previous line, *((char *)(p->info.array.value)+olen) = 0; > This is also the case in lines 615, 713, 813, and 837. Fixed. I wonder why GCC -warn did not catch this? (Reported by: Hans Peter Verne ) HP8100 'ps_tabloid' selection should really be ps_ledger. (Patch from: Steven J. Birt ) Replaced PDF2PS with the GhostScript conversion stuff. (Idea from: Thies Meincke ) Version ifhp-3.5.4 - Fri Feb 8 19:23:05 PST 2002 Use the new OBJ library and debug options: debug= 0-6 - displays details about job handling. bigger the number, more detail database, database+1 - database+4 - ifhp.conf parsing REALLY verbose utils, utils+1 - utils+4 - OBJ library, REALLY verbose Fixed up PostScript printer messages when the printer detects an error. This problem appears when a bad PostScript job is sent to the printer and the printer returns status information. Some of the fields are 'unusual' for some vendors. Rather than just display the 'error' information, I now put out the whole PostScript status message. The 'gs_converter' values needed '|cat >&3'. (From the mystery poster: imacat@mail.imacat.idv.tw) GhostScript developers have added a -dPARANOIDSAFER flag to solve some security issues. Added this to the gs_converter definitions. The 'pagesize' option has been merged into the papersize facility. Now you can select the papersize from PCL and PostScript using the same facility. This is, as they say, a one-size-fits-all approach. You must modify the ifhp.conf file now if you want to add more paper sizes/changes. This is kinda reasonable... The method used was to add a translation table (pcl_papersize_index for PCL), and to use the %d{key,lookuptable} facility. This does a lookup on the value for 'key' and then translates it using it as a key into the lookuptable. The lookuptable has to be a value which hash the format: k=value k=value and this is then split into a hash and used for the lookup. Version ifhp-3.5.3 - Tue Jan 22 16:17:59 PST 2002 changed a lot of strxxx to safestrxxx to avoid problems with strxxx coredumps when passed NULL strings. Missing check to see if output is to a file - if so, then we set status@ (Courtesy: Jim Trocki ) Version ifhp-3.5.2 - Fri Dec 21 11:08:36 PST 2001 New parallel port birectional IO support. This has been tested on RedHat 7.2 linux (Kernel 2.4.7-10), FreeBSD 4.4-Release. It is REALLY stupid, but it seems to work. If you turn the printer on and offline then you might get an IO error. Note that the printer must be connected and detected by the kernel for bidirectional IO to work, otherwise the IEEE nibble mode will not be enabled. I wish there was a way to force this to be rescanned at open(), but it does not appear to be easily done. Of course, if you turn your printer on, then it may or may not work... New USB port birectional IO support. This has been tested on RedHat 7.2 linux (Kernel 2.4.7-10), FreeBSD 4.4-Release. The parallel port code seems to also handle USB ports as well. Amazing... I have also put in some friendly 'hints' why you may not be getting status. This will help the folks who have problems. I have also update the ifhp man page to reflect this. Added @PJL RESET to the PJL setup commands. Note: Should I also add a PJL INITIALIZE as well? This will control the sticky fingers on the control panel. But if this is the case then I suggest that the admins use a special job and lock the control panel. See the PJL refence manual for Password and DEFAULT stuff. Job cancellation now handle gracefully... but you still have to send the entire job to the printer... This is a bit of a pain, but it seems to be the right thing to do. Update gs invocation, using clever trick from the foomatic folks: Grant Taylor (www.linuxprinting.org). gs ... -sOutputFile=|cat >&3 3>&1 1>&2 This causes the error messages and other things to be sent to STDERR. Ummm... This may fail, so make sure that /bin/cat is fixed up. Version ifhp-3.5.1 - Mon Dec 17 20:17:53 PST 2001 The ifhp=option,option... was being ignored. It is now not ignored. The processing is: printcap ifhp=option1,option2 command line -Toption3,option4 -Zoption5,option6 As the options are processed, they are put into a list: option order: option1,option2,option3,option4,option5,option6 If they have form: option=value, the values are set as the list is constructed. Next, they are scanned for effect, i.e. - simplex, duplex, etc. and those which cause output have output generated. (Pointed out by: Akop Pogosian ) Version ifhp-3.5.0 - Tue Dec 11 17:19:24 PST 2001 Fixed up configure, make files, DISTRIBUTIONS, stuff. sh STANDARD_configuration now install man pages in /usr/share/man if it is available. Updated man pages, clarified default set of options. gs_hplj4 printer entry now accepts PJL as all of the associated printers accept PJL. Version ifhp-3.4.9 - Wed Nov 28 10:10:25 PST 2001 Added 'pjl_done_msg' to ifhp.conf: ## Set console message when job is done ## Set this to empty string if you do not want a ready message ## at end of job pjl_done_msg = Done: \%s{n} \%s{J}:\%s{P} Freeing memory already freed. (Reported by: imacat@mail.imacat.idv.tw) Version ifhp-3.4.8 - Thu Oct 18 14:07:52 PDT 2001 Modified configure messages for clarity. The PJL JOB START stuff was really messed up - missing buffer[0] = 0 caused junk message to be sent to the printer (sometimes). (Found, reported with a gleeful cackle, and patch sent by: Jason Keltz ) The PJL 'STARTPAGE' and 'ENDPAGE' options need quotes around them. Now you can do 'lpr -Zstartpage=1,endpage=2' and it will work. Version 3.4.7 Tue Oct 16 13:37:17 PDT 2001 Added pdf2ps conversion support in ifhp.conf Version 3.4.6 Fri Sep 14 12:45:11 PDT 2001 Corrections and format errors in IFHP-HOWTO corrected. Thanks to Rick Cochran (Patch by: Rick Cochran ) ifhp support for 'inet_ntop' used mystrncpy() (Patch supplied by: Dejan Ilic ) Updates to the ifhp.conf file for HP 4050, LN15, LN16, LN17 printers. (Update by: Helmut Kreiser, ) Added SCO 5.5 patches: From: Paul Freeman SCO doesn't define MAXPATHLEN in the 'normal' include files (it is in arpa/ftp.h). Instead they use PATHSIZE (in sys/param.h). SCO doesn't define the S_ISSOCK POSIX macro. My investigations reveal the mode of a socket is 0020000 (same as a character special). I have defined the S_ISSOCK macro This results in a duplicate test in lpd_jobs.c at lines 2407-2409 but this is harmless. Added SCO 5.5 patches: From: Paul Freeman SCO doesn't define MAXPATHLEN in the 'normal' include files (it is in arpa/ftp.h). Instead they use PATHSIZE (in sys/param.h). SCO doesn't define the S_ISSOCK POSIX macro. My investigations reveal the mode of a socket is 0020000 (same as a character special). I have defined the S_ISSOCK macro This results in a duplicate test in lpd_jobs.c at lines 2407-2409 but this is harmless. Version 3.4.5 Mon Aug 6 12:59:27 PDT 2001 The pjl_ready_msg string was not being used for PJL JOB commands. Thus, the console message was not correct. (Noticed by: Jason L Tibbitts III ) Much nicer console message support by: Hermann Lauer The following change/update/modification was inspired by a set of patches from "Daniel E. Singer" who had some REALLY nice ideas. Added a 'no converter' and 'conversion error' to the file_output_match: file_output_match = [ ... * msg no_converter ] The '* msg no_converter' is appended to the end of all of the 'non-empty' file_output_match entries. The 'no_converter' is used to lookup the message; if postscript enabled then ps_no_converter value, else if pcl enabled then pcl_no_converter value, else no_converter Here are the default values: ps_no_converter = %!PS-Adobe-3.0 /Courier findfont 10 scalefont setfont 72 500 moveto (No conversion available for type '\%s{file_output}') show showpage no_converter = No conversion available for type '\%s{file_output}' Similarly, if the conversion fails, we use 'conversion_error' (we also define some some handy strings as well): ps_conversion_error = %!PS-Adobe-3.0 /Courier findfont 10 scalefont setfont 72 500 moveto (Conversion failed for type '\%s{file_output}') show 72 480 moveto (Using '\%s{pgm}') show 72 460 moveto (Error: '\%s{msg}') show showpage conversion_error = Conversion failed for type '\%s{file_output}' Using '\%s{pgm}' Error: '\%s{msg}' Version 3.4.4 Sun Dec 24 17:52:16 PST 2000 Added ALL the user options to the ifhp.conf.in file so that you can use them. You now have all the PostScript, PCL, and PJL options available for use. Of course if your printer does not support this facility, nothing will happen. Pagecounter polling now works as advertised, sort of, most of the time, (I hope). You can specify a 'pagecount_poll' value and it will poll the printer for a 'non-changing' pagecounter value the specified number of times (default=1). Fixed up the ifhp.conf entries for HP Laserjet III aka LJ4 # PRINTER % - HP LaserJet III (PCL and PostScript Interpreter) [ hpiiisi hp3si ljet3 lj3 ] This now assumes a PostScript interpreter on the printer # PRINTER % - HP LaserJet III (PCL, PostScript via GhostScript) [ hpiiisi.gs hp3si.gs ljet3.gs lj3.gs ] This now assumes you use GhostScript Added a section in the README for Solaris compilation. The dreaded GCC 2.95 check for character values as indexes got me again. (Reported by: Lots and lots of people, including Jonas Olsson ) Added a 'pcl_term' and 'ps_term' option to allow PCL and PostScript strings to be send immediately after the job file and BEFORE the PCL EOJ or PostScript EOJ. (Inspired by: David E. Cross ) HPUX compilation without GCC had a gratuitious CFLAGS=-Aa. I removed the flags. (Reported by: Ryan Novosielski ) Version 3.4.3 Thu Nov 30 09:28:33 PST 2000 There is a total bizzarity of operation that seems happen with various printers. If the printer goes 'offline' or fails to respond for a long time, then the code tries to send command sequences that will force the printer to respond or retry the last operation. These happen during: SYNC sync_interval = 20 seconds default PAGECOUNT pagecount_interval = 20 seconds default WAITEND waitend_interval = 300 seconds default I have 'robustified' the code beyond all sensible levels... lets see if this works. Device Information for the 'appsocket' protocol is now obtained from the PRINTCAP_ENTRY environment variable. This allows you to have a simple standard printer configuration. IFHP-HOWTO updated as well. I have added a VERY odd formatting capability for options: value=ThisString %s{value} -> ThisString %U{value} -> THISSTRING %M{value} -> Thisstring %L{value} -> thisstring Ah, the joys of various programs that want 'UPPERCASE' 'Leading case' or 'lowercase' for option values. This now allows you to have lpr -Zpaper=legal -> Zlegal -> a2ps -M %M{paper} -> a2ps -M Legal which is truly a hack of the worst kind. However, the alternative is to support a modified version of GhostScript (yes... it is fussy as well), mpage, a2ps, etc etc etc GhostScript now gets paper sizes passed to it if you use the standard 'letter legal ...' OR paper=letter OR papersize=XXX This is managed by a new configuration entry: papersize= a1 a2 ... letter legal - all the sizes that GhostScript can handle papersize_default= letter - default value. The '\%s{papersize}' is a BUILT IN that handles this by searching the -Z and -T options for the last entry in the papersize list and using this as the size value. And of course, GhostScript conversion now has a -PAPERSIZE=\%M{papersize} entry. Version 3.4.2 Mon Oct 16 09:29:53 PDT 2000 unsetenv does not exist on some systems, and I better check all the executables. (Spotted by: Christian Haul ) The 'shutdown_app_socket' option is now made the default. This will cause ifhp to do shutdown(1,1) and then read from the printer until EOF. This solves the mysterious 'RST' packets that have terminated connections and caused the printer to abort printing. (Astute observeration by: Gerald Damian ) ifhp was exiting when it got an 'out of paper' message. A bit too extreme, this one. (Reported by: Scott Schwartz ) Version 3.4.1 Sat Oct 14 13:37:40 PDT 2000 Updated Internationalization Fixed up some errors in the ifhp.conf comments. (Spotted by the eagle eyes of: Pekka Savola ) Added a 'forceprocessing' flag as suggested by Brendon Hack. (Patch and suggestion by: Brendan Hack ) PostScript, CTRL-D and CTRL-T support There are many printers which do not like/allow the CTRL-D (Serial port 'end of job' indication) and/or the CTRL-T (Serial port 'request status' indication) over network or parallel port connections. This is yet another attempt to handle this in a simple manner: ps_eoj (default TRUE) - use ^D ps_eoj_at_start (default TRUE) - use ^D at start of job ps_eoj_at_end (default TRUE) - use ^D at end of job ps_ctrl_t (default TRUE) - use ^T to solicit status end_status=busy:idle use these keywords in the status indication solicited by CTRL-T or when there is an error to determine that the job is done. If your printer cannot handle ^D at all, set: ps_eoj@ If your printer cannot handle ^D at job start, but requires it at job end, set: ps_eoj_at_start@ If your printer cannot handle ^D at job end, but requires it at job start, set: ps_eoj_at_end@ (I don't think this is possible, but it is included for completeness). If your printer cannot handle CTRL-T in the input stream or cannot return status when solicited, set: ps_ctrl_t@ Version 3.3.22 - Sun Aug 20 11:24:02 PDT 2000 The 'read from parallel port' code caused status@ to be ignored. Just a tad aggressive on this, I was. (Reported by: Godfrey ) Version 3.3.21 - Fri Aug 11 12:49:40 PDT 2000 After a deep look into parallel port IO and bidirectionality, I have come to the conclusion that it is possible to handle this, at the cost of a high polling rate at the process level. To this end, the Read_write_timeout() code has been rewritten, and now does polling. This actually works BETTER than the original version in my tests. First, the device must be opened read/write. This is done by LPRng when you set the :rw flag - lp: :rw:lp=/dev/tty0 Next, if the device is a character device (S_ISCHR(statb.st_mode) is true AND not a tty (isatty(fd) returns 0) then ifhp will perform IO by doing a write followed by a read(). On Linux systems the read is done in blocking mode; on non-Linux systems it is done in nonblocking mode. It is expected that the read will either terminate with a 0 value (nothing to read), -1 and errno set to 'EWOULDBLOCK' or 'ENOAVAIL' or an appropriate error code indicating no status, or N where N is the number of bytes read. If this code is run on a non-linux system which has implemented bidirectional IO and this does not work, I would be interested in hearing about this. Note that on these systems the 'nonblocking' and 'blocking' calls might need to be removed. Please try this and tell me the results and I will update the ifhp filter. I have added a small flag for the convenience of people who have some very strange accounting requirements. The 'wait_for_banner' flag causes the OF filter mode to wait for banner printing to be completed before suspending. This will allow the accounting facility to correctly assign pages to banners, jobs, and so forth. Version 3.3.20 - Fri Aug 11 08:03:39 PDT 2000 Fixed up error message for 'file_output_match' parsing so the original line is printed. You can now handle key += [ ] correctly. More tracing statements added to allow you to trace what option value is being used where. Expanded option values and interpolated escapes. This allows things like: ps_cardstock = [ media=Card\040Stock ] This will now expand correctly and be interpolated as 'Card Stock'. (Problem discovered by: Lars Kellogg-Stedman ) You can try to do job nesting using things like: :ifhp=model=hp,pjl_job@,of_options=pjl_job This requires that you also use 'PJL ECHO' for end of job detection. Version 3.3.19 - Sat Jul 15 17:08:42 PDT 2000 Fixed the configure error message about the file utility so that it referenced the ftp://ftp.astron.com/pub/file/ site. (Note by: Raymond Lam ) Do write with timeout if the output device is not readable. Also if the device is readable, then it must not be a file, block device, or character device and not a tty. Forced blocking mode on file descriptors before calling select. This appears to solve the problem with 'select' failing on various devices. Statistics were bogusly computed, progress_k did not work correctly. (Patch by: Tom Fitzgerald ) Tried to speed up output when an OF filter is being used by not having the OF filter confirm that the banner was output, but simply proceed with no checks. This, of course, results in a bogus page count by the IF filter. But it seems to speed things up quite a bit. This also now behaves like the older versions of ifhp that did not check for end of job when stopping of filters. C'est dommage! Version 3.3.18 Sat Jul 8 12:35:16 PDT 2000 gs_unidriver entry had \%s{gs_device}.upp instead of \%s{gs_device} Found by: Mark Steph Added ps_eoj_at_start@ to HP 8550 printer entry, which does not like ^D at start of PostScript jobs. (Discovered and reported by: Micheler Klaus ) Update ifhp.conf with phaser360, phaser740, phaser550 Need different PostScript than the Phaser 350 and 550 (Supplied by: Michael J. Carter ) Modified the Is_readable() to use fcntl() to get the RD,RW,WR status of the file descriptor. Added options: pjl_ready_msg = \%s{n} \%s{J}:\%s{P} pjl_display_size = 20 The 'ready_msg' is expanded and displayed on the printer console display. The display has at most pjl_display_size characters. (Patch supplied by: John R Lane ) Version 3.3.17 Thu Jun 22 07:49:35 PDT 2000 The ifhp.conf file references the GhostScript uniprint driver configuration file 'stc1520.upp' or 'stc1520'. This was taken from the GhostScript documentation. In reality, this is the 'stc1520h.upp' configuration file. Corrected in the ifhp.conf file and email sent to the GhostScript support group. (Reported by: Gerald Damian ) The accounting information written to the accounting file did not include user and printer name. The 'accounting_info' option now allows you to specify the additional command line options you want added to the line written to the accounting file. (Reported by: Jonathan Knight ) The accounting script did not have any options passed to it. You now get the same options as with the 'accounting_info' added above. (Patch supplied by: Ian MacPhedran ) Version 3.3.16 Mon Jun 19 09:38:40 PDT 2000 If the status file is not open and an error message needs to be put out, it is now put out on STDERR. All fatal messages are also put out on STDERR as well, so you can see the information in the printer log file. This solves the problem of the 'silently vanishing filter'. The DISTRIBUTIONS/FreeBSD Makefile updated. Version 3.3.15 Fri Jun 2 18:01:36 PDT 2000 Updated configuration file entries so that they match reality a bit better. Fixed up problems with using GhostScript and options If the model information is not found then an error is reported. Updated status reporting so it was not as verbose. (Patch by: Ian MacPhedran ) Version 3.3.14 Fri Jun 2 18:01:36 PDT 2000 configure now checks to see that the file utility handles the file - option correctly. The ifhp.conf file now lists the HP8000 as a 'laserjet' (Spotted by: David Kerr Livingstone ) The test for pagecounting did not handle 'no status' correctly. Update the IFHP-HOWTO to use DocBook format. Version 3.3.13 Wed May 24 09:45:32 PDT 2000 added of_options option, which are a set of options that are used if the filter is in OF mode. This allows: :ifhp=pagecount@,sync@,waitend@,of_options=pagecount sync waitend So you can fling jobs at the printer as fast as possible and have the of filter do the dirty work of getting pagecounter values. I have modified the behavior of ifhp when it is running in OF mode. Previously, when running as an OF filter it would operate in 'passthrough' only mode and not detect the type of file it was printing. This would cause problems as usually the banner was the file it was printing and various 'setups' needed to be done to print the banner correctly. Now when it runs in OF mode it reads the input into a file, carefully looking for the '\033\001' sequence, and when it finds it, prints the file using the normal printing functions, and then suspends itself. This greatly improves the robustness of banner printing, etc., as the whole 9 yards^H^H^H24 meters of the ifhp filter processing is applied to the file. As far as I can tell, this appears to break no existing applications, programs, processing, etc., and now allows 'whacko' banner pages to be printed. Sigh... The console now displays the userid even when ifhp is getting the pagecount stuff. Edited the IFHP-HOWTO and update the section on pagecounts. Added an lseek() in a couple of critical places to rewind the input. (Noticed by: Niklas Edmundsson ) Version 3.3.12 Mon May 22 15:14:11 PDT 2000 The 3.3.12 distribution was screwed up - the old Makefile rather than the new one was used... oh the joys of RCS version control. Added a 'pagecount_start' and 'pagecount_end' flag to allow you to skip pagecounts at job start or end. Discovered the 'no_ps_eoj' and 'no_pcl_eoj' flags were conflicting with other stuff, and changed them to 'pcl_eoj_at_start' and 'ps_eoj_at_start'. Names are now compatible with rest of options. By the way, these flags look really strange... I wonder what horribly strange printer inpired them? Sigh... got to flag changes with printers but then some manufacturers would get a bit annoyed. "Its not a defect, it's a feature!" Sigh. Version 3.3.11 Sat May 20 09:37:02 PDT 2000 Fixed up a couple of missing 'ps_user_opts' entries Added a tc=entry1,entry2,... facility to allow you to include entries. WARNING: this is a literal include facility, so the placement of the tc=... is critical. Model configuration selection: The ifhp.conf information is first scanned for the 'default' model information, and then for model specific information. This allows you to add new 'default' values to the end of the ifhp.conf file and have them override the supplied ifhp.conf file. For example: #ifhp.conf - default forceconvesion@ ... more default values [ hp3* ] .... values specific to hp3* #--- end of the supplied stuff # user supplies this [ default ] # overrides default forceconversion forceconversion [ hp3* ] # overrides hp3* values Makefile: install -s on some system does now work with with script files, so Makefile changed to accomodate this. You can now use key += value to append to an option value. For example: key = [ this that ] key += [ the other ] -> [ this that the other ] key = value key += newvalue -> value newvalue key += on a line -> value newvalue on a line You want to you can now add stuff to an existing entry. This makes things like the following possible: [ xx* ] key = [ basic ] [ xx1 ] key += [ morefor1 ] [ xx2 ] key += [ morefor2 ] The 'a2ps', 'enscript', and similar programs may exit with bogus error codes if they need to wrap lines, change fonts, etc. The use of a 'wrapper' script is documented in the ifhp.conf file and the HOWTO. The -Zstartpage=xxx and -Zendpage=xxx options were not implemented and documented correctly. (Patch by: Ingo Jauer ) Makefile.in did not have $(SRC)/ifhp.conf.template (Noted by: Bill Kamp ) Makefile did not remove some files created during configure (Patch by: George Lindholm ) Fixed a problem with SIGCHLD handler - now sets the SIG_DFL Modified the 'Do_waitend' code to better handle appsocket and other printers that return strange error status. Modified the 'End_ctrl_t' option so that end_ctrl_t@ suppresses the use of CTRL_T to obtain status information. The Process_OF code did not reset the nonblocking mode of the output descriptor after restarting. This could be a problem for devices that do not return status on time. The amount and size of files printed is now a double, making the progress when printing 2GByte files correctly reported. Amazing, the size of files that people print... There was a very strange behavior of list variables that caused a memory leak. If you had: xx=testxx pjl_yy=testyy pjl_nn=[ v\%s{xx}=value v\%s{yy}=value ] then the variable would be set to: v\%s{xx} -> vtestxx (look up xx first, then pjl_xx) v\%s{yy} -> vtestyy (look up yy first, then pjl_yy) so you get the effect of: pjl_nn=[ vtestxx=value vtestyy=value ] This behavior has been modified to restrict the expansion to keys appearing in a list ( [ ... ]). I don't have the faintest idea why this was in the code, and it appears to be a development coprolite. Read_write_timeout() code has been Turkey Proofed. Now will exit with nasty message when called with inconsistent parameters. The Process_OF code was modified in order to make it more readable. A more rigorous check for option appsocket and a missing dev= option was put in. A malformed printcap file prompted this check. Bad coding with the 'banner' stuff once more revisted. Arrgghh... history and compatiblity is ugly. The problem here is trying to be compatible with older releases of LPRng. -- we should have LPRng generate banners -- need to generate banners based on printer type -- thus ifhp needs a 'banner generation' mode bp=/..../ifhp -Tbanner_only bp=/..../banner -> symlink to ifhp Added a 'set nonblocking' calls at the appropriate places to make sure that write will be done correctly. Did not terminate argv[] array with 0, caused execve problems. Also fixed up '/bin/sh -c' passing of converters The ARGV, ZOPTS, and TOPTS were not being passed to converters correctly. (Discovered by: Johan Claesson ) When using a converter, ZOPTS and TOPTS have been replaced by \%s{Z} and \%{T}, and you need to use \%s{ARGV}. Duh! The lookup code for parameters, etc., was using 'strcasecmp' rather than 'strcmp'. This had the effect of folding options with names such as A4 and a4 to the same entry. The code has been modified so that we lowercase the -Z and -T stuff, and lowercase strings where they are used to initialize a lookup table. I wonder where my mind was at when I decided to make name lookup case insensitive. Never again! Bad BAD idea. This is OK for user interface options, but HORRIBLE for internal lookups. (Original discrepancy noted by: Willi Burmeister ) For some very odd reason I was adding the ARGV arguments to the accounting information. This caused problems when a -T argument was passed as the first -T argument was the elapsed time. The \%s{name} lookup was not looking in the -Zopts for values. Moved the 'ps_sync' and 'ps_asynch' entries in the ifhp.conf.template to the defaults area so that other models can use them. The close_on_exec() code failed on systems where the number of file descriptors returned by getdtablesize(0 was bogus. Used the Get_max_fd() code. Oh, for a 'max open fd' call... Removed banner printing ENTIRELY. Banner printing support is now done by LPRng. Should have done this LONG ago. Breaking point reached when 'ld' string was used and this broke banner printing. Grrr... Fix up the format conversion program specification so that you can use \%s{name} parameters in the program list: file_output_match = [ *pcl* pcl \%s{pcl_converter} *ps* ps \%s{ps_converter} *postscript* ps \%s{ps_converter} *pjl* pjl \%s{pjl_converter} ] device=epson resolution=-r240x72 ps_converter= [ /usr/contrib/bin/gs -dSAFER -dBATCH -q -sDEVICE=\%s{device} \%s{resolution} -sOutputFile=- - ] Added a 'ghostscript' device as well: # PRINTER gs_support - Printer with GhostScript conversion [ ghostscript ] pcl@ pjl@ ps text # device=epsonc # resolution=-r240x72 ps_converter= [ /usr/contrib/bin/gs -dSAFER -dBATCH -q -sDEVICE=\%s{device} \%s{resolution} -sOutputFile=- - ] text_converter= [ /usr/contrib/bin/a2ps -q -B -1 -M Letter --borders=no -o- | \%s{ps_converter} ] file_output_match = [ *postscript* raw \%s{ps_converter} # if your printer has PCL, use: *text* raw \%s{text_converter} ] This allows you to use a printcap with: lp: :lp=xxxx :ifhp=model=ghostscript,device=epsonc,resolution=-r240x72 :if=/usr/local/libexec/filters/ifhp Makefile.in did not have default for UPDATE, and used $(SRC) - should have been ${SRC}. (Fix by: Willi Burmeister ) Removed the 'UPDATE' Added DISTRIBUTIONS directory with testscripts for installation and package generation for various systems. Added the ability to send 'alerts' to operators or whatever based on filter activity. ## PJL USTATUS information will include a lot of ## codes that are just not interesting, such as 'printer on line', ## or 'power up'. You can suppress reporting status for these codes ## by putting their code numbers in this list pjl_quiet_codes=[ 10001 40000 ] ## Special error messages ## One per line ## The idea is that you may get an error code, but you ## it is not 'standard'. You can add additional codes here ## or override the default strings in the ifhp source. ## pjl_error_codes=[ 10006=Toner Low ] ## Inform operator if this error number occurs pjl_alert_codes=[ 15* 40* 41* 42* 44* ] # use this program to write error to operator # error will be read from STDIN. You can play games with # mail or whatever you want here. # for example: pjl_alert_handler=/usr/local/libexec/filter/alert_handler The pjl_alert_handler program will read the error message on STDIN and is responsible for forwarding to the appropriate destination. Fixed up program forking and handling and put it in one spot. This was just a programming/debugging change. Went through the Appsocket code and ripped it out. Fixed up the logical flow of things so that if you set the appsocket code you can use pagecount with 'ps' and have it work. There is a workaround for the 'end of job' detection - if we have status enabled then we do the full 'idle detection' thing. This will now cause us to exit correctly when we have Appsocket and get an EOF on the read. You can now have a 'filter' in the file_output_match table: file_output_match = [ *postscript* ps \%s{ps_converter} *pcl* pcl \%s{pcl_converter} *pjl* pjl \%s{pjl_converter} *printer*job*language* pjl *text* pcl \%s{text_converter} *gzip_compressed* filter \%s{gzip_decompress} ] This will cause the indicated program to be used to decompress or recompress or whatever the input file. This can be done add nauseum... The mind boggles on what you can do with this. Courtesy of the a2ps and psfilter folks, who did a neat job... When Kyocera-FS1750 wakes up, it sends NULL PostScript status. This screws up or used to screw up 'waitend' operations. (Information and patch from: Sebastian Wahl ) Version 3.3.10 Sun Oct 24 16:05:55 PDT 1999 Updated 3.3.9 Change information with missing stuff. When using appsocket protocol, the of filter was not opening the status file correctly and was sending junk to the printer. (Spotted by: John McCash ) HP5SiMx (hp5simx) and similar printers with paper tray selection You should be aware that some HP and other manufacturers have a 'paper size' selection which OVERRIDES the normal tray selection. If you are printing PostScript, then by default the paper size is 'letter' and you will get paper fed from the tray with 'letter' paper in it. If you have a4 or some other size you may get interesting results. You should experiment with the various selection commands to determine if you need to have upper/lower or letter/ledger (a4/ledger) selection. Very nasty, this. (Experimental results by: John McCash ) The -c (binary) flag was not setting any values and the RAW file type was not being handled correctly. (Reported by: Pavel Lisy ) The 'file_output_match' value may now have the form '' meta characters separated by single spaces, then the filter is invoked using '/bin/sh -c "filter" This change allows us to put a pipe or other item in the filter specification. Needless to say, it also opens gaping security holes as well, so the system adminstrator is warned to be careful. Example: (Note: lines have been broken for convenience - all conversion filter specification must be on a single line): file_output_match = [ # invoked via execve *postscript* raw \ gs -sDEVICE=epson \ -sOutputFile=- -sPAPERSIZE=letter -q - # invoked via /bin/sh -c *text* raw \ /usr/local/bin/a2ps -q -B -1 -M Letter --borders=no -o- | \ gs -sDEVICE=epson \ -sOutputFile=- -sPAPERSIZE=letter -q - ] OR file_output_match = > >> setpagedevice } if ps_staple_front=<< /Staple 1 /StapleDetails << /Type 6 /StapleMode 0 >> >> setpagedevice ps_staple_rear=<< /Staple 1 /StapleDetails << /Type 6 /StapleMode 1 >> >> setpagedevice ps_staple_both=<< /Staple 1 /StapleDetails << /Type 6 /StapleMode 2 >> >> setpagedevice (Patches and idea by: Garrett D'Amore ) Modified ifhp.conf reading code to be more robust and efficient. Added a 'reopen_on_job' option to force appsocket to reopen connection to printer if there is a long delay sending job to printer. (Inspired by comments from: Isaac Hollander ) configure now takes --with-admindir=DIR where to install ifhp.conf, default: /etc --with-filterdir=DIR where to install ifhp and other executables Added FreeBSD ports template to distribution for tracking purposes. Version 3.3.3 Fri Jun 11 11:44:23 PDT 1999 ifhp.conf - added lexmark4039 entry, to do synchronizcation. accounting information - quotes added around options Version 3.3.2 Mon Jun 7 15:52:55 PDT 1999 File descriptor 3 was closed when forking accounting program. (Reported and fix by: Jesper Dangaard Brouer ) Fixed up minor problems with PostScript banner generation. (Reported by: Reinhard Zierke ) Added a 'forceconversion' flag to force the file utility and the conversion utilities to be used. Version 3.3.1 BASELINE DISTRIBUTION Version 3.2.10 QMS printer support updated to try and handle appsocket a bit better. You now need a 'qms' flag to identify the printer as a qms printer. (Patches and suggestions by: Johan Claesson ) Version 3.2.9 Removed '"' from ifhp.conf file that really messed things up. Version 3.2.8 Enabled PCL copies=nnn code (Missing operation reported by: Gerard Kok ) Fixed pcl_linesperpage=...F instead of E (Reported by: Gerard Kok ) When you are using the TEXT to XXX translation facility, the .... ZOPTS .... will get replaced with .... -Zzoptions .... and .... TOPTS .... will get replaced with .... -Ttoptions .... Updated ifhp.conf file, added comments, moved HP5SiMx PostScript to the HP5SiMx section. Modified the Pjl_console code to not be 'sticky'. This was painful. (Suggested by: Olav Kolbu ) After extensive hand to hand combat with QMS printers, discovered that they apparently do NOT return status or PostScript output in a reliable manner. Added/modified [qms1725] entry to reflect this. Use appsocket protocol, but WITHOUT status capability. Also note that port 35 seems to be used by default, although this can be configured via the TCP/IP telnet interface. (Your milage may vary). Version 3.2.7 Rearranged code in Read_write_timeout() so that a read of status is attempted BEFORE exiting on a write error. added pclbanner to the distribution IFHP recognizes the PJL 'reset' sequence and treats it as a 'raw' or unprocessed job. This allows you to send PJL jobs to the printer and not have them interpreted as PCL. Version 3.2.6 Added a console message for Lexmark and HP Printers that will be 'sticky' and stay visible after the job has been printed. (Provided by: Jason L Tibbitts III ) Fixed up 'progress' so that it prints Kbytes correctly... sigh. Version 3.2.5 changed the a2ps options in ifhp.conf: -q -B -1 -M Letter --borders=no -o- (Suggested by: Jeff Gostin ) Version 3.2.5 Cleaned up documentation, made sure the various configuration and installation defaults were consistent. Ummm... and also removed a core dump from the distribution. Sigh... Version 3.2.4 Cleaned up Makefile.in so that running configure in another directory will be possible. That is, cd ifhp... where=`pwd` mkdir ... cd ... sh $where/configure will now work correctly, and you can do a make install in $where Added README.utilities and updated ifhp.conf file so that it has URL and ftp sites for file, enscript and a2ps tools. The phaser support did not work with OF and IF filters. More 'shutdowns' and clean up added. Sync and waitend made separate operations. You can now skip 'syncing' at the start, but you can force 'waitend'. This is side effect of phaser operation. You need to read status back from the printer until it closes the reverse connnection. If you have appsocket with waitend, you will read status back until the job finishes. If you do appsocket with waitend@, you will get no status information for job. This is not good, but gives you very fast throughput. Version 3.2.3 Updated Makefile.in so that when you do $(path)/configure for building in a separate directory, the right files are found. Version 3.2.2 Added support for Tektronixs Phaser Printers - using the appsocket protocol Version 3.2.1 Most of the code seems pretty stable, so we start a new major release. There are mostly minor changes in the code for this release. Added 'PseudoMagicFilter Support' and got text to PS conversion working correctly. # # text conversion control # # control text to whatever conversion # # if you cannot find type, then try this file utility # # if the type is text and not supported on your system, do a conversion # Method 1 - set 'default_language' as text, and run # the program through a text to known converter # default_language=text text_converter=/usr/local/bin/a2ps -q -B -o- # output of the converter is pcl, ps, or raw text_converter_output=ps # # Method 2 - # Use the file util and match the output # file reports format information # glob text_output_format text_converter # - you do a glob match against pattern and use the converter # default_language=unknown file_util_path=/usr/bin/file - file_output_match = [ *text* ps /usr/local/bin/a2ps -q -B -o- ] # you need a temp file location tempfile=/var/tmp/ifhp Added a horrible horrible kludge that allows multiple fonts to be loaded. You need to use: ifhp -Zfont=this,font=that,... which gets translated into font=this,that and the font handling code then works OK. Added a QMS1725 entry that just might work. Fixed up a couple of minor PostScript quirks. Added PJL support for duplex. Version 3.1.20 Documentation. More Documentation. More ... Sigh... Version 3.1.19 Made status messages less verbose. 'trace_on_stderr' is now just 'trace' ... Sigh... Version 3.1.17 Changed CRLF back to not effective... Sigh. Version 3.1.16 Fixed a problem with testing short files for file type. (Noted by: Mike Whitson ) Added ledger paper types. HP printers are very odd... (John McCash thinks so too) Made CRLF the default in ifhp.conf Version 3.1.15 Not distributed Version 3.1.14 ifhp.conf: pcl_pagesize \033&l#A - set page size Thu Feb 4 16:52:58 PST 1999 remove_control=xyz... if PostScript AND you have a ^x, ^y, ^z, etc., remove it. Suggested use: remove_control=CT removes CTRL-C, CTRL-T (Suggested by Mike Whitson ) Version 3.1.6 - 3.1.13 Lots and lots and lots of changes in ifhp.conf, etc, etc. Stable version approaching. Version 3.1.5 Experiments with various printers showed that the ifhp.conf file needed modification. Added a 'banner_only' mode for banner printing only. Version 3.1.4 Sun Dec 27 18:22:44 PST 1998 Total rewrite of the ifhp software using a clean room approach. Patrick Powell papowell@astart.com $Id: CHANGES,v 1.126 2004/10/05 15:50:10 papowell Exp papowell $ ifhp-3.5.20/README.GhostScriptSecurityProblem0100644000175100017510000001525310130541263021164 0ustar papowellpapowellSummary: Printing a file can cause a system compromise Date: 12 Nov. 2001 Updated: Sat Feb 2 08:27:14 PST 2002 Reason: Some Versions of GhostScript can open and read files on system (-dSAFER may not disable file open, and -dPARANOIDSAFER may not be implemented) ******************* UPDATE: This problem has been fixed on some later versions of GhostScript and other PostScript converters. The fix described in here may need to be modified for the specific version of GhostScript you are using. See the notes below. The -dPARANOIDSAFER flag should solve this problem. Do NOT repeat NOT make the suggested changes if the problem described below does not exist. ******************* Systems Impacted: just about everything that uses GhostScript (or some other PostScript interpreters) for PostScript document conversion. This includes the various MagicFilters, Transcript, LPRng's ifhp, RedHats rh-printfilter. These are running on Linux, BSD, System V, possibly Sun Microsystems, HP, etc., etc., etc. Note: it is possible that the same problem exists on Microsoft systems as well if they are using a PostScript interpreter. Detailed Explanation: GhostScript is used to convert PostScript files to formats compatible with printers and other devices. It is used as a utility by a large number of 'print filters', including MagicFilters, format converters, LPRng's IFHP filter, RedHat's rh-printfilter, Transcript, etc., etc. The PostScript 'file' operator opens a file which can then be read and printed. Here is a sample of how this could be done: Save these lines to 'testpr': %! % Code extracts from PostScript Language Tutorial and Cookbook % Copyright 1986, Adobe Systems. % set up printing /finr /Helvetica findfont 10 scalefont def /shwr {moveto finr setfont show} def % do the dirty work here (/etc/passwd) (r) file % read a single line 100 string readline pop 45 292 shwr showpage Now run this using GhostScript: #> gs testpr If you see the first line of the /etc/passwd file displayed then you have a possible compromise. If GhostScript is used to convert PostScript to PCL or some other non-PostScript format then you can print copies of the various files of interest. Now try this with -dSAFER -dPARANOIDSAFER #> gs -dSAFER -dPARANOIDSAFER testpr If you see the same output, then the -dSAFER -DPARANOIDSAFER is not preventing file access. MORE BAD NEWS: Now, you might think this is the worst that can happen... Nope. I just discovered the following: a) GhostScript can open files for writing as well as reading. b) Some vendors run their print filters as ROOT. c) Some do not have -dSAFER enabled. You might want to think about: (/etc/shadow) (w) file (root:::::) writeline There... did your blood run cold? Or are you rushing out to try this on your local system to see if the Sysadmin has fixed this? (Note for sysadmin: there is no 'writeline' primitive, but they will whip one up REAL SOON NOW, so get moving.) AND A POSSIBLE ADDITIONAL EXPLOIT: In addition to the 'file' command, there is also the 'run' command that will open a file and execute its contents. I can't think of any use for this, but better to be safe than sorry. Since most students^H^H^H^H^H^H users are smarter than me, they will most likely think of one. IMMEDIATE STEPS TO TAKE: Step 1: TURN OFF PRINTING NOW! Kill the LPD print spooler server or the lpsched print spooling server: pkill lpd OR killall lpd OR ps -e |grep lpd; find the PID of the lpd process and do: kill PID ps -e |grep lpsched; find the PID of the lpsched process and do: kill PID Step 2: Update to the latest version of GhostScript that has -dSAFER implemented. Rerun this test. If the test succeeds (i.e. - bad things happens, then proceed to step 3). Step 3: Modify the gs_init.ps file. It is usually in: /usr/share/ghostscript/XXX/lib/gs_init.ps where XXX is the version of GhostScript. See the notes below for your verion of GhostScript. Step 4: return the tests described above. They should now fail. If not, then consult a GhostScript Wizard. (Actually, you need to consult a GhostScript Medium or even GhostScript Small, but I digress.) Step 5: Check all of your applications that are executable by root (including GhostView (gv) and other) to make sure that they have the -dSAFER defined. Note that this might need to include PostScript to PDF converters, and PDF to PostScript converters. ----------- AFPL Ghostscript 6.50 (and possibly others) ------------- 1. open the gs_init.ps file. 2. Look for the following lines and add the lines with - in front of them. % If we want a "safer" system, disable some obvious ways to cause havoc. SAFER not { (%END SAFER) .skipeof } if /file { dup (r) eq 2 index (%pipe*) .stringmatch not and 2 index (%std*) .stringmatch or { file } { /invalidfileaccess signalerror } ifelse } .bind odef - /file { /invalidfileaccess signalerror } odef - /run { /invalidfileaccess signalerror } odef /renamefile { /invalidfileaccess signalerror } odef /deletefile { /invalidfileaccess signalerror } odef /putdeviceprops 3. Rerun the tests and make sure that they now faile. ------------------------------------------------------------- ------------- AFPL Ghostscript 7.03 (and possibly others) -- From: Carl Riches I have just installed AFPL Ghostscript 7.03, and found that I had to replace part of the file: gs_init.ps with this code: % If we want a "safer" system, disable some obvious ways to cause havoc. SAFER not { (%END SAFER) .skipeof } if .currentglobal true .setglobal /SAFETY 2 dict dup /safe DELAYSAFER not put dup /tempfiles 10 dict put readonly def .setglobal /.setsafe { //SAFETY /safe //true .forceput % overrides readonly } .bind executeonly odef /file { //SAFETY /safe get { dup (r) eq 2 index (%pipe*) .stringmatch not and 3 index (%std*) .stringmatch not and or or { file } { /invalidfileaccess //signalerror exec } ifelse } { file } ifelse } .bind executeonly odef Here are the actual SCCS diffs of the file: ------- gs_init.ps ------- 1567,1568c1567,1570 < dup (r) eq 2 index (%pipe*) .stringmatch not and < 2 index (%std*) .stringmatch or --- > dup (r) eq > 2 index (%pipe*) .stringmatch not and > 3 index (%std*) .stringmatch not and > or or ------------------------------------------------------------ Patrick Powell Astart Technologies papowell@astart.com 6741 Convoy Court Network and System San Diego, CA 92111 Consulting 858-874-6543 FAX 858-751-2435 LPRng - Print Spooler (http://www.lprng.com) ifhp-3.5.20/Copyright0100644000175100017510000000037410130541262014653 0ustar papowellpapowellThis software incorporates code from other sources; see the file Copyright.c in this distribution for general copyright information. Individual source files have their copyrights as well, where applicable. Patrick Powell Mon Jul 10 07:01:54 PDT 1995 ifhp-3.5.20/README.TESTING0100644000175100017510000003450310130541263014756 0ustar papowellpapowell Testing IFHP In Stand-alone Mode Patrick Powell Thu Jun 13 07:36:36 PDT 2002 Introduction Usually when you have problems with a print filter you want to find out the actual output and examine it in detail, or you want to process and send a job to a printer without the overhead of the print spooler. This note discusses how to use the built-in ifhp test facilities, the netcat (nc) program, and the sendhp.sh test script. Debug Options The ifhp program has built in debugging and trace facilities that are enabled by using the -Tdebug=xxx and -Ttrace option. The 'trace' option causes trace output to be sent to STDOUT; the debug=xxx sets debug flags: debug=0 - no trace/debug output debug=1 - whimpy trace/debug output debug=2 - serious trace/debug output debug=3 - heavy duty trace/debug output debug=4 or higher - totally horribly anal debug output In addition you can enable tracing of the ifhp.conf database parsing operation: debug=database - whimpy debug=database+1 - more detail debug=database+2 - even more detail debug=database+3 or higher - more detail than you ever wanted And you can combine them: debug=1 database - note that space separator Test Script - sendhp.sh The ifhp source distribution has a set of utility programs in the UTILS directory, which is copied to the UTILS subdirectory in the same location as the ifhp filter. if ifhp is /usr/local/libexec/filters/ifhp then UTILS are in: /usr/local/libexec/filters/UTILS/sendhp.sh and the sendhp.sh test script is: /usr/local/libexec/filters/UTILS/sendhp.sh sendhp.sh SCRIPT #!/bin/sh # test script for testing ifhp.conf prefix=/usr exec_prefix=${prefix} sysconfdir=/etc mandir=/usr/share/man libexecdir=${exec_prefix}/libexec FILTER_DIR=${libexecdir}/filters # variables: # ifhp - location of the ifhp file to use # - if you are testing an INSTALLED version, set this # to the location of ifhp # ifhp=${libexecdir}/filters/ifhp # installed # ifhp=./ifhp # current directory # # out - output is sent here # this can be a file or a network connection, i.e. - # port 9100 on most jetdirect or other boxes. It can even # be a bidirectional printer port. # out=10.0.0.14%9100 # network printer connection # out=/tmp/out # output to a file # # debug - set debug level and options # debug=0 or 1 or 2 or 3 or 4 ... you get the idea # 0 is NO debugging, 4 is extremely verboese # debug=1 database # note the SPACE separator # debug=1 database+2 # The database flag controls debug traceing of reading # the ifhp.conf database. VERY verbose, and gets REALLY # verbose. I kinda went overboard here... # # file - input file # I usually use the UTILS/one.ps or UTILS/one.pcl file # or do 'echo hi >/tmp/hi' for a test file. # model - set the model information # yeah yeah, I know... but you have to have # model=ps # model=hp5si # # options - you set the options you want to add here # options=info=variables # ifhp=${libexecdir}/filters/ifhp ifhp=./ifhp out=10.0.0.14%9100 out=/tmp/out debug= file=/tmp/hi file=${libexecdir}/filters/UTILS/one.ps file=${libexecdir}/filters/UTILS/one.pcl #model=model=ps #model=info=variables if [ -f "$out" ] ; then cp /dev/null $out ; fi $ifhp "-Tdev=$out,trace,debug=$debug,model=$model" \ <$file 2>&1 | tee /tmp/log USING sendifhp.sh These notes shows the various option values and then the command line and output. By convention, the sendif.sh script is copied to /tmp and then modified. 1. Simple Test ifhp=${libexecdir}/filters/ifhp out=/tmp/out file=${libexecdir}/filters/UTILS/one.ps (OR file=${libexecdir}/filters/UTILS/one.pcl if your printer does not support PostScript) debug=1 # > sh /tmp/sendhp.sh ifhp 12:41:27.840 [31515] main: Debug '1', DbgFlag 0x0 ifhp 12:41:27.840 [31515] main: dump ifhp 12:41:27.840 [31515] main: Model_id '' ifhp 12:41:27.840 [31515] main: LANG '', 'TRANSLATE TEST' is 'TRANSLATE TEST' ifhp 12:41:27.870 [31515] main: scanning Raw for default, then model '' ifhp 12:41:27.904 [31515] main: using model '' Version ifhp-3.5.9 $Id: README.TESTING,v 1.1 2002/06/22 01:05:10 papowell Exp papowell $ Copyright 1992-2002 Patrick Powell ifhp 12:41:27.905 [31515] Open_device: device '/tmp/out' ifhp 12:41:27.905 [31515] Open_device: closed fd 1 ifhp 12:41:27.905 [31515] Open_device: device '/tmp/out', attempt 0 ifhp 12:41:27.905 [31515] Open_device: success ifhp 12:41:27.905 [31515] main: poll for status 0, Dev_sleep 1000 msec ifhp 12:41:27.907 [31515] Process_job: setting up printer ifhp 12:41:27.907 [31515] Start_of_job: do_pagecount 0, ps 0, pjl 0, prog '' ifhp 12:41:27.907 [31515] Do_accounting: pagecounter 0 ifhp 12:41:27.907 [31515] Accounting: script '', Accountfile '', output 'filestart '-q31515' '-p0' '-t2002-06-13-12:41:27.907'' ifhp 12:41:27.907 [31515] Start_of_job: doing 'init' ifhp 12:41:27.907 [31515] Start_of_job: doing pjl ifhp 12:41:27.907 [31515] Start_of_job: 'pjl_init'='[ info=id ustatus teoj ]' ifhp 12:41:27.907 [31515] Start_of_job: 'pjl' and Zopts ifhp 12:41:27.907 [31515] Start_of_job: 'pjl' and Topts ifhp 12:41:27.907 [31515] Process_job: sending job file ifhp 12:41:27.907 [31515] Send_job: starting transfer ifhp 12:41:27.907 [31515] Send_job: initial job type 'POSTSCRIPT' ifhp 12:41:27.907 [31515] Send_job: match language 'ps' ifhp 12:41:27.907 [31515] Send_job: converter pgm '\%s{ps_converter}', final '' ifhp 12:41:27.907 [31515] Send_job: language 'POSTSCRIPT', converter pgm '' ifhp 12:41:27.907 [31515] Send_job: decoded job type 'POSTSCRIPT' ifhp 12:41:27.907 [31515] Send_job: job type 'POSTSCRIPT' ifhp 12:41:27.907 [31515] Init_job: doing ps init ifhp 12:41:27.907 [31515] Init_job: 'ps' and Topts ifhp 12:41:27.907 [31515] Init_job: 'ps' and Zopts ifhp 12:41:27.908 [31515] Send_job: doing file transfer ifhp 12:41:27.908 [31515] Send_job: transferring 145 bytes ifhp 12:41:27.908 [31515] Send_job: finished file transfer ifhp 12:41:27.908 [31515] Term_job: doing ps term ifhp 12:41:27.908 [31515] Process_job: sent job file ifhp 12:41:27.908 [31515] End_of_job: doing pjl at end ifhp 12:41:27.908 [31515] End_of_job: 'pjl_term'='[ ustatus teoj ]' ifhp 12:41:27.908 [31515] End_of_job: end sync and pagecount, do_pagecount 0, ps 0, pjl 0, prog '' ifhp 12:41:27.908 [31515] End_of_job: clearing console at end ifhp 12:41:27.908 [31515] Do_accounting: pagecounter 0, pages 0 ifhp 12:41:27.908 [31515] Accounting: script '', Accountfile '', output 'fileend '-b0' '-T0' '-q31515' '-p0' '-t2002-06-13-12:41:27.908'' ifhp 12:41:27.908 [31515] Process_job: done Output: /tmp/out ^[%-12345X@PJL @PJL RESET @PJL JOB NAME = ":" DISPLAY = ":" @PJL RDYMSG DISPLAY = ":" @PJL INFO ID @PJL USTATUSOFF @PJL USTATUS JOB = ON @PJL USTATUS DEVICE = ON @PJL USTATUS PAGE = ON @PJL USTATUS TIMED = 10 @PJL ENTER LANGUAGE = POSTSCRIPT ^D%! %!PS-Adobe-3.0 %% one page (i.e. - a page with a 1 on it) %%/Times-Roman /Courier findfont 200 scalefont setfont 72 300 moveto (1) show showpage ^D^[%-12345X@PJL @PJL RDYMSG DISPLAY = ":" @PJL EOJ NAME = ":" @PJL USTATUSOFF @PJL USTATUS JOB = ON @PJL USTATUS DEVICE = ON @PJL USTATUS PAGE = ON @PJL USTATUS TIMED = 10 @PJL RDYMSG DISPLAY = "Done: :" ^[%-12345X 2. Testing Options Set the 'options' value with the options to be set. For example, lpr -Zduplex -> options=duplex as show below: ifhp=${libexecdir}/filters/ifhp out=/tmp/out file=${libexecdir}/filters/UTILS/one.ps debug=0 options=duplex #> sh -x /tmp/sendhp.sh ifhp 12:54:44.428 [31566] main: using model '' ifhp 12:54:44.430 [31566] Process_job: setting up printer ifhp 12:54:44.431 [31566] Do_accounting: pagecounter 0 ifhp 12:54:44.431 [31566] Process_job: sending job file ifhp 12:54:44.431 [31566] Send_job: starting transfer ifhp 12:54:44.431 [31566] Send_job: initial job type 'POSTSCRIPT' ifhp 12:54:44.431 [31566] Send_job: decoded job type 'POSTSCRIPT' ifhp 12:54:44.431 [31566] Send_job: job type 'POSTSCRIPT' ifhp 12:54:44.431 [31566] Send_job: transferring 145 bytes ifhp 12:54:44.431 [31566] Send_job: 100 percent done ifhp 12:54:44.431 [31566] Process_job: sent job file ifhp 12:54:44.431 [31566] Do_accounting: pagecounter 0, pages 0 ifhp 12:54:44.432 [31566] Process_job: done Output /tmp/out: ^[%-12345X@PJL @PJL RESET @PJL JOB NAME = ":" DISPLAY = ":" @PJL RDYMSG DISPLAY = ":" @PJL INFO ID @PJL USTATUSOFF @PJL USTATUS JOB = ON @PJL USTATUS DEVICE = ON @PJL USTATUS PAGE = ON @PJL USTATUS TIMED = 10 @PJL SET DUPLEX = ON <<--- duplex PJL @PJL ENTER LANGUAGE = POSTSCRIPT ^D%! statusdict begin true setduplexmode false settumble end ^^^ duplex PostScript %!PS-Adobe-3.0 %% one page (i.e. - a page with a 1 on it) %%/Times-Roman /Courier findfont 200 scalefont setfont 72 300 moveto (1) show showpage ^D^[%-12345X@PJL @PJL RDYMSG DISPLAY = ":" @PJL EOJ NAME = ":" @PJL USTATUSOFF @PJL USTATUS JOB = ON @PJL USTATUS DEVICE = ON @PJL USTATUS PAGE = ON @PJL USTATUS TIMED = 10 @PJL RDYMSG DISPLAY = "Done: :" ^[%-12345X OR for a postscript only printer: ifhp=${libexecdir}/filters/ifhp out=/tmp/out file=${libexecdir}/filters/UTILS/one.ps (OR file=${libexecdir}/filters/UTILS/one.pcl if your printer does not support PostScript) debug=0 model=ps options=duplex 3. Testing IFHP output on a printer If your printer has support for a socket connection via port 9100 (or some other port), then you can use the netcat program: ftp://ftp.lprng.com/pub/LPRng/TOOLS/netcat/nc110.tgz (see also other files in /netcat directory) http://ftp.cerias.purdue.edu/pub/tools/unix/netutils/netcat/nc110.tgz ftp://coast.cs.purdue.edu/pub/tools/unix/netutils/netcat/nc110.tgz ftp://ftp.cuhk.edu.hk/pub/packages/security/purdue/netutils/netcat/nc110.tgz If your printer has IP address 10.0.0.14 and uses port 9100 for connections, then try: ifhp=${libexecdir}/filters/ifhp out=/tmp/out file=${libexecdir}/filters/UTILS/one.ps debug=0 #> sh /tmp/sendhp.sh .... #> nc 10.0.0.14 9100 < /tmp/out If your printer has bidirectional status reporting, and supports PJL, you should see something like: @PJL USTATUS JOB START NAME=":" @PJL USTATUS DEVICE CODE=10001 DISPLAY=":" ONLINE=TRUE @PJL INFO ID "LASERJET 4 PLUS" @PJL USTATUS DEVICE CODE=10001 DISPLAY="Done: :" ONLINE=TRUE @PJL USTATUS TIMED CODE=10001 DISPLAY="Done: :" ONLINE=TRUE @PJL USTATUS PAGE 1 @PJL USTATUS JOB END NAME=":" PAGES=1 @PJL USTATUS TIMED CODE=10001 DISPLAY="Done: :" ONLINE=TRUE (kill the nc program with ^C when you get tired of seeing the status) If you have a PostScript only printer, then try sending the following file to the printer: ^D%!PS-Adobe-2.0 /p{print}def ( %%[ pagecount: ) p statusdict begin pagecount end 20 string cvs p ( ]%% ) p () = flush ^D (Note: the ^D are CTRL-D or \004 characters) #> nc 10.0.0.14 9100 < /tmp/out %%[ pagecount: 107217 ]%% Note that this indicates that pagecounts work. You might want to try: #> printf "%%!\024" | nc 10.0.0.14 9100 %%[ status: busy ]%% The ^T or \024 character is supposed to cause the printer to return status. 4. Connecting to a Printer and Getting Status If your printer is on the network and returns status, then you can try getting status with ifhp: ifhp=${libexecdir}/filters/ifhp out=h14%9100 file=${libexecdir}/filters/UTILS/one.ps debug=0 #> sh -x /tmp/sendhp.sh (Note: I removed paper tray to cause and Out Of Paper error) ifhp 13:00:25.258 [31594] main: using model '' ifhp 13:00:25.267 [31594] Check_pagecount: pagecount using 'pjl info pagecount' ifhp 13:00:25.267 [31594] Process_job: setting up printer ifhp 13:00:25.267 [31594] Do_sync: getting sync using 'pjl echo' ifhp 13:00:26.461 [31594] Check_device_status: id = '"LASERJET 4 PLUS"' ifhp 13:00:26.472 [31594] Do_sync: sync done ifhp 13:00:26.480 [31594] Do_pagecount: pagecounter 107213 after 1 attempts ifhp 13:00:26.481 [31594] Do_accounting: pagecounter 107213 ifhp 13:00:26.481 [31594] Process_job: sending job file ifhp 13:00:26.481 [31594] Send_job: starting transfer ifhp 13:00:26.481 [31594] Send_job: initial job type 'POSTSCRIPT' ifhp 13:00:26.481 [31594] Send_job: decoded job type 'POSTSCRIPT' ifhp 13:00:26.481 [31594] Send_job: job type 'POSTSCRIPT' ifhp 13:00:26.481 [31594] Send_job: transferring 145 bytes ifhp 13:00:26.481 [31594] Send_job: 100 percent done ifhp 13:00:26.481 [31594] Process_job: sent job file ifhp 13:00:26.481 [31594] Do_waitend: getting end using 'pjl job/eoj' ifhp 13:00:30.340 [31594] Check_device_status: code = 10003, 'Warming Up' ifhp 13:01:24.338 [31594] Check_device_status: code = 11202, 'PC/Upper/Tray2 - Letter Paper' ifhp 13:01:25.655 [31594] Check_device_status: code = 41202, 'PC/Upper/Tray2 - Letter Paper', ALERT OPERATOR (Put paper tray back in. Note that there is no indication that error condition cleared) ifhp 13:01:32.078 [31594] Do_waitend: end of job detected ifhp 13:32:22.434 [31594] Do_pagecount: pagecounter 107214 after 1 attempts ifhp 13:32:22.434 [31594] Do_accounting: pagecounter 107214, pages 1 ifhp 13:32:22.435 [31594] Process_job: done ifhp-3.5.20/CREATE_CONFIGURE0100644000175100017510000000125510130541262015246 0ustar papowellpapowell#!/bin/sh M4PATH=/usr/local/share/aclocal export M4PATH set -e rm -f aclocal.m4 libtool config.cache config.status aclocal grep 'libtool.m4 - Configure' aclocal.m4 || { cat /usr/local/share/aclocal/libtool14.m4 >>aclocal.m4 } autoconf #autoreconf --force --install gettextize --force --copy /dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac PATH_SEPARATOR=$lt_cv_sys_path_separator fi # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # NLS nuisances. # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi (set +x; test -n "`(LANG=C; export LANG) 2>&1`") && { $as_unset LANG || test "${LANG+set}" != set; } || { LANG=C; export LANG; } (set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || { LC_ALL=C; export LC_ALL; } (set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || { LC_TIME=C; export LC_TIME; } (set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || { LC_CTYPE=C; export LC_CTYPE; } (set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || { LANGUAGE=C; export LANGUAGE; } (set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || { LC_COLLATE=C; export LC_COLLATE; } (set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || { LC_NUMERIC=C; export LC_NUMERIC; } (set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || { LC_MESSAGES=C; export LC_MESSAGES; } # Name of the executable. as_me=`(basename "$0") 2>/dev/null || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conftest.sh echo "exit 0" >>conftest.sh chmod +x conftest.sh if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conftest.sh fi as_lineno_1=256 as_lineno_2=257 as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=295 as_lineno_2=296 as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with 310 # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that 315 is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="Makefile.in" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_default_prefix=/usr/local # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-shared=PKGS build shared libraries default=no --enable-static=PKGS build static libraries default=yes --enable-fast-install=PKGS optimize for fast installation default=yes --disable-libtool-lock avoid locking (might break parallel builds) --disable-snmp disable snmp support --disable-foomatic disable foomatic support --disable-strip disable stripping binaries by default --disable-gscheck disable checking GhostScript for security flaw --enable-nls use Native Language Support --disable-rpath do not hardcode runtime library paths Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-copts OBSOLETE - use CFLAGS=..., see configure --help --with-ccopts OBSOLETE - use CPPFLAGS=..., see configure --help --with-ldopts OBSOLETE - use LDFLAGS=..., see configure --help --with-localedir=PATH specify locale information directory --with-gnu-ld assume the C compiler uses GNU ld default=no --with-pic try to use only PIC/non-PIC objects default=use both --with-ifhp_conf=path ifhp.conf config file (default \${sysconfdir}/ifhp.conf) --with-foomatic-rip=PATH path to foomatic-rip --with-pagesize=SIZE default page size (default letter) --with-filterdir=DIR filter directory (default \${libexecdir}/filters) --with-fontdir=DIR font directory (default \${libexecdir}/filters/fonts) --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.53. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Also quote any args containing shell meta-characters. ac_configure_args= ac_sep= for ac_arg do case $ac_arg in -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n ) continue ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" ac_sep=" " ;; esac # Get rid of the leading space. done # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core core.* *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:1279: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:1290: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:1298: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:1314: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:1318: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:1324: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:1326: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:1328: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:1347: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:1349: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu PACKAGE=ifhp VERSION=3.5.20 ac_aux_dir= for ac_dir in . $srcdir/.; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:1398: error: cannot find install-sh or install.sh in . $srcdir/." >&5 echo "$as_me: error: cannot find install-sh or install.sh in . $srcdir/." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:1408: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:1412: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:1421: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:1425: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:1430: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:1438: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:1447: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:1452: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:1460: checking target system type" >&5 echo $ECHO_N "checking target system type... $ECHO_C" >&6 if test "${ac_cv_target+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_target_alias=$target_alias test "x$ac_cv_target_alias" = "x" && ac_cv_target_alias=$ac_cv_host_alias ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || { { echo "$as_me:1469: error: $ac_config_sub $ac_cv_target_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:1474: result: $ac_cv_target" >&5 echo "${ECHO_T}$ac_cv_target" >&6 target=$ac_cv_target target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- ac_config_headers="$ac_config_headers config.h" cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF ALL_LINGUAS="fr" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:1513: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:1529: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:1539: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:1542: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:1551: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:1567: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:1577: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:1580: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:1593: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:1609: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:1619: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:1622: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:1631: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:1647: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:1657: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:1660: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:1673: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:1694: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift set dummy "$as_dir/$ac_word" ${1+"$@"} shift ac_cv_prog_CC="$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:1718: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:1721: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:1732: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:1748: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:1758: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:1761: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:1774: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:1790: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:1800: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:1803: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:1816: error: no acceptable C compiler found in \$PATH" >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:1821:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:1824: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:1827: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:1829: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:1832: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:1834: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:1837: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF #line 1841 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:1863: checking for C compiler default output" >&5 echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:1866: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:1869: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; ls a.out conftest 2>/dev/null; ls a.* conftest.* 2>/dev/null`; do case $ac_file in *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb | *.xSYM ) ;; a.out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 { { echo "$as_me:1896: error: C compiler cannot create executables" >&5 echo "$as_me: error: C compiler cannot create executables" >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:1902: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:1907: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:1913: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:1916: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:1923: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:1931: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:1938: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:1940: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:1943: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:1945: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:1948: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:1964: error: cannot compute suffix of executables: cannot compile and link" >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:1970: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:1976: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 1982 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:2000: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:2003: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 { { echo "$as_me:2015: error: cannot compute suffix of object files: cannot compile" >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:2022: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:2026: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 2032 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:2053: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:2056: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:2059: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2062: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:2074: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:2080: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 2086 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:2104: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:2107: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:2110: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2113: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:2123: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:2150: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:2153: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:2156: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2159: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line 2171 "configure" #include "confdefs.h" #include $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:2190: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:2193: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:2196: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2199: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line 2209 "configure" #include "confdefs.h" $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:2227: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:2230: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:2233: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2236: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:2269: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line 2290 "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:2295: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:2301: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line 2324 "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:2328: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:2334: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:2371: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line 2381 "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:2386: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:2392: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line 2415 "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:2419: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:2425: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:2453: error: C preprocessor \"$CPP\" fails sanity check" >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:2466: checking for AIX" >&5 echo $ECHO_N "checking for AIX... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 2469 "configure" #include "confdefs.h" #ifdef _AIX yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "yes" >/dev/null 2>&1; then echo "$as_me:2478: result: yes" >&5 echo "${ECHO_T}yes" >&6 cat >>confdefs.h <<\_ACEOF #define _ALL_SOURCE 1 _ACEOF else echo "$as_me:2485: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest* echo "$as_me:2492: checking for strerror in -lcposix" >&5 echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 if test "${ac_cv_lib_cposix_strerror+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcposix $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 2500 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char strerror (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { strerror (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:2525: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:2528: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:2531: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2534: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_cposix_strerror=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_cposix_strerror=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:2545: result: $ac_cv_lib_cposix_strerror" >&5 echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 if test $ac_cv_lib_cposix_strerror = yes; then LIBS="$LIBS -lcposix" fi echo "$as_me:2553: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 2559 "configure" #include "confdefs.h" #include #include #include #include _ACEOF if { (eval echo "$as_me:2567: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:2573: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line 2595 "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line 2613 "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF #line 2634 "configure" #include "confdefs.h" #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:2660: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:2663: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:2665: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2668: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:2682: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:2706: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 2712 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:2719: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:2722: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:2725: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2728: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:2738: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test "${ac_cv_header_minix_config_h+set}" = set; then echo "$as_me:2751: checking for minix/config.h" >&5 echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 if test "${ac_cv_header_minix_config_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:2756: result: $ac_cv_header_minix_config_h" >&5 echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 else # Is the header compilable? echo "$as_me:2760: checking minix/config.h usability" >&5 echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 2763 "configure" #include "confdefs.h" $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:2769: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:2772: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:2775: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:2778: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:2787: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:2791: checking minix/config.h presence" >&5 echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 2794 "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:2798: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:2804: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:2822: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:2828: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:2830: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:2833: WARNING: minix/config.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} { echo "$as_me:2835: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:2837: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:2840: checking for minix/config.h" >&5 echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 if test "${ac_cv_header_minix_config_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_minix_config_h=$ac_header_preproc fi echo "$as_me:2847: result: $ac_cv_header_minix_config_h" >&5 echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 fi if test $ac_cv_header_minix_config_h = yes; then MINIX=yes else MINIX= fi if test "$MINIX" = yes; then cat >>confdefs.h <<\_ACEOF #define _POSIX_SOURCE 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define _POSIX_1_SOURCE 2 _ACEOF cat >>confdefs.h <<\_ACEOF #define _MINIX 1 _ACEOF fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:2891: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:2907: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:2917: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:2920: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 echo "$as_me:2930: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PERL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:2948: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then echo "$as_me:2960: result: $PERL" >&5 echo "${ECHO_T}$PERL" >&6 else echo "$as_me:2963: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Check whether --with-ccopts or --without-ccopts was given. if test "${with_ccopts+set}" = set; then withval="$with_ccopts" { { echo "$as_me:2972: error: --with-ccopts OBSOLETE - use CFLAGS=... see configure --help" >&5 echo "$as_me: error: --with-ccopts OBSOLETE - use CFLAGS=... see configure --help" >&2;} { (exit 1); exit 1; }; } fi; # Check whether --with-ccpopts or --without-ccpopts was given. if test "${with_ccpopts+set}" = set; then withval="$with_ccpopts" { { echo "$as_me:2981: error: --with-cppopts OBSOLETE - use CPPFLAGS=... see configure --help" >&5 echo "$as_me: error: --with-cppopts OBSOLETE - use CPPFLAGS=... see configure --help" >&2;} { (exit 1); exit 1; }; } fi; # Check whether --with-ldopts or --without-ldopts was given. if test "${with_ldopts+set}" = set; then withval="$with_ldopts" { { echo "$as_me:2990: error: --with-ldopts OBSOLETE - use LDFLAGS=... see configure --help" >&5 echo "$as_me: error: --with-ldopts OBSOLETE - use LDFLAGS=... see configure --help" >&2;} { (exit 1); exit 1; }; } fi; if test -z "$LOCALEDIR" ; then LOCALEDIR='$(prefix)/share/locale' fi; # Check whether --with-localedir or --without-localedir was given. if test "${with_localedir+set}" = set; then withval="$with_localedir" echo "$as_me:3004: result: LOCALEDIR is $withval" >&5 echo "${ECHO_T}LOCALEDIR is $withval" >&6 LOCALEDIR="$withval" else LOCALEDIR="$LOCALEDIR" echo "$as_me:3009: result: LOCALEDIR defaults to $LOCALEDIR" >&5 echo "${ECHO_T}LOCALEDIR defaults to $LOCALEDIR" >&6 fi; # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac else enable_shared=no fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac else enable_static=yes fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac else enable_fast_install=yes fi; # Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac PATH_SEPARATOR=$lt_cv_sys_path_separator fi # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:3101: checking for ld used by GCC" >&5 echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:3131: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:3134: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else lt_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$lt_cv_path_LD" if test -n "$LD"; then echo "$as_me:3164: result: $LD" >&5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:3167: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:3170: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:3173: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then lt_cv_prog_gnu_ld=yes else lt_cv_prog_gnu_ld=no fi fi echo "$as_me:3185: result: $lt_cv_prog_gnu_ld" >&5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld echo "$as_me:3190: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi echo "$as_me:3197: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" echo "$as_me:3202: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/${ac_tool_prefix}nm if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then lt_cv_path_NM="$tmp_nm -B" break elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then lt_cv_path_NM="$tmp_nm -p" break else lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi NM="$lt_cv_path_NM" echo "$as_me:3238: result: $NM" >&5 echo "${ECHO_T}$NM" >&6 echo "$as_me:3241: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 if test "${lt_cv_path_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_executable_p="test -f" as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext" fi done done done # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. : ${TMPDIR=/tmp} { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=$TMPDIR/sed$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 { (exit 1); exit 1; } } _max=0 _count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for _sed in $_sed_list /usr/xpg4/bin/sed; do test ! -f ${_sed} && break cat /dev/null > "$tmp/sed.in" _count=0 echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in" # Check for GNU sed and select it if it is found. if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then lt_cv_path_SED=${_sed} break fi while true; do cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp" mv "$tmp/sed.tmp" "$tmp/sed.in" cp "$tmp/sed.in" "$tmp/sed.nl" echo >>"$tmp/sed.nl" ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break # 40000 chars as input seems more than enough test $_count -gt 10 && break _count=`expr $_count + 1` if test $_count -gt $_max; then _max=$_count lt_cv_path_SED=$_sed fi done done rm -rf "$tmp" fi if test "X$SED" != "X"; then lt_cv_path_SED=$SED else SED=$lt_cv_path_SED fi echo "$as_me:3323: result: $SED" >&5 echo "${ECHO_T}$SED" >&6 echo "$as_me:3326: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then echo "$as_me:3330: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:3333: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi echo "$as_me:3337: checking how to recognise dependent libraries" >&5 echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin* | mingw* | pw32*) lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' lt_cv_file_magic_cmd='/usr/bin/file -L' case "$host_os" in rhapsody* | darwin1.[012]) lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` ;; *) # Darwin 1.3 on lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' ;; esac ;; freebsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20*|hpux11*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; irix5* | irix6* | nonstopux*) case $host_os in irix5* | nonstopux*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" ;; esac lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux-gnu*) case $host_cpu in alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' else lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; openbsd*) lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' else lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' fi ;; osf3* | osf4* | osf5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_test_file=/lib/libc.so ;; sysv5uw[78]* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; esac ;; esac fi echo "$as_me:3518: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method # Check for command to grab the raw symbol name followed by C symbol from nm. echo "$as_me:3530: checking command to parse $NM output" >&5 echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris* | sysv5*) symcode='[BDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $host_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then symcode='[ABCDGISTW]' fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:3617: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:3621: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:3624: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr address; } lt_preloaded_symbols[] = { EOF sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" if { (eval echo "$as_me:3676: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:3679: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" if test -z "$lt_cv_sys_global_symbol_pipe"; then global_symbol_to_cdecl= global_symbol_to_c_name_address= else global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" fi if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; then echo "$as_me:3720: result: failed" >&5 echo "${ECHO_T}failed" >&6 else echo "$as_me:3723: result: ok" >&5 echo "${ECHO_T}ok" >&6 fi for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:3732: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:3737: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:3741: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 3744 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:3750: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:3753: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:3756: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:3759: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:3768: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:3772: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 3775 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:3779: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:3785: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:3803: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:3809: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:3811: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:3814: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:3816: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:3818: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:3821: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:3828: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo "$as_me:3850: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="/usr/bin:$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:3905: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:3908: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo "$as_me:3914: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="/usr/bin:$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:3969: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:3972: result: no" >&5 echo "${ECHO_T}no" >&6 fi else MAGIC_CMD=: fi fi fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:3988: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:4004: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:4014: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:4017: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:4026: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:4042: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:4053: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:4056: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:4068: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:4084: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:4094: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:4097: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:4106: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:4122: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:4133: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:4136: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi enable_dlopen=no enable_win32_dll=no # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in *-*-irix6*) # Find out which ABI we are using. echo '#line 4161 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:4162: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:4165: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo "$as_me:4186: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF #line 4200 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:4218: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:4221: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:4224: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:4227: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi echo "$as_me:4243: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" need_locks="$enable_libtool_lock" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o if test x"$host" != x"$build"; then ac_tool_prefix=${host_alias}- else ac_tool_prefix= fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case $host_os in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ;; *) old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # Allow CC to be a program name with arguments. set dummy $CC compiler="$2" ## FIXME: this should be a separate macro ## echo "$as_me:4346: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null echo "$as_me:4357: result: $objdir" >&5 echo "${ECHO_T}$objdir" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## # Check whether --with-pic or --without-pic was given. if test "${with_pic+set}" = set; then withval="$with_pic" pic_mode="$withval" else pic_mode=default fi; test -z "$pic_mode" && pic_mode=default # We assume here that the value for lt_cv_prog_cc_pic will not be cached # in isolation, and that seeing it set (from the cache) indicates that # the associated values are set (in the cache) correctly too. echo "$as_me:4378: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "${lt_cv_prog_cc_pic+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_pic= lt_cv_prog_cc_shlib= lt_cv_prog_cc_wl= lt_cv_prog_cc_static= lt_cv_prog_cc_no_builtin= lt_cv_prog_cc_can_build_shared=$can_build_shared if test "$GCC" = yes; then lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-static' case $host_os in aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # not sure about C++ programs. lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_cv_prog_cc_pic='-fno-common' ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; sysv4*MP*) if test -d /usr/nec; then lt_cv_prog_cc_pic=-Kconform_pic fi ;; *) lt_cv_prog_cc_pic='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case $host_os in aix3* | aix4* | aix5*) lt_cv_prog_cc_wl='-Wl,' # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_cv_prog_cc_static='-Bstatic' else lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' fi ;; hpux9* | hpux10* | hpux11*) # Is there a better lt_cv_prog_cc_static that works with the bundled CC? lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" lt_cv_prog_cc_pic='+Z' ;; irix5* | irix6* | nonstopux*) lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; newsos6) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' ;; osf3* | osf4* | osf5*) # All OSF/1 code is PIC. lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' ;; sco3.2v5*) lt_cv_prog_cc_pic='-Kpic' lt_cv_prog_cc_static='-dn' lt_cv_prog_cc_shlib='-belf' ;; solaris*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; sunos4*) lt_cv_prog_cc_pic='-PIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; uts4*) lt_cv_prog_cc_pic='-pic' lt_cv_prog_cc_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_cv_prog_cc_pic='-Kconform_pic' lt_cv_prog_cc_static='-Bstatic' fi ;; *) lt_cv_prog_cc_can_build_shared=no ;; esac fi fi if test -z "$lt_cv_prog_cc_pic"; then echo "$as_me:4521: result: none" >&5 echo "${ECHO_T}none" >&6 else echo "$as_me:4524: result: $lt_cv_prog_cc_pic" >&5 echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 # Check to make sure the pic_flag actually works. echo "$as_me:4528: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 if test "${lt_cv_prog_cc_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" cat >conftest.$ac_ext <<_ACEOF #line 4536 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:4554: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:4557: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:4560: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:4563: \$? = $ac_status" >&5 (exit $ac_status); }; }; then case $host_os in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then # they create non-PIC objects. So, if there were any warnings, we # assume that PIC is not supported. if test -s conftest.err; then lt_cv_prog_cc_pic_works=no else lt_cv_prog_cc_pic_works=yes fi ;; *) lt_cv_prog_cc_pic_works=yes ;; esac else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 lt_cv_prog_cc_pic_works=no fi rm -f conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" fi if test "X$lt_cv_prog_cc_pic_works" = Xno; then lt_cv_prog_cc_pic= lt_cv_prog_cc_can_build_shared=no else lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" fi echo "$as_me:4600: result: $lt_cv_prog_cc_pic_works" >&5 echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 fi ## ## END FIXME # Check for any special shared library compilation flags. if test -n "$lt_cv_prog_cc_shlib"; then { echo "$as_me:4608: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : else { echo "$as_me:4612: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} lt_cv_prog_cc_can_build_shared=no fi fi ## FIXME: this should be a separate macro ## echo "$as_me:4620: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 if test "${lt_cv_prog_cc_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" cat >conftest.$ac_ext <<_ACEOF #line 4629 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:4647: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:4650: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:4653: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:4656: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_prog_cc_static_works=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi # Belt *and* braces to stop my trousers falling down: test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= echo "$as_me:4671: result: $lt_cv_prog_cc_static_works" >&5 echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 pic_flag="$lt_cv_prog_cc_pic" special_shlib_compile_flags="$lt_cv_prog_cc_shlib" wl="$lt_cv_prog_cc_wl" link_static_flag="$lt_cv_prog_cc_static" no_builtin_flag="$lt_cv_prog_cc_no_builtin" can_build_shared="$lt_cv_prog_cc_can_build_shared" ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if options -o and -c are simultaneously supported by compiler echo "$as_me:4687: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else $rm -r conftest 2>/dev/null mkdir conftest cd conftest echo "int some_variable = 0;" > conftest.$ac_ext mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no if { (eval echo configure:4707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then lt_cv_compiler_c_o=no else lt_cv_compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&5 lt_cv_compiler_c_o=no fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null fi compiler_c_o=$lt_cv_compiler_c_o echo "$as_me:4731: result: $compiler_c_o" >&5 echo "${ECHO_T}$compiler_c_o" >&6 if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo echo "$as_me:4736: checking if $compiler supports -c -o file.lo" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 if test "${lt_cv_compiler_o_lo+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_compiler_o_lo=no save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" save_objext="$ac_objext" ac_objext=lo cat >conftest.$ac_ext <<_ACEOF #line 4748 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int some_variable = 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:4766: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:4769: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:4772: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:4775: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then lt_cv_compiler_o_lo=no else lt_cv_compiler_o_lo=yes fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_objext="$save_objext" CFLAGS="$save_CFLAGS" fi compiler_o_lo=$lt_cv_compiler_o_lo echo "$as_me:4796: result: $compiler_o_lo" >&5 echo "${ECHO_T}$compiler_o_lo" >&6 else compiler_o_lo=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:4810: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:4818: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:4821: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi ## ## END FIXME ## FIXME: this should be a separate macro ## if test "$GCC" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler echo "$as_me:4835: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 echo "int some_variable = 0;" > conftest.$ac_ext save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" compiler_rtti_exceptions=no cat >conftest.$ac_ext <<_ACEOF #line 4842 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int some_variable = 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:4860: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:4863: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:4866: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:4869: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then compiler_rtti_exceptions=no else compiler_rtti_exceptions=yes fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" echo "$as_me:4885: result: $compiler_rtti_exceptions" >&5 echo "${ECHO_T}$compiler_rtti_exceptions" >&6 if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi ## ## END FIXME ## FIXME: this should be a separate macro ## # See if the linker supports building shared libraries. echo "$as_me:4900: checking whether the linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_into_libs=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= link_all_deplibs=unknown always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX, the GNU linker is very broken # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ test -f $output_objdir/impgen.exe || (cd $output_objdir && \ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ else $CC -o impgen impgen.c ; fi)~ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' # cygwin and mingw dlls have different entry points and sets of symbols # to exclude. # FIXME: what about values for MSVC? dll_entry=__cygwin_dll_entry@12 dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ case $host_os in mingw*) # mingw values dll_entry=_DllMainCRTStartup@12 dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ ;; esac # mingw and cygwin differ, and it's simplest to just exclude the union # of the two symbol sets. dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one (in ltdll.c) if test "x$lt_cv_need_dllmain" = "xyes"; then ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' else ltdll_obj= ltdll_cmds= fi # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. # Be careful not to strip the DATA tag left be newer dlltools. export_symbols_cmds="$ltdll_cmds"' $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is. # If DATA tags from a recent dlltool are present, honour them! archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname-def; else echo EXPORTS > $output_objdir/$soname-def; _lt_hint=1; cat $export_symbols | while read symbol; do set dummy \$symbol; case \$# in 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; 4) echo " \$2 \$3 \$4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;; *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; esac; _lt_hint=`expr 1 + \$_lt_hint`; done; fi~ '"$ltdll_cmds"' $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw* | pw32*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. hardcode_direct=yes archive_cmds='' hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac shared_flag='-shared' else # not using gcc if test "$host_cpu" = ia64; then shared_flag='${wl}-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall can do strange things, so it is better to # generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. allow_undefined_flag='${wl}-berok' # This is a bit strange, but is similar to how AIX traditionally builds # it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' ;; darwin* | rhapsody*) case "$host_os" in rhapsody* | darwin1.[012]) allow_undefined_flag='-undefined suppress' ;; *) # Darwin 1.3 on allow_undefined_flag='-flat_namespace -undefined suppress' ;; esac # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. Also zsh mangles # `"' quotes if we put them in here... so don't! archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)' # We need to add '_' to the symbols in $export_symbols first #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' hardcode_direct=yes hardcode_shlibpath_var=no whole_archive_flag_spec='-all_load $convenience' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case $host_os in hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' #Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes export_dynamic_flag_spec='${wl}-Bexport' ;; solaris*) # gcc --version < 3.0 without binutils cannot create self contained # shared libraries reliably, requiring libgcc.a to resolve some of # the object symbols generated in some cases. Libraries that use # assert need libgcc.a to resolve __eprintf, for example. Linking # a copy of libgcc.a into every shared library to guarantee resolving # such symbols causes other problems: According to Tim Van Holder # , C++ libraries end up with a separate # (to the application) exception stack for one thing. no_undefined_flag=' -z defs' if test "$GCC" = yes; then case `$CC --version 2>/dev/null` in [12].*) cat <&2 *** Warning: Releases of GCC earlier than version 3.0 cannot reliably *** create self contained shared libraries on Solaris systems, without *** introducing a dependency on libgcc.a. Therefore, libtool is disabling *** -no-undefined support, which will at least allow you to build shared *** libraries. However, you may find that when you link such libraries *** into an application without using GCC, you have to manually add *** \`gcc --print-libgcc-file-name\` to the link command. We urge you to *** upgrade to a newer version of GCC. Another option is to rebuild your *** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. EOF no_undefined_flag= ;; esac fi # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5uw7* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$as_me:5595: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Check hardcoding attributes. echo "$as_me:5604: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$as_me:5628: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## striplib= old_striplib= echo "$as_me:5637: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:5642: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:5645: result: no" >&5 echo "${ECHO_T}no" >&6 fi ## ## END FIXME reload_cmds='$LD$reload_flag -o $output$reload_objs' test -z "$deplibs_check_method" && deplibs_check_method=unknown ## FIXME: this should be a separate macro ## # PORTME Fill in your ld.so characteristics echo "$as_me:5657: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4* | aix5*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can # not hardcode correct soname into executable. Probably we can # add versioning support to collect2, so additional links can # be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}.so$major' fi shlibpath_var=LIBPATH fi hardcode_into_libs=yes ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" export_dynamic_flag_spec=-rdynamic # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin*) library_names_spec='$libname.dll.a' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog .libs/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' ;; yes,mingw*) library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"` ;; yes,pw32*) library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' ;; *) library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; *) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) version_type=irix ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos need_lib_prefix=no need_version=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case "$host_os" in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" hardcode_into_libs=yes ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac echo "$as_me:6064: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no ## ## END FIXME ## FIXME: this should be a separate macro ## # Report the final consequences. echo "$as_me:6073: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:6075: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## echo "$as_me:6082: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac echo "$as_me:6103: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6 ## ## END FIXME ## FIXME: this should be a separate macro ## echo "$as_me:6110: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "$as_me:6114: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 ## ## END FIXME if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; cygwin* | mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; *) echo "$as_me:6154: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 6160 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else f = shl_load; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:6197: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:6200: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:6203: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:6206: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:6216: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:6221: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 6229 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:6254: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:6257: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:6260: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:6263: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:6274: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else echo "$as_me:6279: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 6285 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else f = dlopen; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:6322: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:6325: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:6328: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:6331: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:6341: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:6346: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 6354 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:6379: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:6382: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:6385: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:6388: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:6399: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:6404: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 6412 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:6437: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:6440: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:6443: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:6446: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:6457: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:6462: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 6470 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dld_link (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:6495: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:6498: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:6501: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:6504: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:6515: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:6556: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:6628: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:6631: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:6649: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:6654: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:6726: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:6729: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:6747: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ## FIXME: this should be a separate macro ## if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:6780: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 if test "${lt_cv_archive_cmds_need_lc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else $rm conftest* echo 'static int dummy;' > conftest.$ac_ext if { (eval echo "$as_me:6788: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:6791: \$? = $ac_status" >&5 (exit $ac_status); }; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_cv_prog_cc_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:6805: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:6808: \$? = $ac_status" >&5 (exit $ac_status); } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 fi fi echo "$as_me:6821: result: $lt_cv_archive_cmds_need_lc" >&5 echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 ;; esac fi need_lc=${lt_cv_archive_cmds_need_lc-yes} ## ## END FIXME ## FIXME: this should be a separate macro ## # The second clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then : else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi if test -f "$ltmain"; then trap "$rm \"${ofile}T\"; exit 1" 1 2 15 $rm -f "${ofile}T" echo creating $ofile # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS SED \ AR AR_FLAGS CC LD LN_S NM SHELL \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ old_striplib striplib file_magic_cmd export_symbols_cmds \ deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ global_symbol_to_c_name_address \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case $var in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done cat <<__EOF__ > "${ofile}T" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996-2000 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="${SED} -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$need_lc # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # The default C compiler. CC=$lt_CC # Is the compiler the GNU C compiler? with_gcc=$GCC # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_pic_flag pic_mode=$pic_mode # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$lt_compiler_o_lo # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "${ofile}T" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac case $host_os in cygwin* | mingw* | pw32* | os2*) cat <<'EOF' >> "${ofile}T" # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments # /* impgen.c starts here */ # /* Copyright (C) 1999-2000 Free Software Foundation, Inc. # # This file is part of GNU libtool. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # */ # # #include /* for printf() */ # #include /* for open(), lseek(), read() */ # #include /* for O_RDONLY, O_BINARY */ # #include /* for strdup() */ # # /* O_BINARY isn't required (or even defined sometimes) under Unix */ # #ifndef O_BINARY # #define O_BINARY 0 # #endif # # static unsigned int # pe_get16 (fd, offset) # int fd; # int offset; # { # unsigned char b[2]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 2); # return b[0] + (b[1]<<8); # } # # static unsigned int # pe_get32 (fd, offset) # int fd; # int offset; # { # unsigned char b[4]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 4); # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # static unsigned int # pe_as32 (ptr) # void *ptr; # { # unsigned char *b = ptr; # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # int # main (argc, argv) # int argc; # char *argv[]; # { # int dll; # unsigned long pe_header_offset, opthdr_ofs, num_entries, i; # unsigned long export_rva, export_size, nsections, secptr, expptr; # unsigned long name_rvas, nexp; # unsigned char *expdata, *erva; # char *filename, *dll_name; # # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); # if (dll < 1) # return 1; # # dll_name = filename; # # for (i=0; filename[i]; i++) # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') # dll_name = filename + i +1; # # pe_header_offset = pe_get32 (dll, 0x3c); # opthdr_ofs = pe_header_offset + 4 + 20; # num_entries = pe_get32 (dll, opthdr_ofs + 92); # # if (num_entries < 1) /* no exports */ # return 1; # # export_rva = pe_get32 (dll, opthdr_ofs + 96); # export_size = pe_get32 (dll, opthdr_ofs + 100); # nsections = pe_get16 (dll, pe_header_offset + 4 +2); # secptr = (pe_header_offset + 4 + 20 + # pe_get16 (dll, pe_header_offset + 4 + 16)); # # expptr = 0; # for (i = 0; i < nsections; i++) # { # char sname[8]; # unsigned long secptr1 = secptr + 40 * i; # unsigned long vaddr = pe_get32 (dll, secptr1 + 12); # unsigned long vsize = pe_get32 (dll, secptr1 + 16); # unsigned long fptr = pe_get32 (dll, secptr1 + 20); # lseek(dll, secptr1, SEEK_SET); # read(dll, sname, 8); # if (vaddr <= export_rva && vaddr+vsize > export_rva) # { # expptr = fptr + (export_rva - vaddr); # if (export_rva + export_size > vaddr + vsize) # export_size = vsize - (export_rva - vaddr); # break; # } # } # # expdata = (unsigned char*)malloc(export_size); # lseek (dll, expptr, SEEK_SET); # read (dll, expdata, export_size); # erva = expdata - export_rva; # # nexp = pe_as32 (expdata+24); # name_rvas = pe_as32 (expdata+32); # # printf ("EXPORTS\n"); # for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) mv -f "${ofile}T" "$ofile" || \ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") chmod +x "$ofile" fi ## ## END FIXME # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion v="cannot open"; # Extract the first word of "file", so it can be a program name with args. set dummy file; ac_word=$2 echo "$as_me:7405: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_FILEUTIL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $FILEUTIL in [\\/]* | ?:[\\/]*) ac_cv_path_FILEUTIL="$FILEUTIL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FILEUTIL="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:7423: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_FILEUTIL" && ac_cv_path_FILEUTIL="FILE_UTILITY_NOT_FOUND" ;; esac fi FILEUTIL=$ac_cv_path_FILEUTIL if test -n "$FILEUTIL"; then echo "$as_me:7436: result: $FILEUTIL" >&5 echo "${ECHO_T}$FILEUTIL" >&6 else echo "$as_me:7439: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$FILEUTIL" != "FILE_UTILITY_NOT_FOUND" ; then if ${FILEUTIL} - /dev/null ; then echo "the '${FILEUTIL} -' operates correctly"; else echo "Please use a file utility that handles 'file - 'correctly"; echo "You can obtain one from: ftp://ftp.astron.com/pub/file/"; echo " or ftp://ftp.lprng.com/pub/LPRng/UNIXTOOLS/file/"; echo "if necessary, use the FILEUTIL environment variable to specify the path" exit 1 fi fi # Extract the first word of "gzip", so it can be a program name with args. set dummy gzip; ac_word=$2 echo "$as_me:7455: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GZIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GZIP in [\\/]* | ?:[\\/]*) ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:7473: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_GZIP" && ac_cv_path_GZIP="GZIP_NOT_FOUND" ;; esac fi GZIP=$ac_cv_path_GZIP if test -n "$GZIP"; then echo "$as_me:7486: result: $GZIP" >&5 echo "${ECHO_T}$GZIP" >&6 else echo "$as_me:7489: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "gs", so it can be a program name with args. set dummy gs; ac_word=$2 echo "$as_me:7494: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GS in [\\/]* | ?:[\\/]*) ac_cv_path_GS="$GS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GS="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:7512: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_GS" && ac_cv_path_GS="GHOSTSCRIPT_NOT_FOUND" ;; esac fi GS=$ac_cv_path_GS if test -n "$GS"; then echo "$as_me:7525: result: $GS" >&5 echo "${ECHO_T}$GS" >&6 else echo "$as_me:7528: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "a2ps", so it can be a program name with args. set dummy a2ps; ac_word=$2 echo "$as_me:7533: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_A2PS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $A2PS in [\\/]* | ?:[\\/]*) ac_cv_path_A2PS="$A2PS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_A2PS="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:7551: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_A2PS" && ac_cv_path_A2PS="A2PS_NOT_FOUND" ;; esac fi A2PS=$ac_cv_path_A2PS if test -n "$A2PS"; then echo "$as_me:7564: result: $A2PS" >&5 echo "${ECHO_T}$A2PS" >&6 else echo "$as_me:7567: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "cat", so it can be a program name with args. set dummy cat; ac_word=$2 echo "$as_me:7572: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_CAT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $CAT in [\\/]* | ?:[\\/]*) ac_cv_path_CAT="$CAT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_CAT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:7590: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_CAT" && ac_cv_path_CAT="CAT_NOT_FOUND" ;; esac fi CAT=$ac_cv_path_CAT if test -n "$CAT"; then echo "$as_me:7603: result: $CAT" >&5 echo "${ECHO_T}$CAT" >&6 else echo "$as_me:7606: result: no" >&5 echo "${ECHO_T}no" >&6 fi echo "$as_me:7610: checking directory where to install the ifhp.conf file" >&5 echo $ECHO_N "checking directory where to install the ifhp.conf file... $ECHO_C" >&6 # Check whether --with-ifhp_conf or --without-ifhp_conf was given. if test "${with_ifhp_conf+set}" = set; then withval="$with_ifhp_conf" IFHP_CONF=$withval else IFHP_CONF=\${sysconfdir}/ifhp.conf fi; echo "$as_me:7620: result: $IFHP_CONF" >&5 echo "${ECHO_T}$IFHP_CONF" >&6 echo "$as_me:7626: checking use snmp" >&5 echo $ECHO_N "checking use snmp... $ECHO_C" >&6 # Check whether --enable-snmp or --disable-snmp was given. if test "${enable_snmp+set}" = set; then enableval="$enable_snmp" if test "$enableval" = "yes" ; then SNMP="yes"; else SNMP="no"; fi else SNMP="yes"; fi; echo "$as_me:7642: result: $SNMP" >&5 echo "${ECHO_T}$SNMP" >&6 if test "$SNMP" = yes ; then if perl -MNet::SNMP -e exit ; then : else { { echo "$as_me:7650: error: SNMP support enabled and the Net::SNMP module not installed. Get the NET-SNMP libraries from http://www.sourceforge.net Get the Net::SNMP perl modules from http://www.cpan.org " >&5 echo "$as_me: error: SNMP support enabled and the Net::SNMP module not installed. Get the NET-SNMP libraries from http://www.sourceforge.net Get the Net::SNMP perl modules from http://www.cpan.org " >&2;} { (exit 1); exit 1; }; }; fi fi echo "$as_me:7665: checking foomatic-rip" >&5 echo $ECHO_N "checking foomatic-rip... $ECHO_C" >&6 # Check whether --with-foomatic-rip or --without-foomatic-rip was given. if test "${with_foomatic_rip+set}" = set; then withval="$with_foomatic_rip" FOOMATIC_RIP=$withval else # Extract the first word of "foomatic-rip", so it can be a program name with args. set dummy foomatic-rip; ac_word=$2 echo "$as_me:7675: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_FOOMATIC_RIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $FOOMATIC_RIP in [\\/]* | ?:[\\/]*) ac_cv_path_FOOMATIC_RIP="$FOOMATIC_RIP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FOOMATIC_RIP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:7693: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi FOOMATIC_RIP=$ac_cv_path_FOOMATIC_RIP if test -n "$FOOMATIC_RIP"; then echo "$as_me:7705: result: $FOOMATIC_RIP" >&5 echo "${ECHO_T}$FOOMATIC_RIP" >&6 else echo "$as_me:7708: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi; echo "$as_me:7716: checking use foomatic" >&5 echo $ECHO_N "checking use foomatic... $ECHO_C" >&6 # Check whether --enable-foomatic or --disable-foomatic was given. if test "${enable_foomatic+set}" = set; then enableval="$enable_foomatic" if test "$enableval" = "yes" ; then FOOMATIC="1"; else FOOMATIC="0"; fi else FOOMATIC="1"; fi; echo "$as_me:7732: result: $FOOMATIC" >&5 echo "${ECHO_T}$FOOMATIC" >&6 if test "${FOOMATIC}" "!=" 0 -a "${FOOMATIC_RIP}" = "" ; then { { echo "$as_me:7737: error: foomatic enabled and foomatic-rip not found Download foomatic-filters from: http://www.linuxprinting.org/download/foomatic " >&5 echo "$as_me: error: foomatic enabled and foomatic-rip not found Download foomatic-filters from: http://www.linuxprinting.org/download/foomatic " >&2;} { (exit 1); exit 1; }; }; fi echo "$as_me:7750: checking default page size" >&5 echo $ECHO_N "checking default page size... $ECHO_C" >&6 # Check whether --with-pagesize or --without-pagesize was given. if test "${with_pagesize+set}" = set; then withval="$with_pagesize" PAGE_SIZE=$withval else PAGE_SIZE=letter fi; echo "$as_me:7760: result: $PAGE_SIZE" >&5 echo "${ECHO_T}$PAGE_SIZE" >&6 echo "$as_me:7765: checking filter directory" >&5 echo $ECHO_N "checking filter directory... $ECHO_C" >&6 # Check whether --with-filterdir or --without-filterdir was given. if test "${with_filterdir+set}" = set; then withval="$with_filterdir" FILTER_DIR=$withval else FILTER_DIR=\${libexecdir}/filters fi; echo "$as_me:7775: result: $FILTER_DIR" >&5 echo "${ECHO_T}$FILTER_DIR" >&6 echo "$as_me:7779: checking font directory" >&5 echo $ECHO_N "checking font directory... $ECHO_C" >&6 # Check whether --with-fontdir or --without-fontdir was given. if test "${with_fontdir+set}" = set; then withval="$with_fontdir" FONT_DIR=$withval else FONT_DIR=\${libexecdir}/filters/fonts fi; echo "$as_me:7789: result: $FONT_DIR" >&5 echo "${ECHO_T}$FONT_DIR" >&6 echo "$as_me:7793: checking strip binaries" >&5 echo $ECHO_N "checking strip binaries... $ECHO_C" >&6 # Check whether --enable-strip or --disable-strip was given. if test "${enable_strip+set}" = set; then enableval="$enable_strip" if test "$enableval" = "yes" ; then v=yes; STRIP_OPTION=" -s "; else v=no; STRIP_OPTION=""; fi else v=yes; STRIP_OPTION=" -s "; fi; echo "$as_me:7811: result: $v" >&5 echo "${ECHO_T}$v" >&6 echo "$as_me:7816: checking GhostScript check" >&5 echo $ECHO_N "checking GhostScript check... $ECHO_C" >&6 # Check whether --enable-gscheck or --disable-gscheck was given. if test "${enable_gscheck+set}" = set; then enableval="$enable_gscheck" if test "$enableval" = "yes" ; then GSCHECK=yes; else GSCHECK=no; fi else GSCHECK=no; fi; echo "$as_me:7833: result: $GSCHECK" >&5 echo "${ECHO_T}$GSCHECK" >&6 if test "$GS" != "GHOSTSCRIPT_NOT_FOUND" -a "$GSCHECK" != "no" ; then echo "$as_me:7838: checking GhostScript -dSAFER and -dPARANOIDSAFER option" >&5 echo $ECHO_N "checking GhostScript -dSAFER and -dPARANOIDSAFER option... $ECHO_C" >&6 if $GS -q -dBATCH -dNOPAUSE -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- $srcdir/gsQuit ; then if $GS -q -dBATCH -dNOPAUSE -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- $srcdir/gsTest 1>/dev/null 2>/dev/null ; then { echo "$as_me:7842: WARNING: WARNING: '($GS) -dSAFER -dPARANOIDSAFER ' allows files to be read Please read README.GhostScriptSecurityProblem and fix your distribution of GhostScript OR use: configure --disable-gscheck " >&5 echo "$as_me: WARNING: WARNING: '($GS) -dSAFER -dPARANOIDSAFER ' allows files to be read Please read README.GhostScriptSecurityProblem and fix your distribution of GhostScript OR use: configure --disable-gscheck " >&2;} echo "$as_me:7856: result: GhostScript security hole found!" >&5 echo "${ECHO_T}GhostScript security hole found!" >&6 exit 1 else echo "$as_me:7860: result: no GhostScript security hole found" >&5 echo "${ECHO_T}no GhostScript security hole found" >&6 fi else echo "$as_me:7864: result: Error with: $GS -q -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- " >&5 echo "${ECHO_T}Error with: $GS -q -dSAFER -dPARANOIDSAFER -sDEVICE=nullpage -sOutputFile=- " >&6 fi fi echo "$as_me:7870: checking how to redirect GhostScript output to fd 3" >&5 echo $ECHO_N "checking how to redirect GhostScript output to fd 3... $ECHO_C" >&6 if test "$DEVFD3" = "" ; then v=`( if test -d /dev/fd ; then echo 3 >/dev/fd/3; fi) 2>/dev/null 3>&1 1>&2` if test "$v" != "" ; then DEVFD3=/dev/fd/3 FD3=/dev/fd/3 else DEVFD3="|$CAT >\&3" FD3="|$CAT >&3" fi rm -f gs_out gs -q -dBATCH -dNOPAUSE -dSAFER -dPARANOIDSAFER -sDEVICE=laserjet "-sOutputFile=${FD3}" ${srcdir}/gsPrint 3>gs_out if test "!" -s gs_out ; then { { echo "$as_me:7884: error: \"ERROR - gs cannot handle -sOutputFile=$OUT\" " >&5 echo "$as_me: error: \"ERROR - gs cannot handle -sOutputFile=$OUT\" " >&2;} { (exit 1); exit 1; }; }; fi fi echo "$as_me:7889: result: $DEVFD3" >&5 echo "${ECHO_T}$DEVFD3" >&6 ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:7902: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:7918: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:7928: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:7931: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:7940: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:7956: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:7966: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:7969: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:7982: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:7998: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:8008: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:8011: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:8020: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:8036: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:8046: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:8049: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:8062: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:8083: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift set dummy "$as_dir/$ac_word" ${1+"$@"} shift ac_cv_prog_CC="$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:8107: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:8110: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:8121: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:8137: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:8147: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:8150: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:8163: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:8179: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:8189: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:8192: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:8205: error: no acceptable C compiler found in \$PATH" >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:8210:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:8213: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:8216: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:8218: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:8221: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:8223: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:8226: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:8229: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 8235 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:8256: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:8259: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:8262: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:8265: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:8277: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:8283: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 8289 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:8307: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:8310: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:8313: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:8316: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:8326: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:8353: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:8356: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:8359: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:8362: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line 8374 "configure" #include "confdefs.h" #include $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:8393: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:8396: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:8399: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:8402: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line 8412 "configure" #include "confdefs.h" $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:8430: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:8433: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:8436: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:8439: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:8471: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line 8492 "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:8497: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:8503: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line 8526 "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:8530: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:8536: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:8573: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line 8583 "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:8588: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:8594: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line 8617 "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:8621: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:8627: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:8655: error: C preprocessor \"$CPP\" fails sanity check" >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "$ac_cv_c_compiler_gnu" = yes; then cat >conftest.c </dev/null 2>&1; then gcc -v { echo "$as_me:8675: WARNING: WARNING: gcc -O (version 2.4.5 and below) produces incorrect code for lpd.c and other large routines. " >&5 echo "$as_me: WARNING: WARNING: gcc -O (version 2.4.5 and below) produces incorrect code for lpd.c and other large routines. " >&2;} fi; fi; LDCC="$CC" echo "$as_me:8687: result: using CPPFLAGS=\"${CPPFLAGS}\"" >&5 echo "${ECHO_T}using CPPFLAGS=\"${CPPFLAGS}\"" >&6 release=`uname -r 2>/dev/null; exit 0`; version=`echo $target_os | sed -e 's/[^0-9][^0-9]*//' -e 's/\./X/' -e 's/\.//g' -e 's/X/./' \ | awk '{ v=$1+0; if( v > 0 ){ while( v < 100 || int(v) != v ){v = v * 10;}}; print v; }' `; if test "$version" -eq 0 ; then version=`echo $release | sed -e 's/-.*//' -e 's/\.//g' \ | awk '{ v=$1+0; if( v > 0 ){ while( v < 100 || int(v) != v ){v = v * 10;}}; print v; }' `; fi osword=`echo $target_os | sed -e 's/[0-9].*//'`; export osword echo "$as_me:8699: result: Target is $target, arch $target_cpu, os $target_os, release $release, version $version" >&5 echo "${ECHO_T}Target is $target, arch $target_cpu, os $target_os, release $release, version $version" >&6 cat >>confdefs.h <<_ACEOF #define ARCHITECTURE "$target_cpu" _ACEOF cat >>confdefs.h <<_ACEOF #define OSNAME "$osword" _ACEOF cat >>confdefs.h <<_ACEOF #define OSVERSION $version _ACEOF ARCHITECTURE=$target_cpu OSNAME=$osword OSVERSION=$version echo "$as_me:8727: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF #line 8735 "configure" #include "confdefs.h" #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:8790: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:8793: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:8796: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:8799: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:8816: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:8819: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac echo "$as_me:8824: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 8830 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++ccp; p = (char**) ccp; ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:8894: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:8897: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:8900: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:8903: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:8913: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF #define const _ACEOF fi echo "$as_me:8923: checking for inline" >&5 echo $ECHO_N "checking for inline... $ECHO_C" >&6 if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat >conftest.$ac_ext <<_ACEOF #line 8931 "configure" #include "confdefs.h" #ifndef __cplusplus static $ac_kw int static_foo () {return 0; } $ac_kw int foo () {return 0; } #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:8940: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:8943: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:8946: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:8949: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_inline=$ac_kw; break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done fi echo "$as_me:8960: result: $ac_cv_c_inline" >&5 echo "${ECHO_T}$ac_cv_c_inline" >&6 case $ac_cv_c_inline in inline | yes) ;; no) cat >>confdefs.h <<\_ACEOF #define inline _ACEOF ;; *) cat >>confdefs.h <<_ACEOF #define inline $ac_cv_c_inline _ACEOF ;; esac echo "$as_me:8976: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 8982 "configure" #include "confdefs.h" #include #include #include #include _ACEOF if { (eval echo "$as_me:8990: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:8996: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line 9018 "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line 9036 "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF #line 9057 "configure" #include "confdefs.h" #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:9083: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:9086: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:9088: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9091: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:9105: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` echo "$as_me:9123: checking for $ac_hdr that defines DIR" >&5 echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 9129 "configure" #include "confdefs.h" #include #include <$ac_hdr> #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:9150: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:9153: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:9156: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9159: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:9169: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo "$as_me:9182: checking for library containing opendir" >&5 echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 if test "${ac_cv_search_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF #line 9190 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { opendir (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:9215: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:9218: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:9221: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9224: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_opendir="none required" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_opendir" = no; then for ac_lib in dir; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF #line 9236 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { opendir (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:9261: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:9264: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:9267: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9270: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_opendir="-l$ac_lib" break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext done fi LIBS=$ac_func_search_save_LIBS fi echo "$as_me:9283: result: $ac_cv_search_opendir" >&5 echo "${ECHO_T}$ac_cv_search_opendir" >&6 if test "$ac_cv_search_opendir" != no; then test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" fi else echo "$as_me:9291: checking for library containing opendir" >&5 echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 if test "${ac_cv_search_opendir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF #line 9299 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { opendir (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:9324: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:9327: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:9330: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9333: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_opendir="none required" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_opendir" = no; then for ac_lib in x; do LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF #line 9345 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { opendir (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:9370: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:9373: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:9376: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9379: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_search_opendir="-l$ac_lib" break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext done fi LIBS=$ac_func_search_save_LIBS fi echo "$as_me:9392: result: $ac_cv_search_opendir" >&5 echo "${ECHO_T}$ac_cv_search_opendir" >&6 if test "$ac_cv_search_opendir" != no; then test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" fi fi echo "$as_me:9401: checking for sys/wait.h that is POSIX.1 compatible" >&5 echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6 if test "${ac_cv_header_sys_wait_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 9407 "configure" #include "confdefs.h" #include #include #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int s; wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:9435: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:9438: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:9441: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9444: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_sys_wait_h=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_sys_wait_h=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:9454: result: $ac_cv_header_sys_wait_h" >&5 echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 if test $ac_cv_header_sys_wait_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_WAIT_H 1 _ACEOF fi echo "$as_me:9464: checking whether time.h and sys/time.h may both be included" >&5 echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 if test "${ac_cv_header_time+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 9470 "configure" #include "confdefs.h" #include #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:9492: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:9495: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:9498: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9501: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_time=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_time=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:9511: result: $ac_cv_header_time" >&5 echo "${ECHO_T}$ac_cv_header_time" >&6 if test $ac_cv_header_time = yes; then cat >>confdefs.h <<\_ACEOF #define TIME_WITH_SYS_TIME 1 _ACEOF fi echo "$as_me:9522: checking return type of signal handlers" >&5 echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 if test "${ac_cv_type_signal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 9528 "configure" #include "confdefs.h" #include #include #ifdef signal # undef signal #endif #ifdef __cplusplus extern "C" void (*signal (int, void (*)(int)))(int); #else void (*signal ()) (); #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int i; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:9556: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:9559: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:9562: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9565: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_signal=void else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_signal=int fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:9575: result: $ac_cv_type_signal" >&5 echo "${ECHO_T}$ac_cv_type_signal" >&6 cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF echo "$as_me:9583: checking for uid_t in sys/types.h" >&5 echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6 if test "${ac_cv_type_uid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 9589 "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "uid_t" >/dev/null 2>&1; then ac_cv_type_uid_t=yes else ac_cv_type_uid_t=no fi rm -f conftest* fi echo "$as_me:9603: result: $ac_cv_type_uid_t" >&5 echo "${ECHO_T}$ac_cv_type_uid_t" >&6 if test $ac_cv_type_uid_t = no; then cat >>confdefs.h <<\_ACEOF #define uid_t int _ACEOF cat >>confdefs.h <<\_ACEOF #define gid_t int _ACEOF fi echo "$as_me:9618: checking for size_t" >&5 echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 9624 "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((size_t *) 0) return 0; if (sizeof (size_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:9645: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:9648: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:9651: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9654: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_size_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:9664: result: $ac_cv_type_size_t" >&5 echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned _ACEOF fi echo "$as_me:9676: checking for mode_t" >&5 echo $ECHO_N "checking for mode_t... $ECHO_C" >&6 if test "${ac_cv_type_mode_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 9682 "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((mode_t *) 0) return 0; if (sizeof (mode_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:9703: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:9706: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:9709: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9712: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_mode_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_mode_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:9722: result: $ac_cv_type_mode_t" >&5 echo "${ECHO_T}$ac_cv_type_mode_t" >&6 if test $ac_cv_type_mode_t = yes; then : else cat >>confdefs.h <<_ACEOF #define mode_t int _ACEOF fi echo "$as_me:9734: checking for off_t" >&5 echo $ECHO_N "checking for off_t... $ECHO_C" >&6 if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 9740 "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((off_t *) 0) return 0; if (sizeof (off_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:9761: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:9764: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:9767: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9770: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_off_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_off_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:9780: result: $ac_cv_type_off_t" >&5 echo "${ECHO_T}$ac_cv_type_off_t" >&6 if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF #define off_t long _ACEOF fi echo "$as_me:9792: checking for pid_t" >&5 echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 if test "${ac_cv_type_pid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 9798 "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((pid_t *) 0) return 0; if (sizeof (pid_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:9819: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:9822: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:9825: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9828: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_pid_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_pid_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:9838: result: $ac_cv_type_pid_t" >&5 echo "${ECHO_T}$ac_cv_type_pid_t" >&6 if test $ac_cv_type_pid_t = yes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi echo "$as_me:9851: checking checking for long long" >&5 echo $ECHO_N "checking checking for long long... $ECHO_C" >&6 if test "${ac_cv_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 9858 "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",sizeof(long long)); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:9879: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:9882: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:9885: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9888: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_long_long=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_long_long=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:9899: result: $ac_cv_long_long" >&5 echo "${ECHO_T}$ac_cv_long_long" >&6 if test $ac_cv_long_long = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LONG_LONG 1 _ACEOF fi echo "$as_me:9909: checking checking for long double" >&5 echo $ECHO_N "checking checking for long double... $ECHO_C" >&6 if test "${ac_cv_long_double+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 9916 "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",sizeof(long double)); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:9937: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:9940: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:9943: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:9946: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_long_double=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_long_double=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:9957: result: $ac_cv_long_double" >&5 echo "${ECHO_T}$ac_cv_long_double" >&6 if test $ac_cv_long_double = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LONG_DOUBLE 1 _ACEOF fi echo "$as_me:9967: checking checking for quad_t" >&5 echo $ECHO_N "checking checking for quad_t... $ECHO_C" >&6 if test "${ac_cv_quad_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 9974 "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",sizeof(quad_t)); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:9995: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:9998: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:10001: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:10004: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_quad_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_quad_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:10015: result: $ac_cv_quad_t" >&5 echo "${ECHO_T}$ac_cv_quad_t" >&6 if test $ac_cv_quad_t = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_QUAD_T 1 _ACEOF fi checklibs= case $target_os in *linux* ) no_resolv_lib=yes; ;; *bsdi* ) LDCC=shlicc echo "$as_me:10033: checking for setproctitle in -lutil" >&5 echo $ECHO_N "checking for setproctitle in -lutil... $ECHO_C" >&6 if test "${ac_cv_lib_util_setproctitle+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lutil $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 10041 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char setproctitle (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { setproctitle (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:10066: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:10069: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:10072: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:10075: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_util_setproctitle=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_util_setproctitle=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:10086: result: $ac_cv_lib_util_setproctitle" >&5 echo "${ECHO_T}$ac_cv_lib_util_setproctitle" >&6 if test $ac_cv_lib_util_setproctitle = yes; then LIBS="-lutil $LIBS" fi ;; *bsd* ) echo "$as_me:10094: checking for setproctitle in -lutil" >&5 echo $ECHO_N "checking for setproctitle in -lutil... $ECHO_C" >&6 if test "${ac_cv_lib_util_setproctitle+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lutil $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 10102 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char setproctitle (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { setproctitle (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:10127: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:10130: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:10133: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:10136: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_util_setproctitle=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_util_setproctitle=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:10147: result: $ac_cv_lib_util_setproctitle" >&5 echo "${ECHO_T}$ac_cv_lib_util_setproctitle" >&6 if test $ac_cv_lib_util_setproctitle = yes; then LIBS="-lutil $LIBS" fi ;; *unicos* ) checklibs=no ;; *irix6* ) checklibs=no cat >>confdefs.h <<_ACEOF #define IRIX $version _ACEOF ;; *irix5* ) checklibs=no cat >>confdefs.h <<\_ACEOF #define HAVE_BROKEN_TIOCEXCL 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define SVR4 1 _ACEOF cat >>confdefs.h <<_ACEOF #define IRIX $version _ACEOF ;; *irix* ) checklibs=no cat >>confdefs.h <<_ACEOF #define IRIX $version _ACEOF ;; *solaris* ) cat >>confdefs.h <<\_ACEOF #define SVR4 1 _ACEOF cat >>confdefs.h <<_ACEOF #define SOLARIS $version _ACEOF no_resolv_lib=yes; ;; *hpux* ) cat >>confdefs.h <<\_ACEOF #define _HPUX_SOURCE 1 _ACEOF CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE=1" CFLAGS="$CFLAGS -D_HPUX_SOURCE=1" cat >>confdefs.h <<_ACEOF #define HPUX $version _ACEOF ;; *sunos* ) cat >>confdefs.h <<_ACEOF #define SUNOS $version _ACEOF ;; osf* ) cat >>confdefs.h <<_ACEOF #define DECALPHA $version _ACEOF if test "$ac_cv_c_compiler_gnu" != yes; then CPPFLAGS="$CPPFLAGS -std"; CFLAGS="$CFLAGS -std"; else CPPFLAGS="$CPPFLAGS -DAES_SOURCE" CFLAGS="$CFLAGS -DAES_SOURCE" fi ;; *mips-sni* ) ;; esac for ac_header in a_out.h aouthdr.h ar.h arpa/inet.h arpa/nameser.h assert.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:10254: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:10259: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:10263: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 10266 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:10272: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:10275: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:10278: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:10281: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:10290: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:10294: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 10297 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:10301: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:10307: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:10325: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:10331: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:10333: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:10336: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:10338: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:10340: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:10343: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:10350: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in com_err.h compat.h ctype.h ctypes.h dirent.h errno.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:10373: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:10378: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:10382: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 10385 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:10391: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:10394: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:10397: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:10400: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:10409: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:10413: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 10416 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:10420: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:10426: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:10444: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:10450: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:10452: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:10455: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:10457: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:10459: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:10462: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:10469: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in exechdr.h fcntl.h filehdr.h grp.h limits.h locale.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:10492: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:10497: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:10501: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 10504 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:10510: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:10513: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:10516: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:10519: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:10528: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:10532: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 10535 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:10539: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:10545: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:10563: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:10569: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:10571: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:10574: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:10576: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:10578: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:10581: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:10588: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in machine/vmparam.h malloc.h memory.h ndir.h netdb.h netinet/in.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:10611: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:10616: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:10620: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 10623 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:10629: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:10632: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:10635: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:10638: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:10647: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:10651: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 10654 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:10658: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:10664: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:10682: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:10688: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:10690: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:10693: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:10695: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:10697: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:10700: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:10707: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in nlist.h pwd.h reloc.h resolv.h select.h setjmp.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:10730: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:10735: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:10739: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 10742 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:10748: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:10751: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:10754: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:10757: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:10766: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:10770: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 10773 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:10777: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:10783: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:10801: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:10807: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:10809: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:10812: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:10814: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:10816: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:10819: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:10826: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sgs.h sgtty.h signal.h stab.h stdarg.h stdio.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:10849: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:10854: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:10858: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 10861 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:10867: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:10870: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:10873: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:10876: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:10885: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:10889: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 10892 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:10896: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:10902: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:10920: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:10926: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:10928: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:10931: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:10933: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:10935: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:10938: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:10945: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in stdlib.h string.h strings.h sys/dir.h sys/exec.h sys/exechdr.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:10968: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:10973: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:10977: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 10980 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:10986: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:10989: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:10992: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:10995: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:11004: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:11008: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 11011 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:11015: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:11021: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:11039: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:11045: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:11047: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:11050: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:11052: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:11054: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:11057: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:11064: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/fcntl.h sys/file.h sys/ioctl.h sys/loader.h sys/mount.h sys/ndir.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:11087: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:11092: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:11096: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 11099 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:11105: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:11108: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:11111: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:11114: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:11123: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:11127: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 11130 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:11134: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:11140: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:11158: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:11164: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:11166: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:11169: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:11171: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:11173: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:11176: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:11183: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/param.h sys/pstat.h sys/resource.h sys/select.h sys/signal.h sys/socket.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:11206: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:11211: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:11215: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 11218 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:11224: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:11227: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:11230: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:11233: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:11242: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:11246: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 11249 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:11253: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:11259: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:11277: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:11283: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:11285: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:11288: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:11290: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:11292: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:11295: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:11302: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/stat.h sys/statfs.h sys/statvfs.h sys/syslog.h sys/systeminfo.h sys/termio.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:11325: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:11330: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:11334: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 11337 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:11343: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:11346: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:11349: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:11352: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:11361: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:11365: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 11368 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:11372: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:11378: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:11396: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:11402: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:11404: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:11407: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:11409: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:11411: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:11414: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:11421: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/termiox.h sys/time.h sys/ttold.h sys/ttycom.h sys/types.h sys/utsname.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:11444: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:11449: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:11453: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 11456 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:11462: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:11465: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:11468: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:11471: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:11480: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:11484: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 11487 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:11491: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:11497: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:11515: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:11521: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:11523: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:11526: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:11528: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:11530: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:11533: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:11540: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/vfs.h sys/wait.h syslog.h term.h termcap.h termio.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:11563: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:11568: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:11572: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 11575 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:11581: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:11584: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:11587: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:11590: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:11599: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:11603: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 11606 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:11610: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:11616: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:11634: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:11640: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:11642: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:11645: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:11647: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:11649: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:11652: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:11659: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in termios.h time.h unistd.h utsname.h varargs.h vmparam.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:11682: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:11687: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:11691: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 11694 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:11700: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:11703: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:11706: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:11709: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:11718: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:11722: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 11725 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:11729: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:11735: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:11753: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:11759: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:11761: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:11764: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:11766: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:11768: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:11771: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:11778: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test -z "$checklibs"; then echo "$as_me:11795: checking for getpwent in -lposix" >&5 echo $ECHO_N "checking for getpwent in -lposix... $ECHO_C" >&6 if test "${ac_cv_lib_posix_getpwent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 11803 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char getpwent (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { getpwent (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:11828: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:11831: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:11834: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:11837: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_posix_getpwent=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_posix_getpwent=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:11848: result: $ac_cv_lib_posix_getpwent" >&5 echo "${ECHO_T}$ac_cv_lib_posix_getpwent" >&6 if test $ac_cv_lib_posix_getpwent = yes; then LIBS="$LIBS -lposix" fi echo "$as_me:11855: checking for socket in -lsocket_s" >&5 echo $ECHO_N "checking for socket in -lsocket_s... $ECHO_C" >&6 if test "${ac_cv_lib_socket_s_socket+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket_s -lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 11863 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char socket (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { socket (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:11888: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:11891: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:11894: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:11897: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_s_socket=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_socket_s_socket=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:11908: result: $ac_cv_lib_socket_s_socket" >&5 echo "${ECHO_T}$ac_cv_lib_socket_s_socket" >&6 if test $ac_cv_lib_socket_s_socket = yes; then LIBS="$LIBS -lsocket_s"; have_socket=1 fi if test -z "$have_socket"; then echo "$as_me:11915: checking for socket in -lsocket" >&5 echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_socket+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket -lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 11923 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char socket (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { socket (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:11948: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:11951: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:11954: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:11957: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_socket=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_socket_socket=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:11968: result: $ac_cv_lib_socket_socket" >&5 echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 if test $ac_cv_lib_socket_socket = yes; then LIBS="$LIBS -lsocket" fi fi cat >conftest.$ac_ext <<_ACEOF #line 11977 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int gethostbyaddr; return (gethostbyaddr); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:11995: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:11998: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12001: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12004: \$? = $ac_status" >&5 (exit $ac_status); }; }; then have_gethost=1 else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test -z "$have_gethost" ; then h="you need additional libs for gethostbyaddr"; else h="no additional libs for gethostbyaddr"; fi echo "$as_me:12017: result: $h" >&5 echo "${ECHO_T}$h" >&6 if test -z "$have_gethost" ; then echo "$as_me:12020: checking for gethostbyaddr in -lnsl_s" >&5 echo $ECHO_N "checking for gethostbyaddr in -lnsl_s... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_s_gethostbyaddr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl_s $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 12028 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyaddr (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostbyaddr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:12053: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:12056: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12059: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12062: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_s_gethostbyaddr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_nsl_s_gethostbyaddr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:12073: result: $ac_cv_lib_nsl_s_gethostbyaddr" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_s_gethostbyaddr" >&6 if test $ac_cv_lib_nsl_s_gethostbyaddr = yes; then LIBS="$LIBS -lnsl_s"; have_gethost=1 fi fi if test -z "$have_gethost"; then echo "$as_me:12081: checking for gethostbyaddr in -lnsl" >&5 echo $ECHO_N "checking for gethostbyaddr in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_gethostbyaddr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 12089 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyaddr (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostbyaddr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:12114: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:12117: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12120: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12123: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyaddr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyaddr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:12134: result: $ac_cv_lib_nsl_gethostbyaddr" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyaddr" >&6 if test $ac_cv_lib_nsl_gethostbyaddr = yes; then LIBS="$LIBS -lnsl"; have_gethost=1 fi fi if test -z "$have_gethost"; then echo "$as_me:12143: checking for gethostbyaddr in -lnet_s" >&5 echo $ECHO_N "checking for gethostbyaddr in -lnet_s... $ECHO_C" >&6 if test "${ac_cv_lib_net_s_gethostbyaddr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnet_s $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 12151 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyaddr (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostbyaddr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:12176: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:12179: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12182: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12185: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_net_s_gethostbyaddr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_net_s_gethostbyaddr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:12196: result: $ac_cv_lib_net_s_gethostbyaddr" >&5 echo "${ECHO_T}$ac_cv_lib_net_s_gethostbyaddr" >&6 if test $ac_cv_lib_net_s_gethostbyaddr = yes; then LIBS="$LIBS -lnet_s"; have_gethost=1 fi fi if test -z "$have_gethost"; then echo "$as_me:12204: checking for gethostbyaddr in -lnet" >&5 echo $ECHO_N "checking for gethostbyaddr in -lnet... $ECHO_C" >&6 if test "${ac_cv_lib_net_gethostbyaddr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnet $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 12212 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyaddr (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostbyaddr (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:12237: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:12240: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12243: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12246: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_net_gethostbyaddr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_net_gethostbyaddr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:12257: result: $ac_cv_lib_net_gethostbyaddr" >&5 echo "${ECHO_T}$ac_cv_lib_net_gethostbyaddr" >&6 if test $ac_cv_lib_net_gethostbyaddr = yes; then LIBS="$LIBS -lnet"; have_gethost=1 fi fi if test -z "$no_resolv_lib"; then echo "$as_me:12266: checking for inet_ntop" >&5 echo $ECHO_N "checking for inet_ntop... $ECHO_C" >&6 if test "${ac_cv_func_inet_ntop+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 12272 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char inet_ntop (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char inet_ntop (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_inet_ntop) || defined (__stub___inet_ntop) choke me #else f = inet_ntop; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:12309: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:12312: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12315: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12318: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_inet_ntop=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_inet_ntop=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:12328: result: $ac_cv_func_inet_ntop" >&5 echo "${ECHO_T}$ac_cv_func_inet_ntop" >&6 if test $ac_cv_func_inet_ntop = yes; then name2=yes fi if test -z "$name2" ; then echo "$as_me:12335: checking for inet_ntop in -lresolv" >&5 echo $ECHO_N "checking for inet_ntop in -lresolv... $ECHO_C" >&6 if test "${ac_cv_lib_resolv_inet_ntop+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lresolv $LIBS" cat >conftest.$ac_ext <<_ACEOF #line 12343 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char inet_ntop (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { inet_ntop (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:12368: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:12371: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12374: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12377: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_resolv_inet_ntop=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_resolv_inet_ntop=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:12388: result: $ac_cv_lib_resolv_inet_ntop" >&5 echo "${ECHO_T}$ac_cv_lib_resolv_inet_ntop" >&6 if test $ac_cv_lib_resolv_inet_ntop = yes; then LIBS="$LIBS -lresolv";name2=yes fi fi; fi fi for ac_func in _res cfsetispeed fcntl flock gethostbyname2 getdtablesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:12407: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 12413 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:12450: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:12453: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12456: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12459: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:12469: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in gethostname getrlimit inet_aton inet_ntop inet_pton do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:12487: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 12493 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:12530: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:12533: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12536: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12539: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:12549: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in innetgr killpg lockf mkstemp do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:12566: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 12572 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:12609: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:12612: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12615: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12618: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:12628: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in mktemp openlog putenv random rand setenv seteuid setruid setlinebuf setlocale setpgid setproctitle do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:12653: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 12659 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:12696: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:12699: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12702: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12705: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:12715: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in setresuid setreuid setsid setvbuf sigaction do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:12733: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 12739 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:12776: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:12779: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12782: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12785: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:12795: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in sigprocmask siglongjmp socketpair strcasecmp do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:12812: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 12818 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:12855: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:12858: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12861: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12864: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:12874: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in strchr strdup strerror strncasecmp sysconf sysinfo do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:12893: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 12899 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:12936: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:12939: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:12942: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:12945: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:12955: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in tcdrain tcflush tcsetattr uname unsetenv wait3 waitpid do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:12975: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 12981 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:13018: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:13021: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:13024: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:13027: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:13037: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if test ! "$ac_cv_func_setreuid" = yes -a ! "$ac_cv_func_seteuid" = yes -a ! "$ac_cv_func_setresuid" = yes; then { echo "$as_me:13049: WARNING: WARNING: missing setreuid(), seteuid(), and setresuid() " >&5 echo "$as_me: WARNING: WARNING: missing setreuid(), seteuid(), and setresuid() " >&2;} fi for ac_header in unistd.h vfork.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:13059: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:13064: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:13068: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 13071 "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:13077: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:13080: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:13083: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:13086: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:13095: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:13099: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line 13102 "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:13106: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:13112: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:13130: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:13136: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:13138: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:13141: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:13143: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:13145: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:13148: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:13155: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in fork vfork do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:13173: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 13179 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:13216: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:13219: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:13222: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:13225: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:13235: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ac_cv_func_fork_works=$ac_cv_func_fork if test "x$ac_cv_func_fork" = xyes; then echo "$as_me:13247: checking for working fork" >&5 echo $ECHO_N "checking for working fork... $ECHO_C" >&6 if test "${ac_cv_func_fork_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_fork_works=cross else cat >conftest.$ac_ext <<_ACEOF /* By Ruediger Kuhlmann. */ #include #if HAVE_UNISTD_H # include #endif /* Some systems only have a dummy stub for fork() */ int main () { if (fork() < 0) exit (1); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:13270: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:13273: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:13275: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:13278: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_fork_works=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_fork_works=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:13291: result: $ac_cv_func_fork_works" >&5 echo "${ECHO_T}$ac_cv_func_fork_works" >&6 fi if test "x$ac_cv_func_fork_works" = xcross; then case $host in *-*-amigaos* | *-*-msdosdjgpp*) # Override, as these systems have only a dummy fork() stub ac_cv_func_fork_works=no ;; *) ac_cv_func_fork_works=yes ;; esac { echo "$as_me:13305: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} fi ac_cv_func_vfork_works=$ac_cv_func_vfork if test "x$ac_cv_func_vfork" = xyes; then echo "$as_me:13310: checking for working vfork" >&5 echo $ECHO_N "checking for working vfork... $ECHO_C" >&6 if test "${ac_cv_func_vfork_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_func_vfork_works=cross else cat >conftest.$ac_ext <<_ACEOF #line 13319 "configure" #include "confdefs.h" /* Thanks to Paul Eggert for this test. */ #include #include #include #if HAVE_UNISTD_H # include #endif #if HAVE_VFORK_H # include #endif /* On some sparc systems, changes by the child to local and incoming argument registers are propagated back to the parent. The compiler is told about this with #include , but some compilers (e.g. gcc -O) don't grok . Test for this by using a static variable whose address is put into a register that is clobbered by the vfork. */ static #ifdef __cplusplus sparc_address_test (int arg) # else sparc_address_test (arg) int arg; #endif { static pid_t child; if (!child) { child = vfork (); if (child < 0) { perror ("vfork"); _exit(2); } if (!child) { arg = getpid(); write(-1, "", 0); _exit (arg); } } } int main () { pid_t parent = getpid (); pid_t child; sparc_address_test (); child = vfork (); if (child == 0) { /* Here is another test for sparc vfork register problems. This test uses lots of local variables, at least as many local variables as main has allocated so far including compiler temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should reuse the register of parent for one of the local variables, since it will think that parent can't possibly be used any more in this routine. Assigning to the local variable will thus munge parent in the parent process. */ pid_t p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); /* Convince the compiler that p..p7 are live; otherwise, it might use the same hardware register for all 8 local variables. */ if (p != p1 || p != p2 || p != p3 || p != p4 || p != p5 || p != p6 || p != p7) _exit(1); /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent from child file descriptors. If the child closes a descriptor before it execs or exits, this munges the parent's descriptor as well. Test for this by closing stdout in the child. */ _exit(close(fileno(stdout)) != 0); } else { int status; struct stat st; while (wait(&status) != child) ; exit( /* Was there some problem with vforking? */ child < 0 /* Did the child fail? (This shouldn't happen.) */ || status /* Did the vfork/compiler bug occur? */ || parent != getpid() /* Did the file descriptor bug occur? */ || fstat(fileno(stdout), &st) != 0 ); } } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:13416: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:13419: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:13421: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:13424: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_vfork_works=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_vfork_works=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:13437: result: $ac_cv_func_vfork_works" >&5 echo "${ECHO_T}$ac_cv_func_vfork_works" >&6 fi; if test "x$ac_cv_func_fork_works" = xcross; then ac_cv_func_vfork_works=ac_cv_func_vfork { echo "$as_me:13443: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} fi if test "x$ac_cv_func_vfork_works" = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_WORKING_VFORK 1 _ACEOF else cat >>confdefs.h <<\_ACEOF #define vfork fork _ACEOF fi if test "x$ac_cv_func_fork_works" = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_WORKING_FORK 1 _ACEOF fi for ac_func in vprintf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:13472: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 13478 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else f = $ac_func; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:13515: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:13518: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:13521: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:13524: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:13534: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF echo "$as_me:13541: checking for _doprnt" >&5 echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 if test "${ac_cv_func__doprnt+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 13547 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char _doprnt (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char _doprnt (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub__doprnt) || defined (__stub____doprnt) choke me #else f = _doprnt; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:13584: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:13587: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:13590: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:13593: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func__doprnt=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func__doprnt=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:13603: result: $ac_cv_func__doprnt" >&5 echo "${ECHO_T}$ac_cv_func__doprnt" >&6 if test $ac_cv_func__doprnt = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_DOPRNT 1 _ACEOF fi fi done echo "$as_me:13620: checking how to manipulate tty attributes" >&5 echo $ECHO_N "checking how to manipulate tty attributes... $ECHO_C" >&6 if test "${ac_cv_struct_term+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_header_termios_h" = yes; then ac_cv_struct_term=termios fi if test "$ac_cv_header_sys_termios_h" = yes; then ac_cv_struct_term=termios fi if test -z "$ac_cv_struct_term" ; then cat >conftest.$ac_ext <<_ACEOF #line 13636 "configure" #include "confdefs.h" #ifdef HAVE_TERMIO_H #include #endif #ifdef HAVE_SYS_TERMIO_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct termio t;t.c_iflag = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:13660: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:13663: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:13666: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:13669: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_struct_term=termio else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi if test -z "$ac_cv_struct_term" ; then cat >conftest.$ac_ext <<_ACEOF #line 13681 "configure" #include "confdefs.h" #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct sgttyb s;s.sg_flags = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:13700: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:13703: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:13706: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:13709: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_struct_term=sgttyb else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi if test -z "$ac_cv_struct_term" ; then ac_cv_struct_term=UNDEFINED fi fi echo "$as_me:13723: result: $ac_cv_struct_term" >&5 echo "${ECHO_T}$ac_cv_struct_term" >&6 if test "$ac_cv_struct_term" = "sgttyb"; then cat >>confdefs.h <<\_ACEOF #define USE_SGTTYB 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define USE_STTY SGTTYB _ACEOF fi if test "$ac_cv_struct_term" = "termio"; then cat >>confdefs.h <<\_ACEOF #define USE_TERMIO 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define USE_STTY TERMIO _ACEOF fi if test "$ac_cv_struct_term" = "termios"; then cat >>confdefs.h <<\_ACEOF #define USE_TERMIOS 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define USE_STTY TERMIOS _ACEOF if test "$ac_cv_header_sys_termiox_h" = yes; then cat >>confdefs.h <<\_ACEOF #define USE_TERMIOX 1 _ACEOF fi fi echo "$as_me:13770: checking checking for struct exec" >&5 echo $ECHO_N "checking checking for struct exec... $ECHO_C" >&6 if test "${ac_cv_struct_exec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_struct_exec=no if test "$ac_cv_header_a_out_h" != no ; then cat >conftest.$ac_ext <<_ACEOF #line 13779 "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct exec b; b.a_text = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:13799: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:13802: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:13805: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:13808: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_struct_exec=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_struct_exec=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:13820: result: $ac_cv_struct_exec" >&5 echo "${ECHO_T}$ac_cv_struct_exec" >&6 if test "$ac_cv_struct_exec" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_STRUCT_EXEC 1 _ACEOF fi echo "$as_me:13832: checking checking for lseek prototype" >&5 echo $ECHO_N "checking checking for lseek prototype... $ECHO_C" >&6 if test "${ac_cv_lseek_proto+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 13839 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_UNISTD_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { off_t x; x = lseek(0,"test",SEEK_SET); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:13867: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:13870: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:13873: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:13876: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lseek_proto=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lseek_proto=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:13887: result: $ac_cv_lseek_proto" >&5 echo "${ECHO_T}$ac_cv_lseek_proto" >&6 if test "$ac_cv_lseek_proto" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LSEEK_PROTO 1 _ACEOF fi echo "$as_me:13898: checking how to get filesystem free space" >&5 echo $ECHO_N "checking how to get filesystem free space... $ECHO_C" >&6 if test "${ac_cv_struct_fstype+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else fstype= if test "$ac_cv_func_statvfs" != no ; then #{ cat >conftest.$ac_ext <<_ACEOF #line 13908 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATVFS_H # include #endif #ifdef HAVE_SYS_STATFS_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct statvfs s; statvfs ("/", &s); return(s.f_bavail+s.f_bsize) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:13944: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:13947: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:13950: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:13953: \$? = $ac_status" >&5 (exit $ac_status); }; }; then fstype=statvfs else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi #} if test "$ac_cv_func_statfs" != no ; then #{ if test -z "$fstype" ; then #{ cat >conftest.$ac_ext <<_ACEOF #line 13967 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATFS_H # include #endif #ifdef HAVE_SYS_STATVFS_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct fs_data s; return(s.fd_bfree+s.fd_bsize) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:14003: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:14006: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:14009: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14012: \$? = $ac_status" >&5 (exit $ac_status); }; }; then fstype=Ultrix-statfs else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi #} if test -z "$fstype" ; then #{ cat >conftest.$ac_ext <<_ACEOF #line 14024 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATFS_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_VFS_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct statfs s; return(s.f_bavail+s.f_bsize) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:14056: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:14059: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:14062: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14065: \$? = $ac_status" >&5 (exit $ac_status); }; }; then fstype=statfs else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi # } if test -z "$fstype" ; then # { cat >conftest.$ac_ext <<_ACEOF #line 14077 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef HAVE_SYS_STATFS_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_VFS_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct statfs s; return(s.f_bfree+s.f_bsize) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:14109: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:14112: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:14115: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14118: \$? = $ac_status" >&5 (exit $ac_status); }; }; then fstype=SVR3-statfs else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext fi # } fi # } if test -z "$fstype" ; then echo "cannot find a valid statfs-like structure!" fstype=UNKNOWN fi ac_cv_struct_fstype=$fstype fi echo "$as_me:14138: result: $ac_cv_struct_fstype" >&5 echo "${ECHO_T}$ac_cv_struct_fstype" >&6 if test "$ac_cv_struct_fstype" = SVR3-statfs; then cat >>confdefs.h <<\_ACEOF #define USE_STATFS_TYPE SVR3_STATFS _ACEOF fi if test "$ac_cv_struct_fstype" = Ultrix-statfs; then cat >>confdefs.h <<\_ACEOF #define USE_STATFS_TYPE ULTRIX_STATFS _ACEOF fi if test "$ac_cv_struct_fstype" = statfs; then cat >>confdefs.h <<\_ACEOF #define USE_STATFS_TYPE STATFS _ACEOF fi if test "$ac_cv_struct_fstype" = statvfs; then cat >>confdefs.h <<\_ACEOF #define USE_STATFS_TYPE STATVFS _ACEOF fi echo "$as_me:14171: checking for errno" >&5 echo $ECHO_N "checking for errno... $ECHO_C" >&6 if test "${ac_cv_errno+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14178 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int errno; return (errno); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:14196: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:14199: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:14202: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14205: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_errno=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_errno=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:14216: result: $ac_cv_errno" >&5 echo "${ECHO_T}$ac_cv_errno" >&6 if test "$ac_cv_errno" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ERRNO 1 _ACEOF echo "$as_me:14224: checking for errno declaration" >&5 echo $ECHO_N "checking for errno declaration... $ECHO_C" >&6 if test "${ac_cv_decl_errno+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14231 "configure" #include "confdefs.h" #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_ERRNO_H #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { return(sys_nerr); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:14259: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:14262: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:14265: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14268: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_errno=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_errno=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:14279: result: $ac_cv_decl_errno" >&5 echo "${ECHO_T}$ac_cv_decl_errno" >&6 if test "$ac_cv_decl_errno" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_DECL_ERRNO 1 _ACEOF fi; fi echo "$as_me:14290: checking for sys_nerr" >&5 echo $ECHO_N "checking for sys_nerr... $ECHO_C" >&6 if test "${ac_cv_sys_nerr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14297 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int sys_nerr; return (sys_nerr); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:14315: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:14318: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:14321: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14324: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sys_nerr=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_sys_nerr=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:14335: result: $ac_cv_sys_nerr" >&5 echo "${ECHO_T}$ac_cv_sys_nerr" >&6 if test "$ac_cv_sys_nerr" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_NERR 1 _ACEOF echo "$as_me:14343: checking for sys_nerr declaration" >&5 echo $ECHO_N "checking for sys_nerr declaration... $ECHO_C" >&6 if test "${ac_cv_decl_sys_nerr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14350 "configure" #include "confdefs.h" #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { return(sys_nerr); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:14375: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:14378: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:14381: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14384: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_sys_nerr_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_sys_nerr_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:14395: result: $ac_cv_decl_sys_nerr" >&5 echo "${ECHO_T}$ac_cv_decl_sys_nerr" >&6 if test "$ac_cv_decl_sys_nerr" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_DECL_SYS_NERR 1 _ACEOF fi fi echo "$as_me:14406: checking for sys_errlist array" >&5 echo $ECHO_N "checking for sys_errlist array... $ECHO_C" >&6 if test "${ac_cv_sys_errlist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14412 "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern char *sys_errlist[]; sys_errlist[0]; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:14431: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:14434: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:14437: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14440: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sys_errlist=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_sys_errlist=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:14451: result: $ac_cv_sys_errlist" >&5 echo "${ECHO_T}$ac_cv_sys_errlist" >&6 if test "$ac_cv_sys_errlist" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_ERRLIST 1 _ACEOF echo "$as_me:14459: checking for sys_errlist declaration" >&5 echo $ECHO_N "checking for sys_errlist declaration... $ECHO_C" >&6 if test "${ac_cv_sys_errlist_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14465 "configure" #include "confdefs.h" #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { char *s = sys_errlist[0]; return(*s); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:14491: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:14494: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:14497: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14500: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_sys_errlist=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_sys_errlist=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:14511: result: $ac_cv_sys_errlist_def" >&5 echo "${ECHO_T}$ac_cv_sys_errlist_def" >&6 if test "$ac_cv_decl_sys_errlist" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_DECL_SYS_ERRLIST 1 _ACEOF fi fi echo "$as_me:14523: checking for setproctitle declaration" >&5 echo $ECHO_N "checking for setproctitle declaration... $ECHO_C" >&6 if test "${ac_cv_decl_setproctitle_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14529 "configure" #include "confdefs.h" #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { setproctitle(0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:14558: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:14561: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:14564: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14567: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_setproctitle_def=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_setproctitle_def=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:14578: result: $ac_cv_decl_setproctitle_def" >&5 echo "${ECHO_T}$ac_cv_decl_setproctitle_def" >&6 if test "$ac_cv_decl_setproctitle_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SETPROCTITLE_DEF 1 _ACEOF fi echo "$as_me:14590: checking for sys_siglist declaration" >&5 echo $ECHO_N "checking for sys_siglist declaration... $ECHO_C" >&6 if test "${ac_cv_decl_sys_siglist_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14596 "configure" #include "confdefs.h" #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%s",sys_siglist[0]); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:14623: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:14626: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:14629: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14632: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_sys_siglist_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_sys_siglist_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:14643: result: $ac_cv_decl_sys_siglist_def" >&5 echo "${ECHO_T}$ac_cv_decl_sys_siglist_def" >&6 if test "$ac_cv_decl_sys_siglist_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_SIGLIST_DEF 1 _ACEOF ac_cv_sys_siglist=yes fi echo "$as_me:14654: checking for _sys_siglist declaration" >&5 echo $ECHO_N "checking for _sys_siglist declaration... $ECHO_C" >&6 if test "${ac_cv_decl__sys_siglist_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14660 "configure" #include "confdefs.h" #include #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%s",_sys_siglist[0]); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:14687: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:14690: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:14693: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14696: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl__sys_siglist_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl__sys_siglist_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:14707: result: $ac_cv_decl__sys_siglist_def" >&5 echo "${ECHO_T}$ac_cv_decl__sys_siglist_def" >&6 if test "$ac_cv_decl__sys_siglist_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE__SYS_SIGLIST_DEF 1 _ACEOF ac_cv__sys_siglist=yes fi echo "$as_me:14718: checking for sys_siglist array" >&5 echo $ECHO_N "checking for sys_siglist array... $ECHO_C" >&6 if test "${ac_cv_sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14724 "configure" #include "confdefs.h" #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int sys_siglist; printf("%d",sys_siglist); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:14743: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:14746: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:14749: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14752: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sys_siglist=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_sys_siglist=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:14763: result: $ac_cv_sys_siglist" >&5 echo "${ECHO_T}$ac_cv_sys_siglist" >&6 if test "$ac_cv_sys_siglist" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYS_SIGLIST 1 _ACEOF fi echo "$as_me:14773: checking for _sys_siglist array" >&5 echo $ECHO_N "checking for _sys_siglist array... $ECHO_C" >&6 if test "${ac_cv__sys_siglist+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14779 "configure" #include "confdefs.h" #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { extern int _sys_siglist; printf("%d",_sys_siglist); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:14798: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:14801: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:14804: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14807: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv__sys_siglist=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv__sys_siglist=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:14818: result: $ac_cv__sys_siglist" >&5 echo "${ECHO_T}$ac_cv__sys_siglist" >&6 if test "$ac_cv__sys_siglist" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE__SYS_SIGLIST 1 _ACEOF fi echo "$as_me:14830: checking for getprgp() or getpgrp(0) form" >&5 echo $ECHO_N "checking for getprgp() or getpgrp(0) form... $ECHO_C" >&6 if test "${ac_cv_func_getpgrp_0+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14836 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #ifdef HAVE_UNISTD_H # include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { getpgrp(0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:14861: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:14864: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:14867: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14870: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_getpgrp_0=getpgrp_0 else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_getpgrp_0=getpgrp fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:14881: result: $ac_cv_func_getpgrp_0" >&5 echo "${ECHO_T}$ac_cv_func_getpgrp_0" >&6 if test "$ac_cv_func_getpgrp_0" = getpgrp_0; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETPGRP_0 0 _ACEOF else cat >>confdefs.h <<\_ACEOF #define HAVE_GETPGRP_0 1 _ACEOF fi echo "$as_me:14898: checking for setprgp form" >&5 echo $ECHO_N "checking for setprgp form... $ECHO_C" >&6 if test "${ac_cv_func_setpgrp_0+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14904 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { setpgrp(0,0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:14932: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:14935: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:14938: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:14941: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_setpgrp_0=setpgrp_0 else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_setpgrp_0=setpgrp fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:14952: result: $ac_cv_func_setpgrp_0" >&5 echo "${ECHO_T}$ac_cv_func_setpgrp_0" >&6 if test "$ac_cv_func_setpgrp_0" = setpgrp_0; then cat >>confdefs.h <<\_ACEOF #define HAVE_SETPGRP_0 1 _ACEOF fi echo "$as_me:14963: checking for obsolete union wait compatibility" >&5 echo $ECHO_N "checking for obsolete union wait compatibility... $ECHO_C" >&6 if test "${ac_cv_unionwait+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 14970 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { union wait x;WIFEXITED(x); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:14993: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:14996: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:14999: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:15002: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_unionwait=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_unionwait=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:15013: result: $ac_cv_unionwait" >&5 echo "${ECHO_T}$ac_cv_unionwait" >&6 if test "$ac_cv_unionwait" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_UNION_WAIT 1 _ACEOF fi echo "$as_me:15023: checking for gethostname declaration" >&5 echo $ECHO_N "checking for gethostname declaration... $ECHO_C" >&6 if test "${ac_cv_decl_gethostname_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 15029 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gethostname(1); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:15059: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:15062: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:15065: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:15068: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_gethostname_def=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_gethostname_def=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:15079: result: $ac_cv_decl_gethostname_def" >&5 echo "${ECHO_T}$ac_cv_decl_gethostname_def" >&6 if test "$ac_cv_decl_gethostname_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETHOSTNAME_DEF 1 _ACEOF fi echo "$as_me:15089: checking for innetgr declaration" >&5 echo $ECHO_N "checking for innetgr declaration... $ECHO_C" >&6 if test "${ac_cv_decl_innetgr_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 15095 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_NETDB_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d", innetgr(1)); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:15128: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:15131: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:15134: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:15137: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_innetgr_def=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_innetgr_def=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:15148: result: $ac_cv_decl_innetgr_def" >&5 echo "${ECHO_T}$ac_cv_decl_innetgr_def" >&6 if test "$ac_cv_decl_innetgr_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_INNETGR_DEF 1 _ACEOF fi echo "$as_me:15159: checking for openlog declaration" >&5 echo $ECHO_N "checking for openlog declaration... $ECHO_C" >&6 if test "${ac_cv_decl_openlog_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 15165 "configure" #include "confdefs.h" #include #ifdef HAVE_CTYPES_H #include #endif #ifdef HAVE_STDARG_H #include #endif #ifdef HAVE_SYSLOG_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",openlog); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:15193: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:15196: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:15199: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:15202: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_openlog_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_openlog_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:15213: result: $ac_cv_decl_openlog_def" >&5 echo "${ECHO_T}$ac_cv_decl_openlog_def" >&6 if test "$ac_cv_decl_openlog_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_OPENLOG_DEF 1 _ACEOF fi echo "$as_me:15224: checking for syslog declaration" >&5 echo $ECHO_N "checking for syslog declaration... $ECHO_C" >&6 if test "${ac_cv_decl_syslog_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 15230 "configure" #include "confdefs.h" #include #ifdef HAVE_STDARG_H #include #endif #ifdef HAVE_SYSLOG_H #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { printf("%d",syslog); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:15255: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:15258: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:15261: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:15264: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_syslog_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_syslog_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:15275: result: $ac_cv_decl_syslog_def" >&5 echo "${ECHO_T}$ac_cv_decl_syslog_def" >&6 if test "$ac_cv_decl_syslog_def" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SYSLOG_DEF 1 _ACEOF fi echo "$as_me:15286: checking for struct in6_addr declaration" >&5 echo $ECHO_N "checking for struct in6_addr declaration... $ECHO_C" >&6 if test "${ac_cv_decl_in6_addr_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 15292 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct in6_addr v; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:15316: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:15319: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:15322: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:15325: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_in6_addr_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_in6_addr_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:15336: result: $ac_cv_decl_in6_addr_def" >&5 echo "${ECHO_T}$ac_cv_decl_in6_addr_def" >&6 if test "$ac_cv_decl_in6_addr_def" = yes; then cat >>confdefs.h <<\_ACEOF #define IN6_ADDR 1 _ACEOF fi echo "$as_me:15347: checking for struct in_addr6 declaration (LINUX)" >&5 echo $ECHO_N "checking for struct in_addr6 declaration (LINUX)... $ECHO_C" >&6 if test "${ac_cv_decl_in_addr6_def+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 15353 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct in_addr6 v; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:15377: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:15380: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:15383: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:15386: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_in_addr6_def=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_in_addr6_def=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:15397: result: $ac_cv_decl_in_addr6_def" >&5 echo "${ECHO_T}$ac_cv_decl_in_addr6_def" >&6 if test "$ac_cv_decl_in_addr6_def" = yes; then cat >>confdefs.h <<\_ACEOF #define IN_ADDR6 1 _ACEOF fi echo "$as_me:15409: checking for struct stat has st_mtimespec.tv_nsec" >&5 echo $ECHO_N "checking for struct stat has st_mtimespec.tv_nsec... $ECHO_C" >&6 if test "${ac_cv_decl_st_mtimespec_tv_nsec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 15415 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #ifdef HAVE_SYS_TIME_H #include #endif #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct stat statb; statb.st_mtimespec.tv_nsec; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:15441: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:15444: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:15447: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:15450: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_st_mtimespec_tv_nsec=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_st_mtimespec_tv_nsec=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:15461: result: $ac_cv_decl_st_mtimespec_tv_nsec" >&5 echo "${ECHO_T}$ac_cv_decl_st_mtimespec_tv_nsec" >&6 if test "$ac_cv_decl_st_mtimespec_tv_nsec" = yes; then cat >>confdefs.h <<_ACEOF #define ST_MTIMESPEC_TV_NSEC 1 _ACEOF fi echo "$as_me:15471: checking for struct stat has st_mtimensec" >&5 echo $ECHO_N "checking for struct stat has st_mtimensec... $ECHO_C" >&6 if test "${ac_cv_decl_st_mtimensec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 15477 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #include #if defined(HAVE_SYS_TIME_H) #include #endif #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { struct stat statb; statb.st_mtimensec; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:15503: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:15506: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:15509: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:15512: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_st_mtimensec=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_st_mtimensec=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:15523: result: $ac_cv_decl_st_mtimensec" >&5 echo "${ECHO_T}$ac_cv_decl_st_mtimensec" >&6 if test "$ac_cv_decl_st_mtimensec" = yes; then cat >>confdefs.h <<_ACEOF #define ST_MTIMENSEC 1 _ACEOF fi echo "$as_me:15534: checking for strcasecmp definition" >&5 echo $ECHO_N "checking for strcasecmp definition... $ECHO_C" >&6 if test "${ac_cv_decl_strcasecmp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 15540 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #if defined(HAVE_STDLIB_H) #include #endif #if defined(HAVE_STRING_H) #include #endif #if defined(HAVE_STRINGS_H) #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { strcasecmp(1) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:15571: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:15574: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:15577: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:15580: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_strcasecmp=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_strcasecmp=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:15591: result: $ac_cv_decl_strcasecmp" >&5 echo "${ECHO_T}$ac_cv_decl_strcasecmp" >&6 if test "$ac_cv_decl_strcasecmp" = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_STRCASECMP_DEF 1 _ACEOF fi echo "$as_me:15602: checking for flock definition" >&5 echo $ECHO_N "checking for flock definition... $ECHO_C" >&6 if test "${ac_cv_decl_flock+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 15608 "configure" #include "confdefs.h" #ifdef HAVE_CTYPES_H #include #endif #if defined(HAVE_STDLIB_H) #include #endif #if defined(HAVE_SYS_FILE_H) #include #endif #if defined(HAVE_FCNTL_H) #include #endif #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { flock(1) ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:15639: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:15642: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:15645: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:15648: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_decl_flock=no else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_decl_flock=yes fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:15659: result: $ac_cv_decl_flock" >&5 echo "${ECHO_T}$ac_cv_decl_flock" >&6 if test "$ac_cv_decl_flock" = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_FLOCK_DEF 1 _ACEOF fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:15682: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:15736: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # Extract the first word of "auxman", so it can be a program name with args. set dummy auxman; ac_word=$2 echo "$as_me:15749: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_INSTALL_MAN+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$INSTALL_MAN"; then ac_cv_prog_INSTALL_MAN="$INSTALL_MAN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_INSTALL_MAN="auxman" echo "$as_me:15765: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_INSTALL_MAN" && ac_cv_prog_INSTALL_MAN="$INSTALL -m 644" fi fi INSTALL_MAN=$ac_cv_prog_INSTALL_MAN if test -n "$INSTALL_MAN"; then echo "$as_me:15776: result: $INSTALL_MAN" >&5 echo "${ECHO_T}$INSTALL_MAN" >&6 else echo "$as_me:15779: result: no" >&5 echo "${ECHO_T}no" >&6 fi echo "$as_me:15784: checking whether ${MAKE-make} sets \${MAKE}" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="${MAKE}"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:15804: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:15808: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi echo "$as_me:15814: checking for shell" >&5 echo $ECHO_N "checking for shell... $ECHO_C" >&6 SHELL=/bin/sh echo "$as_me:15817: result: using $SHELL (FORCED)" >&5 echo "${ECHO_T}using $SHELL (FORCED)" >&6 MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi echo "$as_me:15835: checking whether NLS is requested" >&5 echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" USE_NLS=$enableval else USE_NLS=no fi; echo "$as_me:15844: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo "$as_me:15882: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then echo "$as_me:15913: result: $MSGFMT" >&5 echo "${ECHO_T}$MSGFMT" >&6 else echo "$as_me:15916: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo "$as_me:15922: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:15940: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then echo "$as_me:15953: result: $GMSGFMT" >&5 echo "${ECHO_T}$GMSGFMT" >&6 else echo "$as_me:15956: result: no" >&5 echo "${ECHO_T}no" >&6 fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo "$as_me:15992: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then echo "$as_me:16023: result: $XGETTEXT" >&5 echo "${ECHO_T}$XGETTEXT" >&6 else echo "$as_me:16026: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f messages.po # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 echo "$as_me:16063: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MSGMERGE+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then echo "$as_me:16093: result: $MSGMERGE" >&5 echo "${ECHO_T}$MSGMERGE" >&6 else echo "$as_me:16096: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test "$GMSGFMT" != ":"; then if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` echo "$as_me:16107: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 GMSGFMT=":" fi fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else echo "$as_me:16118: result: found xgettext program is not GNU xgettext; ignore it" >&5 echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 XGETTEXT=":" fi rm -f messages.po fi ac_config_commands="$ac_config_commands default-1" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:16168: checking for ld used by GCC" >&5 echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:16198: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:16201: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${acl_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then echo "$as_me:16232: result: $LD" >&5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:16235: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:16238: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:16241: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${acl_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 with_gnu_ld=$acl_cv_prog_gnu_ld echo "$as_me:16260: checking for shared library run path origin" >&5 echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 if test "${acl_cv_rpath+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi echo "$as_me:16273: result: $acl_cv_rpath" >&5 echo "${ECHO_T}$acl_cv_rpath" >&6 wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath or --disable-rpath was given. if test "${enable_rpath+set}" = set; then enableval="$enable_rpath" : else enable_rpath=yes fi; use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then withval="$with_libiconv_prefix" if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi; LIBICONV= LTLIBICONV= INCICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi echo "$as_me:16689: checking whether NLS is requested" >&5 echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" USE_NLS=$enableval else USE_NLS=no fi; echo "$as_me:16698: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 LIBINTL= LTLIBINTL= POSUB= if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no echo "$as_me:16716: checking for GNU gettext in libc" >&5 echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext1_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line 16722 "configure" #include "confdefs.h" #include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:16743: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:16746: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:16749: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:16752: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_func_gnugettext1_libc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 gt_cv_func_gnugettext1_libc=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:16762: result: $gt_cv_func_gnugettext1_libc" >&5 echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 if test "$gt_cv_func_gnugettext1_libc" != "yes"; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done echo "$as_me:16796: checking for iconv" >&5 echo $ECHO_N "checking for iconv... $ECHO_C" >&6 if test "${am_cv_func_iconv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat >conftest.$ac_ext <<_ACEOF #line 16805 "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:16826: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:16829: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:16832: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:16835: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_func_iconv=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF #line 16847 "configure" #include "confdefs.h" #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:16868: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:16871: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:16874: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:16877: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_lib_iconv=yes am_cv_func_iconv=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi echo "$as_me:16890: result: $am_cv_func_iconv" >&5 echo "${ECHO_T}$am_cv_func_iconv" >&6 if test "$am_cv_func_iconv" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ICONV 1 _ACEOF fi if test "$am_cv_lib_iconv" = yes; then echo "$as_me:16900: checking how to link with libiconv" >&5 echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 echo "$as_me:16902: result: $LIBICONV" >&5 echo "${ECHO_T}$LIBICONV" >&6 else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix or --without-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then withval="$with_libintl_prefix" if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi; LIBINTL= LTLIBINTL= INCINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi echo "$as_me:17291: checking for GNU gettext in libintl" >&5 echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat >conftest.$ac_ext <<_ACEOF #line 17301 "configure" #include "confdefs.h" #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:17326: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:17329: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:17332: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:17335: \$? = $ac_status" >&5 (exit $ac_status); }; }; then gt_cv_func_gnugettext1_libintl=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 gt_cv_func_gnugettext1_libintl=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF #line 17347 "configure" #include "confdefs.h" #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:17372: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:17375: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:17378: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:17381: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext1_libintl=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi echo "$as_me:17396: result: $gt_cv_func_gnugettext1_libintl" >&5 echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 fi if test "$gt_cv_func_gnugettext1_libc" = "yes" \ || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then cat >>confdefs.h <<\_ACEOF #define ENABLE_NLS 1 _ACEOF else USE_NLS=no fi fi echo "$as_me:17425: checking whether to use NLS" >&5 echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 echo "$as_me:17427: result: $USE_NLS" >&5 echo "${ECHO_T}$USE_NLS" >&6 if test "$USE_NLS" = "yes"; then echo "$as_me:17430: checking where the gettext function comes from" >&5 echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6 if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi echo "$as_me:17441: result: $gt_source" >&5 echo "${ECHO_T}$gt_source" >&6 fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then echo "$as_me:17449: checking how to link with libintl" >&5 echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 echo "$as_me:17451: result: $LIBINTL" >&5 echo "${ECHO_T}$LIBINTL" >&6 for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi cat >>confdefs.h <<\_ACEOF #define HAVE_GETTEXT 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi POSUB=po fi INTLLIBS="$LIBINTL" if test "$ac_cv_c_compiler_gnu" = yes; then CPPFLAGS="$CPPFLAGS -g -W -Wall -Werror -Wno-unused " CFLAGS="$CFLAGS -g -W -Wall -Werror -Wno-unused " fi; ac_config_files="$ac_config_files Makefile src/Makefile man/Makefile fonts/Makefile DOCS/Makefile UTILS/accounting.sh UTILS/sendhp.sh UTILS/supported UTILS/fixupdate src/extract_pjl src/wrapper po/Makefile.in" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overriden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if cmp -s $cache_file confcache; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:17593: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # NLS nuisances. # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi (set +x; test -n "`(LANG=C; export LANG) 2>&1`") && { $as_unset LANG || test "${LANG+set}" != set; } || { LANG=C; export LANG; } (set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || { LC_ALL=C; export LC_ALL; } (set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || { LC_TIME=C; export LC_TIME; } (set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || { LC_CTYPE=C; export LC_CTYPE; } (set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || { LANGUAGE=C; export LANGUAGE; } (set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || { LC_COLLATE=C; export LC_COLLATE; } (set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || { LC_NUMERIC=C; export LC_NUMERIC; } (set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || { LC_MESSAGES=C; export LC_MESSAGES; } # Name of the executable. as_me=`(basename "$0") 2>/dev/null || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conftest.sh echo "exit 0" >>conftest.sh chmod +x conftest.sh if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conftest.sh fi as_lineno_1=17688 as_lineno_2=17689 as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:17713: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=17728 as_lineno_2=17729 as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with 17743 # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that 17748 is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:17762: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by $as_me, which was generated by GNU Autoconf 2.53. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.53, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` shift set dummy "$ac_option" "$ac_optarg" ${1+"$@"} shift ;; -*);; *) # This is not an option, so the user has probably given explicit # arguments. ac_need_defaults=false;; esac case $1 in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:17945: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) shift CONFIG_FILES="$CONFIG_FILES $1" ac_need_defaults=false;; --header | --heade | --head | --hea ) shift CONFIG_HEADERS="$CONFIG_HEADERS $1" ac_need_defaults=false;; # This is an error. -*) { { echo "$as_me:17964: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "fonts/Makefile" ) CONFIG_FILES="$CONFIG_FILES fonts/Makefile" ;; "DOCS/Makefile" ) CONFIG_FILES="$CONFIG_FILES DOCS/Makefile" ;; "UTILS/accounting.sh" ) CONFIG_FILES="$CONFIG_FILES UTILS/accounting.sh" ;; "UTILS/sendhp.sh" ) CONFIG_FILES="$CONFIG_FILES UTILS/sendhp.sh" ;; "UTILS/supported" ) CONFIG_FILES="$CONFIG_FILES UTILS/supported" ;; "UTILS/fixupdate" ) CONFIG_FILES="$CONFIG_FILES UTILS/fixupdate" ;; "src/extract_pjl" ) CONFIG_FILES="$CONFIG_FILES src/extract_pjl" ;; "src/wrapper" ) CONFIG_FILES="$CONFIG_FILES src/wrapper" ;; "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:18014: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. : ${TMPDIR=/tmp} { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=$TMPDIR/cs$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@target@,$target,;t t s,@target_cpu@,$target_cpu,;t t s,@target_vendor@,$target_vendor,;t t s,@target_os@,$target_os,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@CPP@,$CPP,;t t s,@INSTALL@,$INSTALL,;t t s,@INSTALL_MAN@,$INSTALL_MAN,;t t s,@LDCC@,$LDCC,;t t s,@AWK@,$AWK,;t t s,@PERL@,$PERL,;t t s,@LOCALEDIR@,$LOCALEDIR,;t t s,@LN_S@,$LN_S,;t t s,@ECHO@,$ECHO,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@LIBTOOL@,$LIBTOOL,;t t s,@FILEUTIL@,$FILEUTIL,;t t s,@GZIP@,$GZIP,;t t s,@GS@,$GS,;t t s,@A2PS@,$A2PS,;t t s,@CAT@,$CAT,;t t s,@IFHP_CONF@,$IFHP_CONF,;t t s,@SNMP@,$SNMP,;t t s,@FOOMATIC_RIP@,$FOOMATIC_RIP,;t t s,@FOOMATIC@,$FOOMATIC,;t t s,@PAGE_SIZE@,$PAGE_SIZE,;t t s,@FILTER_DIR@,$FILTER_DIR,;t t s,@FONT_DIR@,$FONT_DIR,;t t s,@STRIP_OPTION@,$STRIP_OPTION,;t t s,@GSCHECK@,$GSCHECK,;t t s,@DEVFD3@,$DEVFD3,;t t s,@ARCHITECTURE@,$ARCHITECTURE,;t t s,@OSNAME@,$OSNAME,;t t s,@OSVERSION@,$OSVERSION,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t s,@USE_NLS@,$USE_NLS,;t t s,@MSGFMT@,$MSGFMT,;t t s,@GMSGFMT@,$GMSGFMT,;t t s,@XGETTEXT@,$XGETTEXT,;t t s,@MSGMERGE@,$MSGMERGE,;t t s,@LIBICONV@,$LIBICONV,;t t s,@LTLIBICONV@,$LTLIBICONV,;t t s,@INTLLIBS@,$INTLLIBS,;t t s,@LIBINTL@,$LIBINTL,;t t s,@LTLIBINTL@,$LTLIBINTL,;t t s,@POSUB@,$POSUB,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { case "$ac_dir" in [\\/]* | ?:[\\/]* ) as_incr_dir=;; *) as_incr_dir=.;; esac as_dummy="$ac_dir" for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do case $as_mkdir_dir in # Skip DOS drivespec ?:) as_incr_dir=$as_mkdir_dir ;; *) as_incr_dir=$as_incr_dir/$as_mkdir_dir test -d "$as_incr_dir" || mkdir "$as_incr_dir" || { { echo "$as_me:18248: error: cannot create \"$ac_dir\"" >&5 echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; } ;; esac done; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:18294: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:18317: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; *) # Relative if test -f "$f"; then # Build tree echo $f elif test -f "$srcdir/$f"; then # Source tree echo $srcdir/$f else # /dev/null tree { { echo "$as_me:18330: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:18397: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:18408: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; *) # Relative if test -f "$f"; then # Build tree echo $f elif test -f "$srcdir/$f"; then # Source tree echo $srcdir/$f else # /dev/null tree { { echo "$as_me:18421: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # egrep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if cmp -s $ac_file $tmp/config.h 2>/dev/null; then { echo "$as_me:18538: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { case "$ac_dir" in [\\/]* | ?:[\\/]* ) as_incr_dir=;; *) as_incr_dir=.;; esac as_dummy="$ac_dir" for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do case $as_mkdir_dir in # Skip DOS drivespec ?:) as_incr_dir=$as_mkdir_dir ;; *) as_incr_dir=$as_incr_dir/$as_mkdir_dir test -d "$as_incr_dir" || mkdir "$as_incr_dir" || { { echo "$as_me:18566: error: cannot create \"$ac_dir\"" >&5 echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; } ;; esac done; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` { echo "$as_me:18635: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in default-1 ) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: exec 5>/dev/null $SHELL $CONFIG_STATUS || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi ifhp-3.5.20/ltconfig0100644000175100017510000027774110130541264014530 0ustar papowellpapowell#! /bin/sh # ltconfig - Create a system-specific libtool. # Copyright (C) 1996-1999 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A lot of this script is taken from autoconf-2.10. # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} echo=echo if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec "$SHELL" "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null`} case X$UNAME in *-DOS) PATH_SEPARATOR=';' ;; *) PATH_SEPARATOR=':' ;; esac fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string="`eval $cmd`") 2>/dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then break fi done fi if test "X`($echo '\t') 2>/dev/null`" != 'X\t' || test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running ltconfig again with it. ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf "%s\n"' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then # Cool, printf works : elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL" export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # The name of this program. progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` # Constants: PROGRAM=ltconfig PACKAGE=libtool VERSION=1.3.5-freebsd-ports TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)" ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' rm="rm -f" help="Try \`$progname --help' for more information." # Global variables: default_ofile=libtool can_build_shared=yes enable_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). enable_static=yes enable_fast_install=yes install_ltlibs=yes release_suffix=yes enable_dlopen=unknown enable_win32_dll=no ltmain= silent= srcdir= ac_config_guess= ac_config_sub= host= nonopt= ofile="$default_ofile" verify_host=yes with_gcc=no with_gnu_ld=no need_locks=yes ac_ext=c objext=o libext=a exeext= cache_file= old_AR="$AR" old_CC="$CC" old_CFLAGS="$CFLAGS" old_CPPFLAGS="$CPPFLAGS" old_LDFLAGS="$LDFLAGS" old_LD="$LD" old_LN_S="$LN_S" old_LIBS="$LIBS" old_NM="$NM" old_RANLIB="$RANLIB" old_DLLTOOL="$DLLTOOL" old_OBJDUMP="$OBJDUMP" old_AS="$AS" # Parse the command line options. args= prev= for option do case "$option" in -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then eval "$prev=\$option" prev= continue fi case "$option" in --help) cat <&2 echo "$help" 1>&2 exit 1 ;; *) if test -z "$ltmain"; then ltmain="$option" elif test -z "$host"; then # This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 # if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then # echo "$progname: warning \`$option' is not a valid host type" 1>&2 # fi host="$option" else echo "$progname: too many arguments" 1>&2 echo "$help" 1>&2 exit 1 fi ;; esac done if test -z "$ltmain"; then echo "$progname: you must specify a LTMAIN file" 1>&2 echo "$help" 1>&2 exit 1 fi if test ! -f "$ltmain"; then echo "$progname: \`$ltmain' does not exist" 1>&2 echo "$help" 1>&2 exit 1 fi # Quote any args containing shell metacharacters. ltconfig_args= for arg do case "$arg" in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ltconfig_args="$ltconfig_args '$arg'" ;; *) ltconfig_args="$ltconfig_args $arg" ;; esac done # A relevant subset of AC_INIT. # File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 5 compiler messages saved in config.log # 6 checking for... messages and results if test "$silent" = yes; then exec 6>/dev/null else exec 6>&1 fi exec 5>>./config.log # NLS nuisances. # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi if test -n "$cache_file" && test -r "$cache_file"; then echo "loading cache $cache_file within ltconfig" . $cache_file fi if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ac_n= ac_c=' ' ac_t=' ' else ac_n=-n ac_c= ac_t= fi else ac_n= ac_c='\c' ac_t= fi if test -z "$srcdir"; then # Assume the source directory is the same one as the path to LTMAIN. srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` test "$srcdir" = "$ltmain" && srcdir=. fi trap "$rm conftest*; exit 1" 1 2 15 if test "$verify_host" = yes; then # Check for config.guess and config.sub. ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/config.guess; then ac_aux_dir=$ac_dir break fi done if test -z "$ac_aux_dir"; then echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 echo "$help" 1>&2 exit 1 fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub # Make sure we can run config.sub. if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : else echo "$progname: cannot run $ac_config_sub" 1>&2 echo "$help" 1>&2 exit 1 fi echo $ac_n "checking host system type""... $ac_c" 1>&6 host_alias=$host case "$host_alias" in "") if host_alias=`$SHELL $ac_config_guess`; then : else echo "$progname: cannot guess host type; you must specify one" 1>&2 echo "$help" 1>&2 exit 1 fi ;; esac host=`$SHELL $ac_config_sub $host_alias` echo "$ac_t$host" 1>&6 # Make sure the host verified. test -z "$host" && exit 1 elif test -z "$host"; then echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 echo "$help" 1>&2 exit 1 else host_alias=$host fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case "$host_os" in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` case "$host_os" in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR cru $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= # Set a sane default for `AR'. test -z "$AR" && AR=ar # Set a sane default for `OBJDUMP'. test -z "$OBJDUMP" && OBJDUMP=objdump # If RANLIB is not set, then run the test. if test "${RANLIB+set}" != "set"; then result=no echo $ac_n "checking for ranlib... $ac_c" 1>&6 IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH; do test -z "$dir" && dir=. if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then RANLIB="ranlib" result="ranlib" break fi done IFS="$save_ifs" echo "$ac_t$result" 1>&6 fi if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" fi # Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$AS" && AS=as # Check to see if we are using GCC. if test "$with_gcc" != yes || test -z "$CC"; then # If CC is not set, then try to find GCC or a usable CC. if test -z "$CC"; then echo $ac_n "checking for gcc... $ac_c" 1>&6 IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH; do test -z "$dir" && dir=. if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then CC="gcc" break fi done IFS="$save_ifs" if test -n "$CC"; then echo "$ac_t$CC" 1>&6 else echo "$ac_t"no 1>&6 fi fi # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". if test -z "$CC"; then echo $ac_n "checking for cc... $ac_c" 1>&6 IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" cc_rejected=no for dir in $PATH; do test -z "$dir" && dir=. if test -f $dir/cc || test -f $dir/cc$ac_exeext; then if test "$dir/cc" = "/usr/ucb/cc"; then cc_rejected=yes continue fi CC="cc" break fi done IFS="$save_ifs" if test $cc_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $CC shift if test $# -gt 0; then # We chose a different compiler from the bogus one. # However, it has the same name, so the bogon will be chosen # first if we set CC to just the name; use the full file name. shift set dummy "$dir/cc" "$@" shift CC="$@" fi fi if test -n "$CC"; then echo "$ac_t$CC" 1>&6 else echo "$ac_t"no 1>&6 fi if test -z "$CC"; then echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 exit 1 fi fi # Now see if the compiler is really GCC. with_gcc=no echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 echo "$progname:581: checking whether we are using GNU C" >&5 $rm conftest.c cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then with_gcc=yes fi $rm conftest.c echo "$ac_t$with_gcc" 1>&6 fi # Allow CC to be a program name with arguments. set dummy $CC compiler="$2" echo $ac_n "checking for object suffix... $ac_c" 1>&6 $rm conftest* echo 'int i = 1;' > conftest.c echo "$progname:603: checking for object suffix" >& 5 if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then # Append any warnings to the config.log. cat conftest.err 1>&5 for ac_file in conftest.*; do case $ac_file in *.c) ;; *) objext=`echo $ac_file | sed -e s/conftest.//` ;; esac done else cat conftest.err 1>&5 echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi $rm conftest* echo "$ac_t$objext" 1>&6 echo $ac_n "checking for executable suffix... $ac_c" 1>&6 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_exeext="no" $rm conftest* echo 'main () { return 0; }' > conftest.c echo "$progname:629: checking for executable suffix" >& 5 if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then # Append any warnings to the config.log. cat conftest.err 1>&5 for ac_file in conftest.*; do case $ac_file in *.c | *.err | *.$objext ) ;; *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; esac done else cat conftest.err 1>&5 echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi $rm conftest* fi if test "X$ac_cv_exeext" = Xno; then exeext="" else exeext="$ac_cv_exeext" fi echo "$ac_t$ac_cv_exeext" 1>&6 echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 pic_flag= special_shlib_compile_flags= wl= link_static_flag= no_builtin_flag= if test "$with_gcc" = yes; then wl='-Wl,' link_static_flag='-static' case "$host_os" in beos* | irix5* | irix6* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # we not sure about C++ programs. link_static_flag="$link_static_flag ${wl}-lC" ;; cygwin* | mingw* | os2*) # We can build DLLs from non-PIC. ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. pic_flag='-m68020 -resident32 -malways-restore-a4' ;; sysv4*MP*) if test -d /usr/nec; then pic_flag=-Kconform_pic fi ;; *) pic_flag='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case "$host_os" in aix3* | aix4*) # All AIX code is PIC. link_static_flag='-bnso -bI:/lib/syscalls.exp' ;; hpux9* | hpux10* | hpux11*) # Is there a better link_static_flag that works with the bundled CC? wl='-Wl,' link_static_flag="${wl}-a ${wl}archive" pic_flag='+Z' ;; irix5* | irix6*) wl='-Wl,' link_static_flag='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | os2*) # We can build DLLs from non-PIC. ;; osf3* | osf4* | osf5*) # All OSF/1 code is PIC. wl='-Wl,' link_static_flag='-non_shared' ;; sco3.2v5*) pic_flag='-Kpic' link_static_flag='-dn' special_shlib_compile_flags='-belf' ;; solaris*) pic_flag='-KPIC' link_static_flag='-Bstatic' wl='-Wl,' ;; sunos4*) pic_flag='-PIC' link_static_flag='-Bstatic' wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) pic_flag='-KPIC' link_static_flag='-Bstatic' wl='-Wl,' ;; uts4*) pic_flag='-pic' link_static_flag='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then pic_flag='-Kconform_pic' link_static_flag='-Bstatic' fi ;; *) can_build_shared=no ;; esac fi if test -n "$pic_flag"; then echo "$ac_t$pic_flag" 1>&6 # Check to make sure the pic_flag actually works. echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 $rm conftest* echo "int some_variable = 0;" > conftest.c save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $pic_flag -DPIC" echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then # Append any warnings to the config.log. cat conftest.err 1>&5 case "$host_os" in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then they # create non-PIC objects. So, if there were any warnings, we assume that # PIC is not supported. if test -s conftest.err; then echo "$ac_t"no 1>&6 can_build_shared=no pic_flag= else echo "$ac_t"yes 1>&6 pic_flag=" $pic_flag" fi ;; *) echo "$ac_t"yes 1>&6 pic_flag=" $pic_flag" ;; esac else # Append any errors to the config.log. cat conftest.err 1>&5 can_build_shared=no pic_flag= echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" $rm conftest* else echo "$ac_t"none 1>&6 fi # Check to see if options -o and -c are simultaneously supported by compiler echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 $rm -r conftest 2>/dev/null mkdir conftest cd conftest $rm conftest* echo "int some_variable = 0;" > conftest.c mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.o" echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then echo "$ac_t"no 1>&6 compiler_c_o=no else echo "$ac_t"yes 1>&6 compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&5 compiler_c_o=no echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 $rm conftest* echo "int some_variable = 0;" > conftest.c save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then echo "$ac_t"no 1>&6 compiler_o_lo=no else echo "$ac_t"yes 1>&6 compiler_o_lo=yes fi else # Append any errors to the config.log. cat conftest.err 1>&5 compiler_o_lo=no echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" $rm conftest* else compiler_o_lo=no fi # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$ac_t$hard_links" 1>&6 $rm conftest* if test "$hard_links" = no; then echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 need_locks=warn fi else need_locks=no fi if test "$with_gcc" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 $rm conftest* echo "int some_variable = 0;" > conftest.c save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then echo "$ac_t"no 1>&6 compiler_rtti_exceptions=no else echo "$ac_t"yes 1>&6 compiler_rtti_exceptions=yes fi else # Append any errors to the config.log. cat conftest.err 1>&5 compiler_rtti_exceptions=no echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" $rm conftest* if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi # Check for any special shared library compilation flags. if test -n "$special_shlib_compile_flags"; then echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : else echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 can_build_shared=no fi fi echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 $rm conftest* echo 'main(){return(0);}' > conftest.c save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $link_static_flag" echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then echo "$ac_t$link_static_flag" 1>&6 else echo "$ac_t"none 1>&6 link_static_flag= fi LDFLAGS="$save_LDFLAGS" $rm conftest* if test -z "$LN_S"; then # Check to see if we can use ln -s, or we need hard links. echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 $rm conftest.dat if ln -s X conftest.dat 2>/dev/null; then $rm conftest.dat LN_S="ln -sf" else LN_S=ln fi if test "$LN_S" = "ln -sf"; then echo "$ac_t"yes 1>&6 else echo "$ac_t"no 1>&6 fi fi # Make sure LD is an absolute path. if test -z "$LD"; then ac_prog=ld if test "$with_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 echo "$progname:991: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we are not using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld... $ac_c" 1>&6 echo "$progname:1015: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 echo "$progname:1018: checking for non-GNU ld" >&5 fi if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" fi if test -n "$LD"; then echo "$ac_t$LD" 1>&6 else echo "$ac_t"no 1>&6 fi if test -z "$LD"; then echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 exit 1 fi fi # Check to see if it really is or is not GNU ld. echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then with_gnu_ld=yes else with_gnu_ld=no fi echo "$ac_t$with_gnu_ld" 1>&6 # See if the linker supports building shared libraries. echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. case "$host_os" in cygwin* | mingw*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$with_gcc" != yes; then with_gnu_ld=no fi ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case "$host_os" in aix3* | aix4*) # On AIX, the GNU linker is very broken ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. # Be careful not to strip the DATA tag left by newer dlltools. export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols' # If DATA tags from a recent dlltool are present, honour them! archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ _lt_hint=1; cat $export_symbols | while read symbol; do set dummy \$symbol; case \$# in 2) echo " \$2 @ \$_lt_hint ; " >> $objdir/$soname-def;; *) echo " \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;; esac; _lt_hint=`expr 1 + \$_lt_hint`; done~ test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' # can we support soname and/or expsyms with a.out? -oliva fi ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $compile_rpath $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $compile_rpath $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case "$host_os" in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$with_gcc" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4*) hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' hardcode_libdir_separator=':' if test "$with_gcc" = yes; then collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi shared_flag='-shared' else shared_flag='${wl}-bM:SRE' hardcode_direct=yes fi allow_undefined_flag=' ${wl}-berok' archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' case "$host_os" in aix4.[01]|aix4.[01].*) # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on always_export_symbols=yes ;; esac ;; amigaos*) archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs' fix_srcfile_path='`cygpath -w $srcfile`' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case "$host_os" in hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6*) if test "$with_gcc" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF fi hardcode_libdir_flag_spec='${wl}-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; openbsd*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' ;; osf3*) if test "$with_gcc" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # As osf3* with the addition of the -msym flag if test "$with_gcc" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; rhapsody*) archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flags_spec='-L$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case "$host_os" in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $linkopts' else archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; unixware7*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$ac_t$ld_shlibs" 1>&6 test "$ld_shlibs" = no && can_build_shared=no if test -z "$NM"; then echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 case "$NM" in [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then NM="$ac_dir/nm -B" break elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then NM="$ac_dir/nm -p" break else NM=${NM="$ac_dir/nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$NM" && NM=nm ;; esac echo "$ac_t$NM" 1>&6 fi # Check for command to grab the raw symbol name followed by C symbol from nm. echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Define system-specific variables. case "$host_os" in aix*) symcode='[BCDT]' ;; cygwin* | mingw*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" ;; irix*) symcode='[BCDEGRST]' ;; solaris*) symcode='[BDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then symcode='[ABCDGISTW]' fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no $rm conftest* cat > conftest.c <&5 if { (eval echo $progname:1654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then # Now try to grab the symbols. nlist=conftest.nm if { echo "$progname:1657: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.c #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' cat <> conftest.c #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c cat <<\EOF >> conftest.c {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$objext conftstm.$objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$objext" CFLAGS="$CFLAGS$no_builtin_flag" if { (eval echo $progname:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then pipe_works=yes else echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi LIBS="$save_LIBS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi $rm conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else global_symbol_pipe= fi done if test "$pipe_works" = yes; then echo "${ac_t}ok" 1>&6 else echo "${ac_t}failed" 1>&6 fi if test -z "$global_symbol_pipe"; then global_symbol_to_cdecl= fi # Check hardcoding attributes. echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$ac_t$hardcode_action" 1>&6 reload_flag= reload_cmds='$LD$reload_flag -o $output$reload_objs' echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 # PORTME Some linkers may need a different reload flag. reload_flag='-r' echo "$ac_t$reload_flag" 1>&6 test -n "$reload_flag" && reload_flag=" $reload_flag" # PORTME Fill in your ld.so characteristics library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib" file_magic_cmd= file_magic_test_file= deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [regex]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 case "$host_os" in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4*) version_type=linux # AIX has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. # We preserve .a as extension for shared libraries though AIX4.2 # and later linker supports .so library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' shlibpath_var=LIBPATH deplibs_check_method=pass_all ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH deplibs_check_method=pass_all lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' file_magic_cmd=/usr/bin/file file_magic_test_file=/shlib/libc.so sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" export_dynamic_flag_spec=-rdynamic # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw*) version_type=windows need_version=no need_lib_prefix=no if test "$with_gcc" = yes; then library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' else library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' fi dynamic_linker='Win32 ld.exe' deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' file_magic_cmd='${OBJDUMP} -f' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case "$version_type" in freebsd-elf*) deplibs_check_method='file_magic (ELF [0-9][0-9]*-bit [LM]SB shared object|current ar archive)' ;; freebsd-*) deplibs_check_method='file_magic FreeBSD.* shared library' ;; esac file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /usr/lib/libc.so*` if test "$release_suffix" = all; then library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}.so' fi need_version=no need_lib_prefix=no finish_cmds='/usr/bin/env OBJFORMAT="'"$objformat"'" /sbin/ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH case "$host_os" in freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' case "$host_os" in hpux10.20*) # TODO: Does this work for hpux-11 too? deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' file_magic_cmd=/usr/bin/file file_magic_test_file=/usr/lib/libc.sl ;; esac ;; irix5* | irix6*) version_type=irix need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so.$major' library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' case "$host_os" in irix5*) libsuff= shlibsuff= # this will be overridden with pass_all, but let us keep it just in case deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case "$LD" in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /lib${libsuff}/libc.so*` deplibs_check_method='pass_all' ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no deplibs_check_method=pass_all if test -f /lib/ld.so.1; then dynamic_linker='GNU ld.so' else # Only the GNU ld.so supports shared libraries on MkLinux. case "$host_cpu" in powerpc*) dynamic_linker=no ;; *) dynamic_linker='Linux ld.so' ;; esac fi ;; netbsd*) version_type=sunos if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH ;; openbsd*) version_type=sunos if test "$with_gnu_ld" = yes; then need_lib_prefix=no need_version=no fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_version=no soname_spec='${libname}${release}.so' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' shlibpath_var=LD_LIBRARY_PATH # this will be overridden with pass_all, but let us keep it just in case deplibs_check_method='file_magic COFF format alpha shared library' file_magic_cmd=/usr/bin/file file_magic_test_file=/shlib/libc.so deplibs_check_method='pass_all' sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rhapsody*) version_type=sunos library_names_spec='${libname}.so' soname_spec='${libname}.so' shlibpath_var=DYLD_LIBRARY_PATH deplibs_check_method=pass_all ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" file_magic_cmd=/usr/bin/file file_magic_test_file=/lib/libc.so ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case "$host_vendor" in sequent) file_magic_cmd='/bin/file' deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; ncr) deplibs_check_method='pass_all' ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /usr/lib/libc.so*` ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac echo "$ac_t$dynamic_linker" 1>&6 test "$dynamic_linker" = no && can_build_shared=no # Report the final consequences. echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 # Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in # configure.in, otherwise build static only libraries. case "$host_os" in cygwin* | mingw* | os2*) if test x$can_build_shared = xyes; then test x$enable_win32_dll = xno && can_build_shared=no echo "checking if package supports dlls... $can_build_shared" 1>&6 fi ;; esac if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then case "$deplibs_check_method" in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4*) test "$enable_shared" = yes && enable_static=no ;; esac echo "$ac_t$enable_shared" 1>&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "checking whether to build static libraries... $enable_static" 1>&6 if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi echo $ac_n "checking for objdir... $ac_c" 1>&6 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null echo "$ac_t$objdir" 1>&6 if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then lt_cv_dlopen=no lt_cv_dlopen_libs= echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 echo "$progname:2248: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen""... $ac_c" 1>&6 echo "$progname:2288: checking for dlopen" >&5 if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else dlopen(); #endif ; return 0; } EOF if { (eval echo $progname:2318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_dlopen=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_dlopen=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dlopen" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 echo "$progname:2335: checking for dld_link in -ldld" >&5 ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for shl_load""... $ac_c" 1>&6 echo "$progname:2375: checking for shl_load" >&5 if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else shl_load(); #endif ; return 0; } EOF if { (eval echo $progname:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shl_load=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_shl_load=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="shl_load" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 echo "$progname:2423: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else echo "$ac_t""no" 1>&6 fi fi fi fi fi fi if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes fi case "$lt_cv_dlopen" in dlopen) for ac_hdr in dlfcn.h; do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "$progname:2488: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int fnord = 0; EOF ac_try="$ac_compile >/dev/null 2>conftest.out" { (eval echo $progname:2498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 else echo "$ac_t""no" 1>&6 fi done if test "x$ac_cv_header_dlfcn_h" = xyes; then CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" fi eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" LIBS="$lt_cv_dlopen_libs $LIBS" echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 echo "$progname:2526: checking whether a program can dlopen itself" >&5 if test "${lt_cv_dlopen_self+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then lt_cv_dlopen_self=cross else cat > conftest.c < #endif #include #ifdef RTLD_GLOBAL # define LTDL_GLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LTDL_GLOBAL DL_GLOBAL # else # define LTDL_GLOBAL 0 # endif #endif /* We may have to define LTDL_LAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LTDL_LAZY_OR_NOW # ifdef RTLD_LAZY # define LTDL_LAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LTDL_LAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LTDL_LAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LTDL_LAZY_OR_NOW DL_NOW # else # define LTDL_LAZY_OR_NOW 0 # endif # endif # endif # endif #endif fnord() { int i=42;} main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } EOF if { (eval echo $progname:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then lt_cv_dlopen_self=yes else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* lt_cv_dlopen_self=no fi rm -fr conftest* fi fi echo "$ac_t""$lt_cv_dlopen_self" 1>&6 if test "$lt_cv_dlopen_self" = yes; then LDFLAGS="$LDFLAGS $link_static_flag" echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 echo "$progname:2599: checking whether a statically linked program can dlopen itself" >&5 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then lt_cv_dlopen_self_static=cross else cat > conftest.c < #endif #include #ifdef RTLD_GLOBAL # define LTDL_GLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LTDL_GLOBAL DL_GLOBAL # else # define LTDL_GLOBAL 0 # endif #endif /* We may have to define LTDL_LAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LTDL_LAZY_OR_NOW # ifdef RTLD_LAZY # define LTDL_LAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LTDL_LAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LTDL_LAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LTDL_LAZY_OR_NOW DL_NOW # else # define LTDL_LAZY_OR_NOW 0 # endif # endif # endif # endif #endif fnord() { int i=42;} main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } EOF if { (eval echo $progname:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then lt_cv_dlopen_self_static=yes else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* lt_cv_dlopen_self_static=no fi rm -fr conftest* fi fi echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 fi ;; esac case "$lt_cv_dlopen_self" in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case "$lt_cv_dlopen_self_static" in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Copy echo and quote the copy, instead of the original, because it is # used later. ltecho="$echo" if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then ltecho="$CONFIG_SHELL \$0 --fallback-echo" fi LTSHELL="$SHELL" LTCONFIG_VERSION="$VERSION" # Only quote variables if we're using ltmain.sh. case "$ltmain" in *.sh) # Now quote all the things that may contain metacharacters. for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ old_LD old_LDFLAGS old_LIBS \ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case "$var" in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case "$ltecho" in *'\$0 --fallback-echo"') ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac trap "$rm \"$ofile\"; exit 1" 1 2 15 echo "creating $ofile" $rm "$ofile" cat < "$ofile" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. # # Copyright (C) 1996-1999 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="sed -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi ### BEGIN LIBTOOL CONFIG EOF cfgfile="$ofile" ;; *) # Double-quote the variables that need it (for aesthetics). for var in old_CC old_CFLAGS old_CPPFLAGS \ old_LD old_LDFLAGS old_LIBS \ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do eval "$var=\\\"\$var\\\"" done # Just create a config file. cfgfile="$ofile.cfg" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 echo "creating $cfgfile" $rm "$cfgfile" cat < "$cfgfile" # `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) EOF ;; esac cat <> "$cfgfile" # Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # # CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ # LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ # NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ # DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ # $0$ltconfig_args # # Compiler and other test output produced by $progname, useful for # debugging $progname, is in ./config.log if it exists. # The version of $progname that generated this script. LTCONFIG_VERSION=$LTCONFIG_VERSION # Shell to use when invoking shell scripts. SHELL=$LTSHELL # Whether to waste disk space. install_ltlibs=$install_ltlibs # What to do with -release. # yes - only for shared archive # no - ingnore # all - for all archives release_suffix=$release_suffix # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$ltecho # The archiver. AR=$AR # The default C compiler. CC=$CC # The linker used to build libraries. LD=$LD # Whether we need hard or soft links. LN_S=$LN_S # A BSD-compatible nm program. NM=$NM # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$reload_flag reload_cmds=$reload_cmds # How to pass a linker flag through the compiler. wl=$wl # Object file suffix (normally "o"). objext="$objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$pic_flag # Does compiler simultaneously support -c and -o options? compiler_c_o=$compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$compiler_o_lo # Must we lock files when doing compilation ? need_locks=$need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$library_names_spec # The coded name of the library, if different from the real name. soname_spec=$soname_spec # Commands used to build and install an old-style archive. RANLIB=$RANLIB old_archive_cmds=$old_archive_cmds old_postinstall_cmds=$old_postinstall_cmds old_postuninstall_cmds=$old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$old_archive_from_new_cmds # Commands used to build and install a shared archive. archive_cmds=$archive_cmds archive_expsym_cmds=$archive_expsym_cmds postinstall_cmds=$postinstall_cmds postuninstall_cmds=$postuninstall_cmds # Method to check whether dependent libraries are shared objects. deplibs_check_method=$deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$global_symbol_to_cdecl # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Compile-time system search path for libraries sys_lib_search_path_spec=$sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$exclude_expsyms # Symbols that must always be exported. include_expsyms=$include_expsyms EOF case "$ltmain" in *.sh) echo '### END LIBTOOL CONFIG' >> "$ofile" echo >> "$ofile" case "$host_os" in aix3*) cat <<\EOF >> "$ofile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # Append the ltmain.sh script. sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? chmod +x "$ofile" ;; *) # Compile the libtool program. echo "FIXME: would compile $ltmain" ;; esac test -n "$cache_file" || exit 0 # AC_CACHE_SAVE trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote substitution # turns \\\\ into \\, and sed turns \\ into \). sed -n \ -e "s/'/'\\\\''/g" \ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; esac >> confcache if cmp -s $cache_file confcache; then : else if test -w $cache_file; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache exit 0 # Local Variables: # mode:shell-script # sh-indentation:2 # End: ifhp-3.5.20/README.SNMP0100644000175100017510000005650410130541263014423 0ustar papowellpapowell Using SNMP To Get Printer Status Patrick Powell 16 Oct 2003 1. Overview The IFHP filter can use a SNMP helper program 'snmp_printer_status' to query the printer for status information. This program can be modified to suit the particular printer. The original idea for the snmp_printer_status program was by: John Perkins The code has been modified, changed, etc. etc. I think that there might be a comma or period left from the original, but that is probably all. EXTRA BRIEF EXECUTIVE SUMMARY FOR THE PATHOLOGICALLY IMPATIENT: a) check to see if you have Net::SNMP installed: perl -MNet::SNMP -e exit If not, then you will have to do the steps in 4. Installing SNMP Tools. b) check to see if you can get the printer status. Here is a script to do so. The IP address used here should be replaced by your IP address. #!/bin/sh V=10.0.0.28 snmpwalk -Cc -v1 -c public -M +/usr/local/share/snmp/mibs -m ALL $V .iso snmpwalk -Cc -v1 -c public -Of -M +/usr/local/share/snmp/mibs -m ALL $V .iso snmpwalk -Cc -v1 -c public -On -M +/usr/local/share/snmp/mibs -m ALL $V .iso c) Install IFHP as you normally would. Now try: snmp_printer_status -h 10.0.0.28 If this works, and gets status, then you are ready. If not, then you will have to find out. d) In your LPRng configuration, use a socket connection. In your IFHP configuration, use appsocket. This will solve a problem concerning connections and status reporting. On some printers, when a connection is open to the printer it will indicate that it is 'busy'. lp:lp=IPADDR%port Use SNMP for 'sync', 'pagecount', and 'waitend'. You may not get all your error reports if you use snmp for 'waitend'. Experiment and see what works best. Try this first: Then this # options # options appsocket appsocket snmp snmp sync=snmp sync=snmp waitend waitend=snmp pagecount=snmp pagecount=snmp e) You can extract the guts of the snmp_printer_status program and put them into your favorite accounting script, which runs at the start and end of a job. 2. SNMP Basics The Simple Network Managment Protocol was conceived in the wild and youthful years of the TCP/IP protocol. It has the following properties: a) queries and results are sent using UDP (version 1) b) The 'agent' program runs on the target system and reports the information requested by a query. c) There is a standard set of 'queries' that can be used. d) The Mananagement Information Base (sic) (MIB) describes the things that can be queried. e) There is little to no security in the Version 1 and Version 2 of the protocols. f) almost all printers use Version 1, and implement all or part of the Printer MIB. 3. Status Information The following items are usually queried. 3.1 hrDeviceStatus HOST-RESOURCES-MIB::hrDeviceStatus.1 = INTEGER: unknown(1), running(2), warning(3), testing(4), down(5) OID Text format: .iso.org.dod.internet.mgmt.mib-2.host .hrDevice.hrDeviceTable.hrDeviceEntry.hrDeviceStatus.1 OID Numberical format: .1.3.6.1.2.1.25.3.2.1.5.1 The current operational state of the device described by this row of the table. A value unknown(1) indicates that the current state of the device is unknown. running(2) indicates that the device is up and running and that no unusual error conditions are known. The warning(3) state indicates that agent has been informed of an unusual error condition by the operational software (e.g., a disk device driver) but that the device is still 'operational'. An example would be a high number of soft errors on a disk. A value of testing(4), indicates that the device is not available for use because it is in the testing state. The state of down(5) is used only when the agent has been informed that the device is not available for any use. 3.2 hrPrinterStatus HOST-RESOURCES-MIB::hrPrinterStatus.1 = INTEGER: other(1), unknown(2), idle(3), printing(4), warmup(5) OID Text format: .iso.org.dod.internet.mgmt.mib-2.host .hrDevice.hrPrinterTable.hrPrinterEntry.hrPrinterStatus.1 OID Numberical format: .1.3.6.1.2.1.25.3.5.1.1.1 The current status of this printer device. 3.3 prtMarkerLifeCount Printer-MIB::prtMarkerLifeCount.1.1 = Counter32 .iso.org.dod.internet.mgmt.mib-2.printmib .prtMarker.prtMarkerTable.prtMarkerEntry.prtMarkerLifeCount.1.1 .1.3.6.1.2.1.43.10.2.1.4.1.1 This is the number of items that have been marked. There are other fields that tell what the unit values are, and what this measures. Almost always this is the number of impressions, not pages, that have been made by the printer. This is the value of interest for page counts. 3.4 prtConsoleDisplayBufferText Printer-MIB::prtConsoleDisplayBufferText.1.1 = STRING .iso.org.dod.internet.mgmt.mib-2.printmib. .prtConsoleDisplayBuffer.prtConsoleDisplayBufferTable .prtConsoleDisplayBufferEntry.prtConsoleDisplayBufferText.1.1 .1.3.6.1.2.1.43.16.5.1.2.1.1 = STRING The content of a line in the logical display buffer of the operator's console of the printer. When a write operation occurs, normally a critical message, to one of the LineText strings, the agent should make that line displayable if a physical display is present. Writing a zero length string clears the line. It is an implementation-specific matter as to whether the agent allows a line to be overwritten before it has been cleared. Printer generated strings shall be in the localization specified by prtConsoleLocalization. Management Application generated strings should be localized by the Management Application. Briefly, this is the status information that is usually shown on the front panel. By experiment, in most printers it appears to be the same status that is returned by various PJL error reporting facilities. 3.5 Alerts These monitor conditions in the printer. It appears that some printers do not support these conditions, and only report errors using the prtConsoleDisplayBufferText or some other proprietary OID. 3.5.1 prtAlertSeverityLevel Printer-MIB::prtAlertSeverityLevel.1.1 = INTEGER other(1), critical(3), warning(4), warningBinaryChangeEvent(5) .iso.org.dod.internet.mgmt.mib-2.printmib.prtAlert .prtAlertTable.prtAlertEntry.prtAlertSeverityLevel.1.1 .1.3.6.1.2.1.43.18.1.1.2.1.1 = INTEGER: warning(4) The level of severity of this alert table entry. The printer determines the severity level assigned to each entry in the table. A critical alert is binary by nature and definition. A warning is defined to be a non-critical alert. The original and most common warning is unary. The binary warning was added later and given a more distinguished name. 3.5.2 prtAlertGroup Printer-MIB::prtAlertGroup.1.3 = INTEGER other(1), hostResourcesMIBStorageTable(3), hostResourcesMIBDeviceTable(4), generalPrinter(5), cover(6), localization(7), input(8), output(9), marker(10), markerSupplies(11), markerColorant(12), mediaPath(13), channel(14), interpreter(15), consoleDisplayBuffer(16), consoleLights(17), alert(18), finDevice(30), finSupply(31), finSupplyMediaInput(32), finAttributeTable(33) .iso.org.dod.internet.mgmt.mib-2.printmib.prtAlert .prtAlertTable.prtAlertEntry.prtAlertGroup.1.3 = INTEGER .1.3.6.1.2.1.43.18.1.1.4.1.3 = INTEGER The type of sub-unit within the printer model that this alert is related. Input, output, and markers are examples of printer model groups, i.e., examples of types of sub-units. Wherever possible, these enumerations match the sub-identifier that identifies the relevant table in the printer MIB. NOTE: Alert type codes have been added for the host resources MIB storage table and device table. These additional types are for situations in which the printer's storage and device objects must generate alerts (and possibly traps for critical alerts). 3.5.3 prtAlertDescription Printer-MIB::prtAlertDescription.1.1 = STRING .iso.org.dod.internet.mgmt.mib-2.printmib.prtAlert.prtAlertTable .prtAlertEntry.prtAlertDescription.1.1 = STRING .1.3.6.1.2.1.43.18.1.1.8.1.1 = STRING A description of this alert entry in the localization specified by prtGeneralCurrentLocalization. The description is provided by the printer to further elaborate on the enumerated alert or provide information in the case where the code is classified as 'other' or 'unknown'. The printer is required to return a description string but the string may be a null string. 3.6 prtMarkerPowerOnCount Printer-MIB::prtMarkerPowerOnCount.1.1 = Counter32 .iso.org.dod.internet.mgmt.mib-2.printmib.prtMarker .prtMarkerTable.prtMarkerEntry.prtMarkerPowerOnCount.1.1 .1.3.6.1.2.1.43.10.2.1.5.1.1 = Counter32 The count of the number of units of measure counted since the equipment was most recently powered on using units of measure as specified by prtMarkerCounterUnit. 4. Installing SNMP Tools If you are using FreeBSD and have the ports packages, you can simply do: cd /usr/ports/net/p5-Net-SNMP make make install Check to see if you have 'snmpwalk' available on your system: snmpwalk If not, get the NET-SNMP utilities from Sourceforge: http://sourceforge.net/projects/net-snmp/ Follow the simple instructions and install the programs. I recommend using the default locations and install the various libraries and tools in /usr/local/... Now check to make sure that snmpwalk can access your printer: #!/bin/sh V=10.0.0.28 snmpwalk -Cc -v1 -c public -M +/usr/local/share/snmp/mibs -m ALL $V .iso snmpwalk -Cc -v1 -c public -Of -M +/usr/local/share/snmp/mibs -m ALL $V .iso snmpwalk -Cc -v1 -c public -On -M +/usr/local/share/snmp/mibs -m ALL $V .iso Now check to see if you have the Net::SNMP module installed: perl -MNet::SNMP -e exit If not, then you will have to install it. If you are brave, as root you can do: perl -MCPAN -e "install Net::SNMP" If not, then you will have to download all of the reuqired modules and install them one by one. I really recommend using the above approach. You can get a set of printer MIBS from the LPRng Web or FTP Site: ftp://ftp.lprng.com/pub/LPRng/RESOURCES/SNMP_MIBS/mibs.tar.gz Untar these and put them into the default location used by the SNMP software. Candidates include: - /usr/local/share/snmp/mibs - /usr/share/snmp/mibs 5. snmp_printer_status The snmp_printer_status command is really just a cut down version of the snmpwalk command. It queries the printer for the OID values shown above and formats the status information. use: snmp_printer_status [-vps][-t interval][-h ipaddr][-m model][-f config] -v - verbose mode -p - no pagecount -s - show poweron pagecount -t interval - interval in secs between queries (default 1) -h ipaddr - printer ip address or DNS name -m model - model information -f config - configuration file The required parameters are: -h ipaddr or DNS name This can have the format: ip%port or hostname%port to be compatible with LPRng Example of use: h110: {785} % snmp_printer_status -h 10.0.0.31 PRINTERSTATUS= idle DEVICESTATUS= unknown STATUS= READY PAGECOUNT= 12532 << NEWLINE entered PRINTERSTATUS= idle DEVICESTATUS= unknown STATUS= READY PAGECOUNT= 12532 The PRINTERSTATUS, DEVICESTATUS, STATUS, and PAGECOUNT are simply the values report by the Printer Agent. The snmp_printer_status periodically queries the printer, checking to see if any have changed. If they have, the new values are printed out. When the program reads a line of input it reads the MIB values and dumps them out again. If the prAlert MIB OID's are supported, you can monitor these as well: h110: {787} % snmp_printer_status -h 10.0.0.28 STATUS= level: warning group: input message: Input Tray Low STATUS= level: warning group: input message: Input Tray Low STATUS= level: warningBinaryChangeEvent group: generalPrinter message: Power Saver PRINTERSTATUS= other DEVICESTATUS= unknown STATUS= Power Save Mode PAGECOUNT= 93162 The snmp_printer_status.conf file has a set of configuration values for the snmp_printer_status program: [snmp_params] community="public" timeout="2" retries="2" > [ printerdata default] alert_oid =".1.3.6.1.2.1.43.18.1.1" prtAlertSeverityLevel = ".1.3.6.1.2.1.43.18.1.1.2.1" prtAlertDescription = ".1.3.6.1.2.1.43.18.1.1.8.1" prtAlertGroup = ".1.3.6.1.2.1.43.18.1.1.4.1" pagecount_oid=".1.3.6.1.2.1.43.10.2.1.4.1" poweroncount_oid=".1.3.6.1.2.1.43.10.2.1.5.1.1" devicestatus_oid=".1.3.6.1.2.1.25.3.2.1.5.1" printerstatus_oid=".1.3.6.1.2.1.25.3.5.1.1.1" # This should report console or other status status_oid=".1.3.6.1.2.1.43.16.5.1.2.1.1" [ status devicestatus_oid ] other="1" unknown="2" idle="3" printing="4" warmup="5" [ status printerstastus_oid] other="1" unknown="2" idle="3" printing="4" warmup="5"> [ status alertseveritylevel_oid] other="1" critical="3" warning="4" warningBinaryChangeEvent="5"> [ status alertgroup_oid ] other="1" hostResourcesMIBStorageTable="3" hostResourcesMIBDeviceTable="4" generalPrinter="5" cover="6" localization="7" input="8" output="9" marker="10" markerSupplies="11" markerColorant="12" mediaPath="13" channel="14" interpreter="15" consoleDisplayBuffer="16" consoleLights="17" alert="18" finDevice="30" The snmp_parms section sets parameter values for the SNMP queries. The section defines the OID values to be used for fetching status. The name parameter set the name of the various entries. The other entries are used to decode the SNMP return values into user strings. 7. IFHP and snmp_printer_status The use of snmp for getting printer status has been merged into the ifhp baseline distribution. Here are the changes to the ifhp.conf file: #--- START SNMP monitoring # if you want to use SNMP monitoring then use the snmp_printer_status # program. This program will report the status of a printer # by polling it using SNMP. Status will be read from both the # back channel (i.e. - connection to printer) and from the SNMP # monitoring program. snmp_monitor@ snmp_program=/usr/local/libexec/filters/snmp_printer_status -h "\%s{dev}" -m "\%s{snmp_model}" # the snmp_printer_status.conf file has entries to specify the # SNMP Object Identifiers (OIDs) for variuos printers # The default is to use the standard Printer MIB entries for status. # Again, you should look at the code and modify the entries for your # printer. snmp_model=default # when we get status, we look for the following words in the # status to indicate that the printer is ready and/or idle. # Spaces in the status are replaced by underscores if necessary snmp_sync_status=ready power_save_mode snmp_end_status=ready idle #--- END SNMP monitoring # ... sync # use SNMP status for idle condition monitoring sync=snmp # ... waitend # use SNMP status for end of job detection sync=snmp # ... Pagecount # use SNMP pagecount status for pagecount monitoring pagecount=snmp # when we get status, we look for the following words in the # status to indicate that the printer is ready and/or idle. # Spaces in the status are replaced by underscores if necessary snmp_sync_status=ready power_save_mode snmp_end_status=ready idle When you use SNMP monitoring you can use it to do SYNC, PAGECOUNT, or WAITEND as the status will be determined by the snmp_printer_status program. SYNC Condition: STATUS= value in the snmp_sync_status list END Condition: STATUS= value in the snmp_end_status list The PAGECOUNT value is reoprted only when conditions are appropriate to an end of job: No error condition and: DEVICESTATUS != 'down' and DEVICESTATUS != 'testing' and PRINTERSTATUS != 'printing' and PRINTERSTATUS != 'unknown' The ifhp filter will use snmp_printer_status to get the current printer status. The following set of options has been tried and seems to work: 8. Testing ifhp and snmp_printer_status Use the following test script. Edit it and set the appropriate values. #!/bin/sh # test ifhp + snmp # location of ifhp ifhp=/usr/local/libexec/filters/ifhp out=/tmp/out if [ -f "$out" ] ; then cp /dev/null $out ; fi # replace with your printers IP address # and port number out=10.0.0.31%9100 debug=4 # lots of debug=1 # simple debugging debug=0 # no debugging config=/usr/local/etc/ifhp.conf file=/usr/local/libexec/filters/UTILS/one.ps # set the option you want options=snmp_monitor,appsocket,close_connection,pjl_console@ options=snmp_monitor,appsocket,close_connection options=snmp_monitor,appsocket options=snmp_monitor $ifhp "-Tdev=$out,trace,config=$config,debug=$debug,model=$model,$options" <$file 2>&1 | tee /tmp/log Here is a sample of the output to an HP printer using options=snmp_monitor: h110: {47} % sh /tmp/sendhp.sh ifhp 15:42:47.203 [60711] main: using model '' ifhp 15:42:47.211 [60711] Check_pagecount: pagecount using 'snmp' ifhp 15:42:47.216 [60711] Process_job: setting up printer ifhp 15:42:47.226 [60711] Do_sync: getting sync using 'snmp' ifhp 15:42:47.536 [60711] Check_device_status: printerstatus = 'idle' ifhp 15:42:47.569 [60711] Check_device_status: devicestatus = 'unknown' ifhp 15:42:47.604 [60711] Check_device_status: status = 'READY' ifhp 15:42:47.604 [60711] Do_sync: sync done ifhp 15:42:47.639 [60711] Do_pagecount: pagecounter 12533 after 1 attempts ifhp 15:42:47.639 [60711] Do_accounting: pagecounter 12533 ifhp 15:42:47.640 [60711] Process_job: sending job file ifhp 15:42:47.640 [60711] Send_job: starting transfer ifhp 15:42:47.641 [60711] Send_job: initial job type 'POSTSCRIPT' ifhp 15:42:47.641 [60711] Send_job: decoded job type 'POSTSCRIPT' ifhp 15:42:47.641 [60711] Send_job: foomatic enabled and no PPD file specified ifhp 15:42:47.641 [60711] Send_job: job type 'POSTSCRIPT' ifhp 15:42:47.642 [60711] Send_job: transferring 145 bytes ifhp 15:42:47.642 [60711] Send_job: 100 percent done ifhp 15:42:47.642 [60711] Process_job: sent job file ifhp 15:42:47.642 [60711] Do_waitend: getting end using 'snmp' ifhp 15:42:48.331 [60711] Do_waitend: end of job detected ifhp 15:42:49.099 [60711] Check_device_status: id = '"HP LaserJet 2200"' ifhp 15:42:49.886 [60711] Check_device_status: printerstatus = 'printing' ifhp 15:42:49.954 [60711] Check_device_status: status = 'PRINTING DOCUMENT' ifhp 15:43:05.846 [60711] Check_device_status: printerstatus = 'idle' ifhp 15:43:05.948 [60711] Do_pagecount: pagecounter 12534 after 1 attempts ifhp 15:43:05.949 [60711] Do_accounting: pagecounter 12534, pages 1 ifhp 15:43:05.949 [60711] Process_job: done Here is a sample of output to another printer: fhp 17:17:35.690 [61562] main: using model '' ifhp 17:17:36.303 [61562] Check_pagecount: pagecount using 'snmp' ifhp 17:17:36.313 [61562] Process_job: setting up printer ifhp 17:17:36.323 [61562] Do_sync: getting sync using 'snmp' ifhp 17:17:36.571 [61562] Check_device_status: devicedescr = 'Sharp AR-507/S507' ifhp 17:17:36.607 [61562] Check_device_status: printername = 'Sharp' ifhp 17:17:36.981 [61562] Check_device_status: status = 'level: warning group: input message: Input Tray Low' ifhp 17:17:36.981 [61562] Check_device_status: status = 'level: warning group: input message: Input Tray Low' ifhp 17:17:36.982 [61562] Check_device_status: status = 'level: warningBinaryChangeEvent group: generalPrinter message: Power Saver' ifhp 17:17:38.379 [61562] Check_device_status: printerstatus = 'other' ifhp 17:17:38.414 [61562] Check_device_status: devicestatus = 'unknown' ifhp 17:17:38.445 [61562] Check_device_status: status = 'Power Save Mode' ifhp 17:17:38.447 [61562] Do_sync: sync done ifhp 17:17:38.475 [61562] Do_pagecount: pagecounter 93168 after 1 attempts ifhp 17:17:38.475 [61562] Do_accounting: pagecounter 93168 ifhp 17:17:38.476 [61562] Process_job: sending job file ifhp 17:17:38.476 [61562] Send_job: starting transfer ifhp 17:17:38.477 [61562] Send_job: initial job type 'POSTSCRIPT' ifhp 17:17:38.477 [61562] Send_job: decoded job type 'POSTSCRIPT' ifhp 17:17:38.477 [61562] Send_job: foomatic enabled and no PPD file specified ifhp 17:17:38.477 [61562] Send_job: job type 'POSTSCRIPT' ifhp 17:17:38.478 [61562] Send_job: transferring 145 bytes ifhp 17:17:38.478 [61562] Send_job: 100 percent done ifhp 17:17:38.478 [61562] Process_job: sent job file ifhp 17:17:38.479 [61562] Do_waitend: getting end using 'snmp' ifhp 17:17:41.521 [61562] Check_device_status: status = 'level: warningBinaryChangeEvent group: generalPrinter message: Power Saver CLEARED' ifhp 17:17:42.807 [61562] Check_device_status: printerstatus = 'printing' ifhp 17:17:42.863 [61562] Check_device_status: status = 'Printer: Receiving data' ifhp 17:18:35.473 [61562] Check_device_status: status = 'Printer: Printing in progress' 9. Problem Printers The main problem encountered using SNMP for status is that some printers do not seem to either update their SNMP status in sync with the printing activity. The PJL reverse channel may report printing completed while the SNMP agent will still report it as active. In addition, the agent is 'slow' at startup. For example, the job may actually be transferred to the printer before the agent has seen any status change. To deal with this, various experiments have been tried. The most successful seems to be to use 'appsocket' printing, ie, to have the ifhp process open and close the TCP/IP connection. This has the side effect of forcing an end of connection action that seems to make most printer SNMP agents update the status. Also, there is a slight delay in the close operation that may have the same effect. Another issue that has surfaced is that some printers have defective TCP/IP stacks that cannot handle a shutdown() on a TCP/IP connection. These require the use of the (previously undocumented) close_connect flag. Finally, there are printers that do not correctly report 'end of printing' activity using PJL. These may be better handled using the 'appsocket' and SNMP approach. 8. LPRng and IFHP The following printcap options seem to yeild the best results. lp: :lp=10.0.0.14%9100 # You must use socket protocol. :... # this work for many printers that have 'sane' network connections :ifhp=snmp_monitor # For problem printers that report End of Job early, # you may need to do this to force an 'end of job' condition :ifhp=snmp_monitor,appsocket # some printers will require that you close the connection # as their TCP/IP stacks are broken and they cannot handle # a shutdown :ifhp=snmp_monitor,appsocket,close_connection snmp_monitor - use the snmp to get the status appsocket - you need to force the connection open and closed. This appears to solve some issues with jobs not completing and the SNMP status indicates 'printing' close_connection - this may be necessary to force the end of job condition on some printers. Experimental Results: :ifhp=snmp_monitor worked on 3 different HP printers :ifhp=snmp_monitor,appsocket worked on printers that required appsocket. It also seemed to report end of job much better. :ifhp=snmp_monitor,appsocket,close_connection worked on printers that required appsocket AND required the connection to be closed for end of job to be detected. Several MOPIERS fell into this group, as the copier/printer would only change mode from copy to printing once it had the entire job, or sufficient number of pages to cause it to print. ifhp-3.5.20/README.UTILITYPROGRAMS0100644000175100017510000000577610130541263016171 0ustar papowellpapowell Utility Programs Used By IFHP Tue Apr 13 21:39:23 PDT 1999 I recommend the following utility programs for use with LPRng. They seem to be the 'best of their breed', at least for this week: A2PS - Ascii Text to PostScript Converter http://www-inf.enst.fr/~demaille/a2ps ftp://ftp.enst.fr/pub/unix/a2ps/ a2ps is an Any to PostScript filter. It started as a Text to PostScript converter, with pretty printing features and all the expected features from this kind of programs. But today, it is also able to deal with other file types (PostScript, Texinfo, compressed, whatever...) provided you have the necessary tools. Some samples of its Text to PostScript feature are available: in plain style, or in the gray style (and its alternative gray2), or with colors. (Remember! Sometimes you can't trust too much ghostview: print it, then evaluate!) You can even see more samples! (they are old though, and don't reflect very well everything that can be done.) GNU enscript http://www.gnu.org - following links to ftp mirror site This is similar to a2ps, but with a more limited set of functionality. file - utility to determine file type ftp://ftp.astron.com/pub/file/ ftp.deshaw.com/pub/file/ OR a copy can be obtained from: ftp://ftp.lprng.com/pub/LPRng/UNIXTOOLS/file/ Also available from the RedHat.com SRPMS in (of course) rpm format FILE(1) FILE(1) NAME file - determine file type SYNOPSIS file [ -vczL ] [ -f namefile ] [ -m magicfiles ] file ... DESCRIPTION This manual page documents version 3.21 of the file com- mand. File tests each argument in an attempt to classify it. There are three sets of tests, performed in this order: filesystem tests, magic number tests, and language tests. The first test that succeeds causes the file type to be printed. The type printed will usually contain one of the words text (the file contains only ASCII characters and is prob- ably safe to read on an ASCII terminal), executable (the file contains the result of compiling a program in a form understandable to some UNIX kernel or another), or data meaning anything else (data is usually `binary' or non- printable). Exceptions are well-known file formats (core files, tar archives) that are known to contain binary data. When modifying the file /usr/share/misc/magic or the program itself, preserve these keywords . People depend on knowing that all the readable files in a direc- tory have the word ``text'' printed. Don't do as Berkeley did - change ``shell commands text'' to ``shell script''. GhostScript - PostScript converter http://www.ghostscript.org http://www.cs.wisc.edu/~ghost/index.html http://www.ghost.com/ Does conversion from PostScript and PDF to a wide range of other formats, including those compatible with various printers. ifhp-3.5.20/STANDARD_configuration0100644000175100017510000000037610130541263017035 0ustar papowellpapowell#!/bin/sh if [ -d /usr/share/man ] ; then mandir="--mandir=/usr/share/man" fi ./configure --prefix=/usr --sysconfdir=/etc $mandir --disable-shared \ LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" \ --enable-nls # --with-included-gettext \ ifhp-3.5.20/ABOUT-NLS0100644000175100017510000013023510130541262014207 0ustar papowellpapowellNotes on the Free Translation Project ************************************* Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work at translations should contact the appropriate team. When reporting bugs in the `intl/' directory or bugs which may be related to internationalization, you should tell about the version of `gettext' which is used. The information can be found in the `intl/VERSION' file, in internationalized packages. Quick configuration advice ========================== If you want to exploit the full power of internationalization, you should configure it using ./configure --with-included-gettext to force usage of internationalizing routines provided within this package, despite the existence of internationalizing capabilities in the operating system where this package is being installed. So far, only the `gettext' implementation in the GNU C library version 2 provides as many features (such as locale alias, message inheritance, automatic charset conversion or plural form handling) as the implementation here. It is also not possible to offer this additional functionality on top of a `catgets' implementation. Future versions of GNU `gettext' will very likely convey even more functionality. So it might be a good idea to change to GNU `gettext' as soon as possible. So you need _not_ provide this option if you are using GNU libc 2 or you have installed a recent copy of the GNU gettext package with the included `libintl'. INSTALL Matters =============== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. If not, the GNU `gettext' own library will be used. This library is wholly contained within this package, usually in the `intl/' subdirectory, so prior installation of the GNU `gettext' package is _not_ required. Installers may use special options at configuration time for changing the default behaviour. The commands: ./configure --with-included-gettext ./configure --disable-nls will respectively bypass any pre-existing `gettext' to use the internationalizing routines provided within this package, or else, _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl.a' file and will decide to use this. This might be not what is desirable. You should use the more recent version of the GNU `gettext' library. I.e. if the file `intl/VERSION' shows that the library which comes with this package is more recent, you should use ./configure --with-included-gettext to prevent auto-detection. The configuration process will not test for the `catgets' function and therefore it will not be used. The reason is that even an emulation of `gettext' on top of `catgets' could not provide all the extensions of the GNU `gettext' library. Internationalized packages have usually many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. Using This Package ================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your country by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. Translating Teams ================= For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `translation@iro.umontreal.ca' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skill are praised more than programming skill, here. Available Packages ================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of December 2003. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files am az be bg ca cs da de el en en_GB eo es +-------------------------------------------+ a2ps | [] [] [] [] | aegis | () | ant-phone | () | anubis | | ap-utils | | bash | [] [] [] [] | batchelor | | bfd | [] [] | binutils | [] [] | bison | [] [] [] | bluez-pin | [] [] | clisp | | clisp | [] [] [] | coreutils | [] [] [] [] | cpio | [] [] [] | darkstat | [] () [] | diffutils | [] [] [] [] [] [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] | error | [] [] [] [] [] | fetchmail | [] () [] [] [] [] | fileutils | [] [] [] | findutils | [] [] [] [] [] [] [] | flex | [] [] [] [] | fslint | | gas | [] | gawk | [] [] [] [] | gbiff | [] | gcal | [] | gcc | [] [] | gettext | [] [] [] [] [] | gettext-examples | [] [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] | gimp-print | [] [] [] [] [] | gliv | | glunarclock | [] [] | gnubiff | [] | gnucash | [] () [] [] | gnucash-glossary | [] () [] | gnupg | [] () [] [] [] [] | gpe-aerial | [] | gpe-beam | [] [] | gpe-calendar | [] [] | gpe-clock | [] [] | gpe-conf | [] [] | gpe-contacts | [] [] | gpe-edit | [] | gpe-go | [] | gpe-login | [] [] | gpe-ownerinfo | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] | gpe-taskmanager | [] [] | gpe-timesheet | [] | gpe-today | [] [] | gpe-todo | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] | gpsdrive | () () () | gramadoir | [] | grep | [] [] [] [] [] [] | gretl | [] | gtick | () | hello | [] [] [] [] [] [] | id-utils | [] [] | indent | [] [] [] [] | jpilot | [] [] [] | jtag | | jwhois | [] | kbd | [] [] [] [] [] | latrine | () | ld | [] [] | libc | [] [] [] [] [] [] | libgpewidget | [] [] | libiconv | [] [] [] [] [] | lifelines | [] () | lilypond | [] | lingoteach | | lingoteach_lessons | () () | lynx | [] [] [] [] | m4 | [] [] [] [] | mailutils | [] [] | make | [] [] [] | man-db | [] () [] [] () | minicom | [] [] [] | mysecretdiary | [] [] [] | nano | [] () [] [] [] | nano_1_0 | [] () [] [] [] | opcodes | [] | parted | [] [] [] [] [] | ptx | [] [] [] [] [] | python | | radius | [] | recode | [] [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] [] [] [] [] [] | sed | [] [] [] [] [] | sh-utils | [] [] [] | shared-mime-info | | sharutils | [] [] [] [] [] [] | silky | () | skencil | [] () [] | sketch | [] () [] | soundtracker | [] [] [] | sp | [] | tar | [] [] [] [] | texinfo | [] [] [] | textutils | [] [] [] [] | tin | () () | tuxpaint | [] [] [] [] [] [] [] | util-linux | [] [] [] [] [] | vorbis-tools | [] [] [] [] | wastesedge | () | wdiff | [] [] [] [] | wget | [] [] [] [] [] [] | xchat | [] [] [] [] | xfree86_xkb_xml | [] | xpad | [] | +-------------------------------------------+ am az be bg ca cs da de el en en_GB eo es 0 0 8 3 37 38 56 73 15 1 5 12 64 et fa fi fr ga gl he hr hu id is it ja +----------------------------------------+ a2ps | [] [] [] () | aegis | | ant-phone | | anubis | [] | ap-utils | [] | bash | [] [] | batchelor | [] | bfd | [] | binutils | [] [] | bison | [] [] [] [] | bluez-pin | [] [] [] [] [] | clisp | | clisp | [] | coreutils | [] [] [] [] [] [] | cpio | [] [] [] | darkstat | () [] [] [] | diffutils | [] [] [] [] [] [] [] | e2fsprogs | | enscript | [] [] | error | [] [] [] [] | fetchmail | [] | fileutils | [] [] [] [] [] [] | findutils | [] [] [] [] [] [] [] [] [] [] | flex | [] [] | fslint | | gas | [] | gawk | [] [] [] | gbiff | | gcal | [] | gcc | [] | gettext | [] [] | gettext-examples | [] [] | gettext-runtime | [] [] [] [] | gettext-tools | [] [] | gimp-print | [] [] | gliv | () | glunarclock | [] [] [] [] | gnubiff | | gnucash | () [] | gnucash-glossary | [] | gnupg | [] [] [] [] [] [] [] | gpe-aerial | [] | gpe-beam | [] | gpe-calendar | [] [] [] | gpe-clock | [] | gpe-conf | [] | gpe-contacts | [] [] | gpe-edit | [] [] | gpe-go | [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] | gpe-sketchbook | [] | gpe-su | [] | gpe-taskmanager | [] | gpe-timesheet | [] [] [] | gpe-today | [] [] | gpe-todo | [] [] | gphoto2 | [] [] [] | gprof | [] [] | gpsdrive | () [] () () | gramadoir | [] | grep | [] [] [] [] [] [] [] [] [] [] [] | gretl | [] | gtick | [] [] | hello | [] [] [] [] [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] | indent | [] [] [] [] [] [] [] [] [] | jpilot | [] () | jtag | | jwhois | [] [] [] [] | kbd | [] | latrine | | ld | [] | libc | [] [] [] [] [] | libgpewidget | [] [] [] [] | libiconv | [] [] [] [] [] [] [] [] [] | lifelines | () | lilypond | [] | lingoteach | [] [] | lingoteach_lessons | | lynx | [] [] [] [] | m4 | [] [] [] [] | mailutils | | make | [] [] [] [] [] | man-db | () () | minicom | [] [] [] [] | mysecretdiary | [] [] | nano | [] [] [] [] | nano_1_0 | [] [] [] [] | opcodes | [] | parted | [] [] [] | ptx | [] [] [] [] [] [] [] | python | | radius | [] | recode | [] [] [] [] [] [] | rpm | | screem | | scrollkeeper | [] | sed | [] [] [] [] [] [] [] [] [] | sh-utils | [] [] [] [] [] [] [] | shared-mime-info | [] | sharutils | [] [] [] [] [] | silky | [] () | skencil | [] | sketch | [] | soundtracker | [] [] [] [] | sp | [] () | tar | [] [] [] [] [] [] [] [] [] | texinfo | [] [] [] [] | textutils | [] [] [] [] [] | tin | [] () | tuxpaint | [] [] [] [] [] [] [] [] | util-linux | [] [] [] [] () [] | vorbis-tools | [] | wastesedge | () | wdiff | [] [] [] [] [] [] | wget | [] [] [] [] [] [] [] | xchat | [] [] [] | xfree86_xkb_xml | | xpad | [] | +----------------------------------------+ et fa fi fr ga gl he hr hu id is it ja 21 1 25 86 24 24 8 10 38 31 1 23 32 ko lg lt lv ms nb nl nn no pl pt pt_BR ro +-------------------------------------------+ a2ps | () [] [] () () [] [] | aegis | () () | ant-phone | [] [] | anubis | [] [] [] [] [] | ap-utils | [] () [] | bash | [] [] | batchelor | [] | bfd | [] | binutils | | bison | [] [] [] [] | bluez-pin | [] [] [] | clisp | | clisp | [] | coreutils | [] | cpio | [] [] [] [] [] | darkstat | [] [] [] [] | diffutils | [] [] [] [] | e2fsprogs | [] | enscript | [] [] [] | error | [] [] [] | fetchmail | [] [] () | fileutils | [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] | fslint | [] [] | gas | | gawk | [] [] [] | gbiff | [] [] | gcal | | gcc | | gettext | [] [] [] | gettext-examples | [] [] | gettext-runtime | [] [] [] | gettext-tools | [] [] [] | gimp-print | [] | gliv | [] [] [] | glunarclock | [] [] [] | gnubiff | | gnucash | [] [] () | gnucash-glossary | [] [] | gnupg | [] | gpe-aerial | [] [] [] | gpe-beam | [] [] [] | gpe-calendar | [] [] [] | gpe-clock | [] [] [] | gpe-conf | [] [] [] | gpe-contacts | [] [] [] | gpe-edit | [] [] [] | gpe-go | [] [] | gpe-login | [] [] [] | gpe-ownerinfo | [] [] [] | gpe-sketchbook | [] [] [] | gpe-su | [] [] [] | gpe-taskmanager | [] [] [] | gpe-timesheet | [] [] [] | gpe-today | [] [] [] | gpe-todo | [] [] [] | gphoto2 | [] | gprof | [] [] | gpsdrive | () () () [] | gramadoir | [] | grep | [] [] [] [] | gretl | | gtick | [] [] | hello | [] [] [] [] [] [] [] [] [] [] | id-utils | [] [] [] | indent | [] [] [] | jpilot | () () | jtag | | jwhois | [] [] [] [] | kbd | [] [] [] | latrine | [] | ld | | libc | [] [] [] [] [] | libgpewidget | [] [] [] | libiconv | [] [] [] [] | lifelines | | lilypond | | lingoteach | | lingoteach_lessons | | lynx | [] [] | m4 | [] [] [] [] | mailutils | [] [] | make | [] [] [] [] | man-db | [] | minicom | [] [] [] | mysecretdiary | [] [] [] | nano | [] [] [] [] | nano_1_0 | [] [] [] [] [] | opcodes | [] [] | parted | [] [] [] [] | ptx | [] [] [] [] [] [] [] | python | | radius | [] | recode | [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] [] [] [] | sed | [] [] [] | sh-utils | [] | shared-mime-info | [] | sharutils | [] | silky | | skencil | [] [] | sketch | [] [] | soundtracker | | sp | | tar | [] [] [] [] [] [] | texinfo | [] [] [] | textutils | [] [] | tin | | tuxpaint | [] [] [] [] [] [] [] [] [] | util-linux | [] [] | vorbis-tools | [] [] | wastesedge | | wdiff | [] [] [] [] | wget | [] [] | xchat | [] [] | xfree86_xkb_xml | [] | xpad | [] [] | +-------------------------------------------+ ko lg lt lv ms nb nl nn no pl pt pt_BR ro 12 0 1 2 12 10 60 4 4 38 25 35 76 ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW +-------------------------------------------+ a2ps | [] [] [] [] [] | 16 aegis | () | 0 ant-phone | | 2 anubis | [] [] [] | 9 ap-utils | () | 3 bash | [] | 9 batchelor | | 2 bfd | [] [] | 6 binutils | [] [] [] | 7 bison | [] [] [] | 14 bluez-pin | [] [] [] | 13 clisp | | 0 clisp | | 5 coreutils | [] [] [] [] [] | 16 cpio | [] [] [] | 14 darkstat | [] [] [] () () | 12 diffutils | [] [] [] [] | 22 e2fsprogs | [] [] | 5 enscript | [] [] [] | 12 error | [] [] [] | 15 fetchmail | [] [] [] | 11 fileutils | [] [] [] [] [] [] | 17 findutils | [] [] [] [] [] [] [] | 29 flex | [] [] [] | 13 fslint | | 2 gas | [] | 3 gawk | [] [] | 12 gbiff | | 3 gcal | [] [] | 4 gcc | [] | 4 gettext | [] [] [] [] [] [] | 16 gettext-examples | [] [] [] [] | 11 gettext-runtime | [] [] [] [] [] [] [] [] [] | 21 gettext-tools | [] [] [] [] [] [] | 14 gimp-print | [] [] | 10 gliv | | 3 glunarclock | [] [] [] [] | 13 gnubiff | | 1 gnucash | [] [] [] | 9 gnucash-glossary | [] [] [] | 8 gnupg | [] [] [] [] | 17 gpe-aerial | [] [] | 7 gpe-beam | [] [] | 8 gpe-calendar | [] [] [] [] [] | 13 gpe-clock | [] [] [] [] | 10 gpe-conf | [] [] [] | 9 gpe-contacts | [] [] [] [] | 11 gpe-edit | [] [] [] [] [] [] | 12 gpe-go | [] | 5 gpe-login | [] [] [] [] [] [] | 13 gpe-ownerinfo | [] [] [] [] [] | 13 gpe-sketchbook | [] [] [] | 9 gpe-su | [] [] [] [] | 10 gpe-taskmanager | [] [] [] [] | 10 gpe-timesheet | [] [] [] [] [] | 12 gpe-today | [] [] [] [] [] [] | 13 gpe-todo | [] [] [] [] [] | 12 gphoto2 | [] [] [] | 11 gprof | [] [] | 9 gpsdrive | [] [] | 4 gramadoir | | 3 grep | [] [] [] [] [] | 26 gretl | | 2 gtick | [] | 5 hello | [] [] [] [] [] | 33 id-utils | [] [] [] | 12 indent | [] [] [] [] [] | 21 jpilot | [] [] [] [] [] | 9 jtag | [] | 1 jwhois | () () [] [] | 11 kbd | [] [] | 11 latrine | | 1 ld | [] [] | 5 libc | [] [] [] [] | 20 libgpewidget | [] [] [] [] | 13 libiconv | [] [] [] [] [] [] [] [] [] | 27 lifelines | [] | 2 lilypond | [] | 3 lingoteach | | 2 lingoteach_lessons | () | 0 lynx | [] [] [] [] | 14 m4 | [] [] [] | 15 mailutils | [] | 5 make | [] [] [] [] | 16 man-db | [] | 5 minicom | [] | 11 mysecretdiary | [] [] | 10 nano | [] [] [] [] [] | 17 nano_1_0 | [] [] [] [] | 17 opcodes | [] [] | 6 parted | [] [] [] | 15 ptx | [] [] [] | 22 python | | 0 radius | [] | 4 recode | [] [] [] [] | 20 rpm | [] [] [] | 7 screem | [] [] | 2 scrollkeeper | [] [] [] [] | 15 sed | [] [] [] [] [] [] | 23 sh-utils | [] [] [] | 14 shared-mime-info | [] [] | 4 sharutils | [] [] [] [] [] | 17 silky | () | 2 skencil | [] | 6 sketch | [] | 6 soundtracker | [] [] | 9 sp | [] | 3 tar | [] [] [] [] [] | 24 texinfo | [] [] [] [] | 14 textutils | [] [] [] [] [] | 16 tin | | 1 tuxpaint | [] [] [] [] [] | 29 util-linux | [] [] [] | 15 vorbis-tools | [] | 8 wastesedge | | 0 wdiff | [] [] [] [] | 18 wget | [] [] [] [] [] [] [] [] | 23 xchat | [] [] [] [] [] | 14 xfree86_xkb_xml | [] [] [] [] [] [] | 8 xpad | | 4 +-------------------------------------------+ 51 teams ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW 120 domains 59 42 16 25 81 0 56 12 1 10 21 22 1260 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If December 2003 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. Using `gettext' in new packages =============================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `translation@iro.umontreal.ca' to make the `.pot' files available to the translation teams. ifhp-3.5.20/README.ADDING.PRINTER.CONFIG0100644000175100017510000000325710130541262016656 0ustar papowellpapowell Adding a Printer Configuration to ifhp.conf Patrick Powell Thu Jun 13 07:36:36 PDT 2002 Introduction This note discusses how to add a printer to the ifhp configuration file. There are extensive notes on the details of the various steps covered here in the ifhp.conf file as well as the IFHP HOWTO documentation. Step 1 - Adding To An Existing Printer Entry Determine if the printer is one of several in a family. This is usually the case, and it is surprising how often printers obey the same command set as another printer, with only a few new or added commands. If this is the case, then you can usually just put an alias in the ifhp.conf file: # PRINTER raster99 - Raster Blaster 99 - PS, PCL [ raster99 ] ... # PRINTER raster99 - Raster Blaster 99 - PS, PCL # PRINTER raster1099 - Raster Blaster 1099 - PS, PCL [ raster99 raster1099 ] ... Now you need to regenerate the ifhp.conf file: cd .../ifhp make update config.status (or rerun configure) Step 2 - Creating A New Printer Entry The level of complexity of this process depends on how sophisticated your printer is and the level of control over the various options you want to exercise. The following is a list of the things needed to be done. 2.1 - PostScript Not Supported You will need to find a way to convert PostScript to the printer language. Start by looking at the latest version of the GhostScript interpreter. You can then use one of the entries in the ifhp.conf file as a template. 2.3 - PCL Not Supported Good luck if you need PCL. You can try GhostPCL and see if it works for you: http://www.artifex.com/ --------- Work In Progress ---- More to be added. Patrick Powell ifhp-3.5.20/ABOUT-NLS.ifhp0100644000175100017510000000217610130541262015136 0ustar papowellpapowell Internationalization and gettext Patrick Powell Fri Sep 5 13:01:06 PDT 2003 Internationalization is done using the gettext packages. There are three possibilities to use this functionality: a) no internationalization (default) ./configure b) nationalization if system supports it and gettext installed on your system: ./configure --enable-nls You may discover that system support for NLS has been put into /usr/local/{include,lib}. Sometimes the C compiler does not search these directories by default and you will need to use: configure 'CPPFLAGS=-I/usr/local/include' \ 'LDFLAGS=-L/usr/local/lib' --enable-nls How to Install the gettext software: 1. Get the gettext distribution and install it on your local system ftp://prep.ai.mit.edu/pub/gnu/gettext- Unpack it by using: tar zxvf gettext-.tgz cd gettext- Read the documentation. It is pretty straight forward with respect to installation. 2. Create and/or update the configuration information using the CREATE_CONFIGURE script in the source directory: sh CREATE_CONFIGURE ifhp-3.5.20/README.foomatic0100644000175100017510000000334010130541263015435 0ustar papowellpapowell Foomatic Filter Support Patrick Powell Mon Oct 20 03:47:01 PDT 2003 1. Overview The foomatic-rip filter provides support for a wide range of printers, but does not provide the extensive monitoring and communication support of the ifhp filter. The combination of the foomatic filters and ifhp makes a powerful combination. The foomatic-rip filter and documentation can be obtained from: www.linuxprintinging.org The foomatic-rip filter uses a PostScript Printer Description (PPD) file to do its configuration. The file appropriate to a printer can be downloaded from www.linuxprintinging.org, either as an individual file or as a group. You can also use a regular PPD file appropriate to your printer. Older versions of foomatic-rip did not have easy or simple support for LPRng, but newer versions should have added support. If your version of foomatic-rip does not have support the configuration methods shown below, a modified version is available from: http://www.lprng.com/foomatic 2. Configuring ifhp for foomatic To use the foomatic-rip filter, you need to enable foomatic support during configuration. By default, it is enabled: configure --help ... --disable-foomatic disable foomatic support --with-foomatic-rip=PATH path to foomatic-rip 3. PPD File Specification The PPD file can be specified in several ways: lp: :if=ifhp :ppd=/usr/share/ppd/hp-laserjet-4.ppd OR lp: :if=ifhp :ifhp=model=hplj4,ppd=/usr/share/ppd/hp-laserjet-4.ppd OR in the ifhp.conf file: [ hplj4 ] ppd=/usr/share/ppd/hp-laserjet-4.ppd 3. Testing PPD Files You can test to see if your PPD file is compatible by using: foomatic-rip -d --ppd /usr/share/ppd/hp-laserjet-4.ppd ifhp-3.5.20/config.h.in~0100644000175100017510000003541210017142646015211 0ustar papowellpapowell/* config.h.in. Generated from configure.in by autoheader. */ /* target CPU */ #undef ARCHITECTURE /* DEC ALPHA version */ #undef DECALPHA /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* Define to 1 if you have the header file. */ #undef HAVE_AOUTHDR_H /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_INET_H /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_NAMESER_H /* Define to 1 if you have the header file. */ #undef HAVE_AR_H /* Define to 1 if you have the header file. */ #undef HAVE_ASSERT_H /* Define to 1 if you have the header file. */ #undef HAVE_A_OUT_H /* broken tiocexcl */ #undef HAVE_BROKEN_TIOCEXCL /* Define to 1 if you have the `cfsetispeed' function. */ #undef HAVE_CFSETISPEED /* Define to 1 if you have the header file. */ #undef HAVE_COMPAT_H /* Define to 1 if you have the header file. */ #undef HAVE_COM_ERR_H /* Define to 1 if you have the header file. */ #undef HAVE_CTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_CTYPE_H /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* have errno decl */ #undef HAVE_DECL_ERRNO /* have sys_errlist decl */ #undef HAVE_DECL_SYS_ERRLIST /* have sys_nerr decl */ #undef HAVE_DECL_SYS_NERR /* Define to 1 if you have the header file. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT /* have errno */ #undef HAVE_ERRNO /* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H /* Define to 1 if you have the header file. */ #undef HAVE_EXECHDR_H /* Define to 1 if you have the `fcntl' function. */ #undef HAVE_FCNTL /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the header file. */ #undef HAVE_FILEHDR_H /* Define to 1 if you have the `flock' function. */ #undef HAVE_FLOCK /* have flock def */ #undef HAVE_FLOCK_DEF /* Define to 1 if you have the `fork' function. */ #undef HAVE_FORK /* Define to 1 if you have the `getdtablesize' function. */ #undef HAVE_GETDTABLESIZE /* Define to 1 if you have the `gethostbyname2' function. */ #undef HAVE_GETHOSTBYNAME2 /* Define to 1 if you have the `gethostname' function. */ #undef HAVE_GETHOSTNAME /* have getbostname def */ #undef HAVE_GETHOSTNAME_DEF /* set getpgrgp 1 */ #undef HAVE_GETPGRP_0 /* Define to 1 if you have the `getrlimit' function. */ #undef HAVE_GETRLIMIT /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_GRP_H /* Define if you have the iconv() function. */ #undef HAVE_ICONV /* Define to 1 if you have the `inet_aton' function. */ #undef HAVE_INET_ATON /* Define to 1 if you have the `inet_ntop' function. */ #undef HAVE_INET_NTOP /* Define to 1 if you have the `inet_pton' function. */ #undef HAVE_INET_PTON /* Define to 1 if you have the `innetgr' function. */ #undef HAVE_INNETGR /* have innetgr def */ #undef HAVE_INNETGR_DEF /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `killpg' function. */ #undef HAVE_KILLPG /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the `lockf' function. */ #undef HAVE_LOCKF /* have long double */ #undef HAVE_LONG_DOUBLE /* have long long */ #undef HAVE_LONG_LONG /* have lseek proto */ #undef HAVE_LSEEK_PROTO /* Define to 1 if you have the header file. */ #undef HAVE_MACHINE_VMPARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `mkstemp' function. */ #undef HAVE_MKSTEMP /* Define to 1 if you have the `mktemp' function. */ #undef HAVE_MKTEMP /* Define to 1 if you have the header file. */ #undef HAVE_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_NETDB_H /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H /* Define to 1 if you have the header file. */ #undef HAVE_NLIST_H /* Define to 1 if you have the `openlog' function. */ #undef HAVE_OPENLOG /* have openlog def */ #undef HAVE_OPENLOG_DEF /* Define to 1 if you have the `putenv' function. */ #undef HAVE_PUTENV /* Define to 1 if you have the header file. */ #undef HAVE_PWD_H /* have quad_t */ #undef HAVE_QUAD_T /* Define to 1 if you have the `rand' function. */ #undef HAVE_RAND /* Define to 1 if you have the `random' function. */ #undef HAVE_RANDOM /* Define to 1 if you have the header file. */ #undef HAVE_RELOC_H /* Define to 1 if you have the header file. */ #undef HAVE_RESOLV_H /* Define to 1 if you have the header file. */ #undef HAVE_SELECT_H /* Define to 1 if you have the `setenv' function. */ #undef HAVE_SETENV /* Define to 1 if you have the `seteuid' function. */ #undef HAVE_SETEUID /* Define to 1 if you have the header file. */ #undef HAVE_SETJMP_H /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE /* Define to 1 if you have the `setpgid' function. */ #undef HAVE_SETPGID /* set setpgrp 0 */ #undef HAVE_SETPGRP_0 /* Define to 1 if you have the `setproctitle' function. */ #undef HAVE_SETPROCTITLE /* have setproctitle */ #undef HAVE_SETPROCTITLE_DEF /* Define to 1 if you have the `setresuid' function. */ #undef HAVE_SETRESUID /* Define to 1 if you have the `setreuid' function. */ #undef HAVE_SETREUID /* Define to 1 if you have the `setruid' function. */ #undef HAVE_SETRUID /* Define to 1 if you have the `setsid' function. */ #undef HAVE_SETSID /* Define to 1 if you have the header file. */ #undef HAVE_SGS_H /* Define to 1 if you have the header file. */ #undef HAVE_SGTTY_H /* Define to 1 if you have the `sigaction' function. */ #undef HAVE_SIGACTION /* Define to 1 if you have the `siglongjmp' function. */ #undef HAVE_SIGLONGJMP /* Define to 1 if you have the header file. */ #undef HAVE_SIGNAL_H /* Define to 1 if you have the `sigprocmask' function. */ #undef HAVE_SIGPROCMASK /* Define to 1 if you have the `socketpair' function. */ #undef HAVE_SOCKETPAIR /* Define to 1 if you have the header file. */ #undef HAVE_STAB_H /* Define to 1 if you have the header file. */ #undef HAVE_STDARG_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strcasecmp' function. */ #undef HAVE_STRCASECMP /* have strcasecmp def */ #undef HAVE_STRCASECMP_DEF /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strncasecmp' function. */ #undef HAVE_STRNCASECMP /* have struct_exec */ #undef HAVE_STRUCT_EXEC /* Define to 1 if you have the `sysconf' function. */ #undef HAVE_SYSCONF /* Define to 1 if you have the `sysinfo' function. */ #undef HAVE_SYSINFO /* have syslog def */ #undef HAVE_SYSLOG_DEF /* Define to 1 if you have the header file. */ #undef HAVE_SYSLOG_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_DIR_H /* have sys_errlist */ #undef HAVE_SYS_ERRLIST /* Define to 1 if you have the header file. */ #undef HAVE_SYS_EXECHDR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_EXEC_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FCNTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_LOADER_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MOUNT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_NDIR_H /* have sys_nerr */ #undef HAVE_SYS_NERR /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PSTAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H /* have sys_siglist */ #undef HAVE_SYS_SIGLIST /* have sys_siglist def */ #undef HAVE_SYS_SIGLIST_DEF /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SIGNAL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STATFS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STATVFS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SYSLOG_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SYSTEMINFO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TERMIOX_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TERMIO_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TTOLD_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TTYCOM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UTSNAME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_VFS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the `tcdrain' function. */ #undef HAVE_TCDRAIN /* Define to 1 if you have the `tcflush' function. */ #undef HAVE_TCFLUSH /* Define to 1 if you have the `tcsetattr' function. */ #undef HAVE_TCSETATTR /* Define to 1 if you have the header file. */ #undef HAVE_TERMCAP_H /* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H /* Define to 1 if you have the header file. */ #undef HAVE_TERMIO_H /* Define to 1 if you have the header file. */ #undef HAVE_TERM_H /* Define to 1 if you have the header file. */ #undef HAVE_TIME_H /* Define to 1 if you have the `uname' function. */ #undef HAVE_UNAME /* have union wait */ #undef HAVE_UNION_WAIT /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `unsetenv' function. */ #undef HAVE_UNSETENV /* Define to 1 if you have the header file. */ #undef HAVE_UTSNAME_H /* Define to 1 if you have the header file. */ #undef HAVE_VARARGS_H /* Define to 1 if you have the `vfork' function. */ #undef HAVE_VFORK /* Define to 1 if you have the header file. */ #undef HAVE_VFORK_H /* Define to 1 if you have the header file. */ #undef HAVE_VMPARAM_H /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Define to 1 if you have the `wait3' function. */ #undef HAVE_WAIT3 /* Define to 1 if you have the `waitpid' function. */ #undef HAVE_WAITPID /* Define to 1 if `fork' works. */ #undef HAVE_WORKING_FORK /* Define to 1 if `vfork' works. */ #undef HAVE_WORKING_VFORK /* Define to 1 if you have the `_res' function. */ #undef HAVE__RES /* have _sys_siglist */ #undef HAVE__SYS_SIGLIST /* have _sys_siglist def */ #undef HAVE__SYS_SIGLIST_DEF /* HPUX version */ #undef HPUX /* have in6_addr */ #undef IN6_ADDR /* have in_addr6 */ #undef IN_ADDR6 /* IRIX */ #undef IRIX /* target os name */ #undef OSNAME /* target os version */ #undef OSVERSION /* package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE /* solaris */ #undef SOLARIS /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* have mtimensec */ #undef ST_MTIMENSEC /* have mtimespec */ #undef ST_MTIMESPEC_TV_NSEC /* SUNOS version */ #undef SUNOS /* have SVR4 */ #undef SVR4 /* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* use sgttyb */ #undef USE_SGTTYB /* statfs type sysv */ #undef USE_STATFS_TYPE /* define use_stty */ #undef USE_STTY /* use termio */ #undef USE_TERMIO /* use termios */ #undef USE_TERMIOS /* use termiox */ #undef USE_TERMIOX /* version */ #undef VERSION /* Define to 1 if on AIX 3. System headers sometimes define this. We just want to avoid a redefinition error message. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* HPUX Source */ #undef _HPUX_SOURCE /* Define to 1 if on MINIX. */ #undef _MINIX /* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE /* Define to 1 if you need to in order for `stat' and other things to work. */ #undef _POSIX_SOURCE /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `int' if doesn't define. */ #undef gid_t /* Define as `__inline' if that's what the C compiler calls it, or to nothing if it is not supported. */ #undef inline /* Define to `int' if does not define. */ #undef mode_t /* Define to `long' if does not define. */ #undef off_t /* Define to `int' if does not define. */ #undef pid_t /* Define to `unsigned' if does not define. */ #undef size_t /* Define to `int' if doesn't define. */ #undef uid_t /* Define as `fork' if `vfork' does not work. */ #undef vfork ifhp-3.5.20/DOCS/0040755000175100017510000000000010130541267013514 5ustar papowellpapowellifhp-3.5.20/DOCS/dict0100644000175100017510000001063207121757277014401 0ustar papowellpapowell(null) AG ANlcnQEBYBYD APPSOCKET ARGV AStArt AU AUTOSELECT AppSocket AppleTalk Appsocket Ascii BAQ BOOTP CFG CR CRLF CSH CTRL CTS Centre CvsMUxjip DCD DNS DTR Debuglevel DesignJet DeskJet DocuColor Duggan EOJ EPS EXECs Easycom Emulex Enscript Epson Esc Exp ExtendNet FD FF FG FV FVtgToAsJUYmzoSFY Ff Fi Fn Fo GW GetRequests GhostScript Gjb HOWTO HPGL HPJetDirect HT Hp HpHzJUMP IEN IFHP INIT INTRAY IP IPX Ifhp JAJUDBRA JSUCC JetDirect JnypypeQiAqo Kbytes KeyID LF LG LPDPRT LPR LPRng LPRngLISA Lantronix LaserJet Laserwriter LexMark Lexmark LmNvbT LoGger MC MIB MIO MPS MSB MSS Mudge NETJet NETPrint NETQue NL NNN NPI NT NZ NfrotPTUw NjaIei Novell OKzx OUTBIN OaK OdHYkeeh Offline OyUCwDfWybgAORuAa PAGECOUNT PASSTHRU PCL PDF PERL PGP PJC PJL PQfO PRINTCAP PS Pagecount Pagecounter Pagecounting Pagecounts Passthrough Perl Plw PokAlQMFEDLy PostScript Ppr Praw Printcap Printcaps Printserver QMS QsUK RDYMSG README RFC RItHfFfcHhw RTS Ro SGML SH SIGSUSP SM SMB SNMP STDERR STDIN STDOUT Seq SetRequests Solaris Statusfile Summmaryfile Syslog TEK TEOJ TFTP TFTPD TGXTe TODSTR TOPTS TPC Tappsocket Tbanner Tconfig Tcpi Tcrlf Tdev Tektronics Testsupport Textfile Tfont Tifhp Tmodel Topt Toption Toptions Toutbin TpxMmCApolaIb Typefaces UDP UEL UINFO UJnAhvj UL URL USJ Ummm UuZWR VsbCA Vt VydAAUT WlDhdtFaAuaMRh XJ XMIT XQ XXX XXXX XonoiUTMOwDZXJ YTgS YXJ YnS ZBNlS ZOPTS ZWxsQHNkc ZX Za ZapDingbat Zbanner Zbp Zend Zendpage ZfJzKZjaK Zfont Zfuzzy Zkey Zlanguage Zlower Zopt Zoption Zoptions Zoutbin Zpagesetup Zscreen Zstart Zstartpage Zupper aBxN aG aP aW ac accountingfile acct addr ajcd appsocket appsocketpc ascii astart au autoconf autodetection autoselect awk bak bannergen bf bi bindir bootfile bootp bootpd bootptab bp bq cBAC cGFwb cN ca cbreak cd cfA cfg chembio cizoWqKvy clearmargins cmljayBBLiBQb co cols columbia commat conf config configfiles configpaths cp cpi cplus crlf crmod crtscts cs ctrl cvs dJd dcs def defence demaille descrip deshaw dest dev devexchange dfA digprod dlbGwgPHBhcG dlbGxAYXN doctype ds dup duplexshort dx eDx edu efi eg emulex endpage enscript enst enum eoj epson esac evenp extendsys fPYjN faqref fd fi fileconversion filetransfer fileutil filterprogram finetune fontdir fontid forceconversion forcestatus foreach fr gTSJRMw getconfig ghostscript gif greek gs gt gunzip gw gwynne hamburg hd hexdump hhost hn hobbit hostname hp hpcolorlj hpdj hpiii hpiiisi hpljpro hpnp hpnpadmin hpnpsnmp hpnpstat hppjxl ht html htmlurl http ibm icmp ifhp ignorng inf informatik init initstr initval inlower intray intraynum inupper iona ip ixany ixon jVUcGeod jVXpGipEo jiJdgKiTgGfj kRH kcfA lEzDsA lang languageinit lantronix lc lcub lduplex lexmark lg libexec libexecdir linewrap linuxdoc lj llll localhost logall longlist longstrval lp lpbanner lpd lpf lpq lpr lprng lpt lptxx lptxxx lsqb lt lw mIhDMwDJI mQCNAzLygTQAAAEEANBW maillist mailto mandir mediaselect mis mmm modelglob modelname modelselect modelselection motd mp mplus ms msg multicharacter mv mx mypcl myprinter na nbsp nc netcat netnum networkprotocols newprinter nis nl nlist nnn nnnn nonblank normalpage normalq ns nstring ntnu nullpad nval nwpr oakqO od oddp ofhp onflag optin optioninit org orig os outbin outlower outupper paderborn pagecount pagecounter pagecounters pagecounting pagecounts pagelength pagesetup papowell pathlist pc pcl pclbanner pclonly peripheral's perl pht picasso pid pj pjc pjl pjlinit pkg plp powersave ppages pr prescans printcap printcaps printer's printf ps psbanner psonly psutils qA qFVx qbAspBopR qms qmsXXX qpagecounter qrdoJyIhn rGipbR rasterization rasterize rasterizer rasterizing rcub rdJjX refix rfc rh rl rm rmSqCLe rp rrQlUGF rsqb rw sC sDEVICE sOutputFile sPAPERSIZE sY sb sbin sbindir sd sddqgf sdsu sduplex secftp sed seq serialport serverhost setpagedevice sf sgml sh simopier simx sm socketpc solc sp spam spi spooldir spoolqueue src standalone startpage statusdict statusfile stderr stringescape strval stty su subserver summaryfile sunfreeware syncpage sysContact sysLocation sysName sysconfdir syslog tCdQYXRyaWNrIEEuIFBvd tGQfyp tbcp tc tek telapasedtime tempfile teoj testscripts textconverter textfile textps tgz tmp tne toc tpj ts tscreen tt ttl ttyxxx txt ualberta udp uhhh uiarchive uiuc uk ummm umn uni unix unprefixed unsubscribe untar urgentq url useroptions usr usrlocal util utils uuser vJvtf val var vars vi vjhg vm wSAnP waitend waitidle watermarking wau website wimpy www xWOUc xerox xjprint xvf xxx xxxx yFyKunHa yeS yfWRRnfXmoJ zTeoiDNnI zU zod (null) ifhp-3.5.20/DOCS/supported0100644000175100017510000000411707765671206015505 0ustar papowellpapowell#!/usr/bin/perl -i my($line,$list,$l,@lists,$v1,$v2,$debug,$output); my($conf) = shift @ARGV; $debug=0; if( not $conf or not $ARGV[0] ){ print STDERR "use: $0 ifhp.conf file\n"; exit 1; } open( CONF, "<$conf") or die "cannot open '$conf'"; while( ){ chomp(); if( /^# PRINTER / ){ s/^# PRINTER //; if( /^-/ ){ s/-//; $line .= $_; } else { if( $line ){ $line =~ s,^(\S*) - (.*)$,$1$2,; $output .= "$line\n"; } $line = $_; } } elsif( $line and /^\[/ ){ if( $line !~ /\%/ ){ print STDERR $line if $debug; $line =~ s,^(\S*) - (.*)$,$1$2,; $output .= "$line\n"; $line = ""; next; } @lists = split(' ',$_); foreach $list (@lists){ next if not $list; next if $list =~ /\[/; next if $list =~ /\]/; $l = $line; print STDERR "X $list $l\n" if $debug; $l =~ s/%/$list/; print STDERR "$l\n" if $debug; if( $l =~ m,{/(.*)/(.*)/}, ){ print STDERR "$1, $2\n" if $debug; $v1 = $1; $v2 = $2; eval "\$list =~ s/$v1/$v2/"; print STDERR "Match '$list'\n" if $debug; $l =~ s/{.*}/$list/; print STDERR "Final $l\n" if $debug; } print STDERR "$l\n" if $debug; $l =~ s,^(\S*) - (.*)$,$1$2,; $output .= "$l\n"; } $line = ""; } } print STDERR "OUTPUT ". $output if $debug; $skip = 0; print STDERR "XX START\n" if $debug; while( <> ){ print STDERR "INPUT $_" if $debug; if( /SUPPORTED START/ ){ print; print <<'EOF' ; <literal/ifhp.conf/ Configuration Entries EOF print $output; print STDERR "YY $_" if $debug; print STDERR "ZZ $output" if $debug; print <<'EOF' ;
EOF $skip = 1; } elsif( $skip ){ $skip = 0 if( /SUPPORTED END/ ); } print if( not $skip ); if( $debug ){ print STDERR "XX $_" if( not $skip ); } } ifhp-3.5.20/DOCS/updatehtmlmirrors0100644000175100017510000000105007177110102017212 0ustar papowellpapowell#!/usr/bin/perl -spi # turn mirror list into http links BEGIN{ use FileHandle; $f = "\n"; my $MIRRORS = shift; if( not $MIRRORS or not $ARGV[0] ){ print STDERR "use: $0 Mirrorlist Updatefile\n"; exit 1; } my($m); $m = FileHandle->new("<$MIRRORS") or die "cannot open $MIRRORS"; while( <$m> ){ my ($site,$where) = split; $f .= <$site $where EOF } close($m); $f .= "\n"; } if( /MIRRORSTART/../MIRROREND/ ){ $_ = ""; if( !$done ){ print $f; $done = 1; } } ifhp-3.5.20/DOCS/updatesgmlmirrors0100644000175100017510000000124107177110102017212 0ustar papowellpapowell#!/usr/bin/perl -spi # turn mirror list into http links BEGIN{ use FileHandle; $f = <<'EOF' ; Mirrors: EOF my $MIRRORS = shift; if( not $MIRRORS or not $ARGV[0] ){ print STDERR "use: $0 Mirrorlist Updatefile\n"; exit 1; } my($m); $m = FileHandle->new("<$MIRRORS") or die "cannot open $MIRRORS"; while( <$m> ){ my ($site,$where) = split; $f .= <$site $where EOF } close($m); $f .= <<'EOF' ; EOF } if( /MIRRORSTART/../MIRROREND/ ){ $_ = ""; if( !$done ){ print $f; $done = 1; } } ifhp-3.5.20/DOCS/updateversion0100644000175100017510000000055407441301636016335 0ustar papowellpapowell#!/usr/bin/perl -i # 1 Sept 1998 (For LPRng-3.5.3) # VERSION use POSIX; my $v = ` cat ../VERSION `; chomp $v; #print "$v\n"; my $s = ctime( time ); #print "$s\n"; my @s = split ' ', $s; my $w = ' ' ."$s[2] $s[1] $s[4] (For $v)\n"; #print $w; while ( <> ){ if( /^/ ){ print $w ; print STDERR $w; } else { print ; } } ifhp-3.5.20/DOCS/IFHP-Reference.dsl0100644000175100017510000001442407123202604016641 0ustar papowellpapowell ]]> ]]> ]> (define %gentext-nav-use-tables% ;; Use tables to build the navigation headers and footers? #t) (define %html-ext% ;; Default extension for HTML output files ".htm") (define %shade-verbatim% ;; Should verbatim environments be shaded? #f) (define %use-id-as-filename% ;; Use ID attributes as name for component HTML files? #t) (define %root-filename% ;; Name for the root HTML document "index") (define html-manifest ;; Write a manifest? #f) (element segmentedlist (make element gi: "TABLE" (process-children))) (element seglistitem (make element gi: "TR" (process-children))) (element seg (make element gi: "TD" attributes: '(("VALIGN" "TOP")) (process-children))) (define ($email-footer$) (empty-sosofo)) (define ($html-body-end$) (if (equal? $email-footer$ (normalize "")) (empty-sosofo) (make sequence (if nochunks (make empty-element gi: "hr") (empty-sosofo)) (make element gi: "p" attributes: (list (list "align" "center")) (make element gi: "small" ($email-footer$)))))) ]]> (define %section-autolabel% #t) (define %may-format-variablelist-as-table% #f) (define %indent-programlisting-lines% " ") (define %indent-screen-lines% " ") (define (toc-depth nd) (if (string=? (gi nd) (normalize "book")) 7 1)) (define (article-titlepage-recto-elements) (list (normalize "title") (normalize "subtitle") (normalize "corpauthor") (normalize "authorgroup") (normalize "author") (normalize "releaseinfo") (normalize "copyright") (normalize "pubdate") (normalize "revhistory") (normalize "legalnotice") (normalize "abstract"))) (element sgmltag ($mono-seq$ (make sequence (literal "<") (process-children) (literal ">")))) (element command ($mono-seq$)) (element application ($bold-seq$)) (element warning ($admonition$)) (element (warning title) (empty-sosofo)) (element (warning para) ($admonpara$)) (element (warning simpara) ($admonpara$)) (element caution ($admonition$)) (element (caution title) (empty-sosofo)) (element (caution para) ($admonpara$)) (element (caution simpara) ($admonpara$)) (define en-warning-label-title-sep ": ") (define en-caution-label-title-sep ": ") (element hostid ($mono-seq$)) (element username ($mono-seq$)) (element devicename ($mono-seq$)) (element maketarget ($mono-seq$)) (element makevar ($mono-seq$)) (define (qanda-defaultlabel) (normalize "qanda")) ifhp-3.5.20/DOCS/updateheader0100644000175100017510000000073707411207031016072 0ustar papowellpapowell#!/usr/bin/perl -spi if( $found and /^$/ ){ print < LPRngLogo ifhp ifhp EOF $found = 0; } elsif( m,˳nÔ{kj¬?ô«ýQðzعÎP*h¦UªµW¸çÀϬ_¡èKjñ. Zº*c·ž*õÇ­%¬Z‰+ŒWÖðN²…gâÌa“ꌿä&š÷l©>±U“…$ƒá‚­Z?©™–]€­½(?$Ktý /Yr=’Å6luï2RO ÆOJÚ@ä µãT¼Çùþq_3 Ç4qøˆþ£¡[…òª»ÑKåuô-•^liÒ2äí=Gþs9”æ3Š%ákÖ€úY^§Ì“÷©|oz¢Ù‚  ¤(¤ŽDíSÍê®ÒLñq<ƒŸòg(¿Uöú› IäE ·u 󠔊}~w¢O&žp¸ê³ñD¡km:ÙCW%·ÓȽ(wUãÝ<¤G~–kFzKCæq¼˜PÖ•¦¼4~òXøFhjM¡s„¢Vi3 ÿÿö7=Ÿš2ð cЄã5x»Ÿ'_W>J±q}ÍXæ„lá„ !BC1ëö·Ñ4±¦d̪ªu¹”oµ&…î„#–úÕÇ<‡3MµûsU¦¥nÛm©Wºf¥+,ƒÖ¤‘Ävâ%Ëf[GÊRa™©f¦eC¬¼€¶Ö“¤‘A쎕Í[¦Û”ÊÝ^e2Ò2m^põë'¦)JEµ+j‹Þ³Py›K¡ Óˆi]racµJV@ñç1€3®:²ÔÇN›âª¥~ ÖŸÍ#.^Vl¢…é%n¥]Ò v§1ÓÔ&©Éyçw@Þ^9àpŠVv™Ö ÿ%~ÏìÂá+›„Sýšu¿Qo]^¦Û× ]‰š{ì¾§L£h$¥¥(qHÏ0"àEL5aB„ !BB€„ !BB€„ !BB€ÃÎ!¦ËŽ,! *'Š5 \mÛ|®Rÿ|O'èÕ†P|*ëóGZФ¯7c¹‚Ëñ8êŸ'þnú»Ž!´©n)(JFJ”pˆêóÖk6ÝénlÕ&Óá”î€>òVÛ×Qî˵ՊImJ¨ð•—% áÉóæ1 G_7{R^lý-à8«O;øGîÿ³wk½ÝWßf”£K«‡Ø€[˜÷DpóJ¡?S˜TÅBvbmÕ•¼áQøã·oÛUúûÁª5"rt“Œ¶Ù)5rs}µ³åÏ<íf~N˜Ùæ€K®0áñÇC—ŠwÕý¥ø¹>KTãë/»!¨ý4ÛŽ¬!¦ÔµA#&-u¹ ÖM7usârªèçÓ¹ºÍN>2bB¢ÛVý°Š]BOm0”ŸN3ºyEGÛv›¢9„rvÛ8ÄsˆBŽÌ ›B†”ŸŽœÝ‘6’™ªd“àó0•gÒ#¿&j3”uNÆ)PÓ‹{>ɶ)§<ÊÜ?ûqÝOBtúo%‰©äL¬B‰‰>Å,=)oèw¨æ¸ê?Ë­%æÈ¯³„’·•I¹hõ&b\,zA¨Âëš |HeRI’©69t/n«Ð¬zâÙ`GÕžY‡—K|gÆ9­椼RûY”B»k\t5”Õ¨³Ò˜ûå²w;”xÆ6 ëMº‚‡•¤óJ†AŒ2éÒÛà TÕ ‰w•üt¨è—ãáÀùÁŽ•\þ‰zŸGƒãø;,M+xÅýŸä¥¨*J‚’¢’8‚9ˆì]`»­•¡—fRE< ¼ÉÉú+æ>1µÛ³¼Û)[öÅa3qóƒu~  0OŒ‡®{Vᶦ:Ý*fLç Z“”+Ä¡Àúc¡*XŒ+¾¨újxì§;§ðïø=•õô-žê¥³x¥,0ÿ°ªã+0@Q÷'’£<&5òÚÖÒÒãkR“”©'›4—\'i®³I»œ\Ü‘ÂQ9ÍÖ½×á'ãñǧ…ÍTŸ-]h‰¶÷¬?#¥´Ú[+(MF¤”»¾B¥có·Oš,³²lÈû9Ù¦[” /)ÀyîXðÅYÛÖµGªZÓtÚ¬”êÑ>áZeæáHèùœ^ÆVåA‰‡Dô ãÔëvb¿+T’¦H¶ò˜iO¡JS«Hà@d Ä=³cK‚ƒNÐÙiúÕ:Qñ90KoL¡ ¯Á9Œ£l”ôæß›µt¶•nO8Ó³4ú@âÚ$¥DÄgŽ#X'™°;0ÄÝ%É™W›y—Rãj J†9‚9ƧÏ3D‰2la÷AQ}ï5ó+„F½ö0û ¨¾÷šù•Åõ¸+ô[~HÎ×*²tÙaä™y-¤øyÅD–ç§Œ•¯šB™Ÿc›âC8ÈmÒŸÎÝÇǵµs[÷,¯²è™›#š¥žJñãÇ/#„Ù„a—n©éí«2ek×e6Na>Ùž“¤q>4 =Ö·µLkÓ –¦^”§YÂ[uÂÊ”|`fÆyü¡iZB’AdרBB€„ !IŠ:]âÌÄü«.i[©Ib`Ü#£ôæ‘øÖGá ýpúsHük#ð„þ¸½èý9¤~5‘øB\>œÒ?Èü!?®ïB>2³RÓH+•˜iô‚¦Ö3ãõ$p$ˆÃµP­û&S~¥1ÒM¬e©FŽ\_ì ŒY5žZ‚§¨–ÊÛš©Œ¥ÙlÛ°v«â[f¦*•Ú²ž}s5 ù•ñ'+ZÉì+™*o’ž¬ûl‡„jbÒÄbÿ†žöêÿËõTî[Å×qõHÓIîeVÒ<Ô~/`òÌ?2òX—eÇYÂP„•)GÀLZ} µºº[œ¹^4™U`†2ú‡„rOŸ'ÁíŸc[6¤¸nKe§ÂŸPÞu~51ѧ€Äb_=Wo™ôx®'Ë2Š&º-¼ß_r¸YzwW7©¥YEqÞ|o:GúȉžÑÑ;.…¸ìÔªêÓ)ãÒM§>œÄšž9ZŽ_B—K¿â3)Ìq·N|±îŽžûûŸYiyV’Ì» ²ÒF„$$0´!Óç[¾¬B€„ !BB€„ !BB€„ !Z„Œ¥BYr³Ò¬Ì°±…6ê’GˆÇjjåM§tBZƒ tz\ݬð¥Ís2ëÊ™Yðu§ã¯w]±\µêF·OvUϽQBÇjT8¾'”yW%“qS§V$Z›—Xö«R{Aæ„G™‰Ë)ÕÖ?cì2~1ÅàÚ†#øáî¾O¯™U´OS¦ìÚš)õVõõ€â É`Ÿ¿Oùˆ¶ò3Ró’MK:‡Xu!m­'!I<ˆŠŸ¬CQ´åR•ÒOQIÉV2ä¿xêþ—¦3-–¯…¬¹fT^* IvAJ<‡5#üÇž:øÕ(Týž¯‘éñ]…̰¿½0.öí/»]ëá©aaÊ퟈B¿¶Øï÷P÷œ¿ÈˆLÄٶǺ‡¼åþDBf0÷9ÆÂu;îH›ÿñ¶>m¯n³û^‘M¯i5W•DÜŒÕY·ÙY8Zz$ð8ãm=:²¬«Zßšµ­ùj[Ó3®6òÚR‰ZB2É=qY˜²®BröQÒ=»4vN±q[u õÍ>…>â–R•à €‰kšnÄ» ½à­$'ä˜ÖÁæck2Tª}ÚM&•,‰YYrÛ £8B@àxÆ©3’&{ ×Œ•ƒ~›®q¢ù’‘Øìޕգq)ÏPî²O`1á_÷¥Å|×Þ­\U&ŸpÆó†ÙORPž@ëYT »ªí¥Û’D Š„ÊBˆÈNO|C'Ͳô_NmŠ#4é{^8´ fg%Ò뮫¬’ }„D±­hö¬Û¦»hWeëVýAé)¶TP{•ÁP䤞ÃÆÚš[A³æ)W=µ Ý>V ê¥æe™m.¼•$udg pá¶jlÿG¯&/í<¥\ì 4¹¦°û@ä6êx->,ƒ"5Û£¼j¼©/þ¨óö›SÚCQ–R‰õ‡G`SmŸ\ztwW•%ÿÕèc©Bº¢a§ëMNÛÐÊe…k¾äœóŽÌ9PœO¶…8JPƒÔHâT9Q`¶WЩ=Caûšè[è¢0ïDà +uS+Û*êHáˉ=˜Œ£l¯î¸·\SŽ­KZŽT¥’{IÌlZ{g}"š§ªPZMK’œ™}ÀàðçxñŠk´F–Léeâ‰ß\Õ*uéÖ;¢pP®­äðåÌ`ѹ˜lÉ®µk>»)mÜ“ÎÍÛsN%¤©å*IDà)'žçj|ãÃ{ÛZ\BV…%@AàDjR6A²õÆõÏ¢6üô˅Ɇ2n¨œ’Z;€ŸЉ$I°„#FD!BER¹ì:¢íqÐîN{ ªC3 Ïtjßh8<0£¶+Ý­÷p]>@oÔÌFTwþµm.í¯xÓ­[K»kßÞôÄ©Õ º™i½7dR%jÕ”¸€Ü´Ê·P¤•wDäòˆ¿ãm§?›wôçýè NÿÖ­¥Ýµïïúc­UÙwLe©sS ª»¾Ó+Zs?Ã!$½Žõ§wm 7rÓ¥«úyB’¥:úS70ÓÄ­¶Éî”>Êx‰ŽàýâŸ÷³Ÿ$ÃAvkçCu"ãÓ ‰¬J—gè¼[¨H•s€Z{3ÏÌbÕt“®Q›§ØÓ‹T¼ÛAS€© Ž-€xƒÚbµÙ)J讥@™‡¯”}¨j–³n¹JÌÅ9UJy*‘ #¹ëÇÿÞ5LTêJT³¾Œý ’ÐÂR£™Êpå¼—sï·UáÓ}‰GM´Òâ¾&CÌ6eiÁ_exw>‘ÍF-ŸéŵfK§ét vpŒ96ðÞq^#÷£À#ÑÓúõ½sZ’5[aö¦8Ð % Eí Gµ#‘Gs §A_wÞxÏâó6á~ZÒ¾ýÿC€1‰¦Öì³­6ê™ZÐR—2PHàF{#éï8Az—gjíÖ«Úú­Qž˜“eO*VnI„ô©H$„©)àp8dEWúൃòÊgô ~Ìl2äÛÕ Gb;ò j•ﶯÝË7IžÈÕýo»®Êm·K¼_ö\ûéil´œóQîy“æ‹qmXWÜ›òs5Y«ÔÒÒ·ØD‹ ´èJyysÌS]‘À:ýnd}óÇÿÔ¨Ø¨Š‰!B)‘u÷jܵÙÔLÐïÚ•¸”5¸X—–iÔ)Y'|ïŒçˆTf0€(Ö´_ºã¦Wšíú…øìÚÐ~Ze¹v’läg¼ ‚#úàµòÎgô ~ÌHŸD ¨´9šYùÕEjŒ3‘l]:u­´¥JÚ‘­Óõ:œ÷³%[™m…²¬-!@[ÆxÄeqkn¿iÝÂh÷cÒæa(55&Úâ +F2< ÅÅÓ.ööÏ’%>e1í³kJÖ´zb´YO³hÏ!öÇt£¸´ç°äDhÊf1¥[YQêó¬Ó/zbhθBS<ÂÊØÏô’{¤â‹2ÃÍL0‡™q6´…!i9 ‘5-Õ[aâr³kT­ ‹êyTr‡$Ô£’^rT8{¨‰†Œþò°õ5äNÍ[:³P—}j[ŒJÌȲZNI!ÀdËn,œw¾·<•-óIŠÿôB–¿”\ù¸ÓØÂܦ"/þÄá$=û3ò‿ûw„÷ìÏˉR&‰ÿÜ/ÿV¯Tjdó1¶iÿÜ/ÿV¯Tjdó0‘"KÛK71´¤ôH˜q>0Âñë‡F½ö0û ¨¾÷šù•ÆÂ"¡-Êá·øÿáeË)ù—bÅÞÛÿ½eË(ù—bÄeŽÅÜú½ëëžYWÌ·ÎÝãUåIõGô?»ØW<²¯™n=º;ƫʒÿê‹ÐJÕ ØårËÙú€%÷r•Ì%Üs é—œù±ò¢jÙ¯\ÞÒ÷f)YG§èNT†ˆé%ÜÆ  Œ£RWFÀâ©ýÇ%¾“ÚM’Ÿdû"aIíÜÝF~cÚ̹)7u³%qPæ Å>um,¤¤ð%$y AñDA­úE¦´m#º*´»:—+;+NuÆm) cÝÙîvµ}ÌÏø§£¿JQnçËc+ÇUÕŒoÑlK0„#”ê ø?Q÷«¿ Æ©ûrýÑ­ÜÁú½]ù5H÷Û—îŒeš‰+l‹ßúÝñ½óKŠ×^Ƚÿ­ßß4¸Ø Š„·„"™„ OôA;âP<–~uQZ¢ÊýNø”%ŸTV¨ËÜä[KÓ.ööÏ’%>e1…ík:Ìž€Ü¡Õ_m¶QáRœN=Qø³5oMhúq@LýéGmÉz\²i3n%Ii §u99†1“jp—Ô‡%íûq7@”w¦S®§uSN€@VïR@'ñ9Ì[˜IÜ¢Ö}zLÁ«ÜõÒ… d²ÔªUÔ¥•æzbÒÍ$½u¢Ó4Š[ÌH•–¡0‚†}ÑÑð ÆÁ4ªÆ¤éå›)mÒRÊÞyCº}Ãí–¯gPDHÔ™•˜ÕÖ­wѺ|¯3󪢘ÕÖ­wѺ|¯3óªŠÉ#Ùw¿í¥ïÅ|ÚãdQ­]›§d©ÚákNÔ&åäåZšQqçÜBF¡’£ÀEþ›Ô½<•h¸õñnŽÊ“Jø‚ „Œ­jJT¢$ž¨Õm÷4Ôíó_`å§êS ÿEN¨\[M ö”·Z¶§-ëpÔª3©—'’—B )'Û+³žbS$'ê³­ÉSdæ'f8CL6Vµb2Å~HLTuªÏbX(­ywÕŽ¤6°µ|I1³QÊ+–ÉZ9d•]÷[)n·0ÑnZW™•ló*?†yxŽ,lTfNäM­š±_ÓEªuz}5V¡¤ “U¡)Z¾õHÜQO< E?^dŸó~ÿ÷¨ÿj&¦Cºv¥Ä‚ TìÄÔìÊCޏ¢¥-JV $ó—]”q@qRH H>"é0dZ²Aúè´ñGà+‰+Noj ýný>·yé™Lï:Ñlï'à|b)ÎÇ·5¹1s"úíÚEA©ò¥HMLJ6§t ôeDd¤€qžGÇr‹H¥Ñ$ý…H§ÊÈKoôRíѼyœ‚ XïBŠBí§-2î¼Ï­¹wVŸaËñJ Ò!c%;ü’côf6É È–4¤x:r tþÜE.XªL@_D —ž³m€ËKpŠƒ™ÝI8ûYȘX‰êjkØSŸÉ&?FbüìPÛh<‚mHW³fx(`ûxšð;#1¬¹ñŸýÂÿõjõF¨L”æOý’côf6É`vA«„ìkûcIY–õþŒ·%ÞBC9*Aí+G̰nåsÛé§^Òê2ZinXA!)'ø—"“{ sù$ÇèÌm—Æd*v+–Àm:ΘÖÒëKlšÂˆ IÄ·¶ÝãUåIõDð"Û£¼j¼©/þ¨t%îÊ9DÅhèìýó¡âìµØ/ÖiÓï13*9Ì´ ¤ãìx¸Ã£”^­‚ûÍÎyaï›n2·bNKLIÍ9+7.ì»í«umº’•$öyGá´-ÇÛhRÖ£„¥#$Ÿ©W­[j¼­êÕ™QV1½1*…«23™iÐÝQíºLƒ£’Ø”B<àf-ŒóGeíŸ*s•™KÆù\œ„ªÒôœƒéÂæR¥§©ñÁâ|\î`9¡"7qB)!BE{µ¾î §È ú™‹ îÖû¸.Ÿ 7êfD¹©É¼×i¼›é«…ÄtJœµ»½Ýçȉ=‹µoã+CóìÄË}]´+&Þr¿qÍ™J{KJèiNTp8$ÏÁß×1£Ÿ•wL~Ä@2Ý—Úe5ù\¨Zª¥‰„{1- o–·†þïsωÔDQFÚIëy:M>ãuٹǒÃ2§yj8%O\Jâ(b„`;D÷޼|”÷ªJ{Õ&Èsµ«îfÅ=©zÌ!¤:ð~£ïW~AR=öåû£[¸ÿƒõz»ò j‘ï·/ÝË5VÙ¿õ»ã{æ—®½‘{ÿ[¾7¾iq±A n!E2|Öû(y ©Ô%Åçq%@cž\}"ºÓî4Ý»i¦NYÞ–JÚ¤¾ÊH9*€J³*¤ÿD¾%ÉgçUª,¯Ñï‰@òYùÕEjŒ½ÎE±°>ÑM,œ²(5 «.šôÌÍ2]ל^ùßZšIQ#{IŒÒ“¥ºsJp;!dPq'!~ÁmJr Žö™w·¶|‘)ó)ŒŠ4qÜü2ËL¶–Ùi ¡# J€<Â?p„1«­Zï£tù^gçUE1«­Zï£tù^gçUš‰ßÐz 2çÕÛvƒY—öE>rd¡ö·Šw†â1Äq& «´ŸgÒ˜»,©'¥4u mõ/¡$÷.rpsƒÙö#=—{þÚ^üWÍ®63T‘”©S¦)óÌ"bVaµ4óKJÒF1+vf¦ÄY݇õK¬9dUå$˜~uetùî…)qKÇ”¼dçNO<ޱnÑa7¦WòHB×Fœ%êsçŽQž('ð“ËŃ×ijïKL73.âšy¥¶´œ¨‚ Bî´ŽPˆ‹fWgRlĵ>êpS’žo8.½tÃר|Ñ.ÆÎ2=ÚK¼UßäåúÄkSª6W´—x«¿ÉËõˆÖ§Te›‰{6ï11åg¾J#··7x·|¥/þ¨êlÞbcÊÏ|”GonnñnùJ_ýQzêPƒÊ6A²Ñ'@­,’ìŠùÕÆ·Ï(ÙË=àm/z¯çW&¤a›vR¦çôy™Ùd)mÓê ¼þ: ¤dùÔ=1I­ÕÙGuÌn"}…+=Äæ6™[¥ÈÖi3Tºœ²&dæš-<ÒǤóIµ{f+®ÛŸz©eV©A]" eÏoŽÑÇÁ‰^TqH#‘Z¾ˆ ­§O(Lœo®¦TŸmYõˆÍ´‹Yíúµ™(›žaT:Ô›)fu‰ÖÔÞòÐ+A# Àâ9D1´"îÝu¼iô›Ü©LPéaa3ϲXe×Wåï/t×϶+"܇6l§ÍÔµÊÔjQ**n}/¬íPŒ©Dù„lª!›ô>GL$Ü©Tn~âšoqçÒ>ÆÂ8Ú3ψ⮸™ nâ„RB„„!!@B„ˆnŽñªò¤¿ú¢xô´íëΊh×55 â]èVµ$o'89I¬õÀ¨Õhå«`¾ósžX{æÛŒÃëzÑÏÈ™o…?ûqšÙu¹eRUJ¶)ˆ§I-ÒòšBÖ°V@åDž@DJÅnç½B)‘BB€„ !îÖû¸.Ÿ 7êf,$W»[îàº|€ß©˜ÕR›OªÉ™:œŒ´ì²ˆ%©†ƒˆ$r8#ãÿÀ¶Oäû½¯ÙާP+—-¦õ&Þ¹·'Üq DûH+RU’0æ8sˆê-«ßÏÝSàjÿv DÍ-eÙòÓ ÌKZÔF^iAm¸Ü‹iRT9Bx÷¢½ýEµ{ùüª| _îÃê-«ßÏåSàjÿvÅ„„W¿¨¶¯?•O«ýØ÷ôûKõ"vÉU«š½P¯SØ*.È9,¤¥Ü¤’\<‰—TŒŸhžñ×’žõG‰²Üíjû™ŸñOG·´GxëÃÉOz£ÄÙîvµ}ÌÏø§¡Ôt%˜B>S}0•tË·FíJ±Ã8êÌR;inÛ©¸³„¦QÒO`Ü1ªgN]Yþ‘‹õ¨t-}»mÙªSv}^m²ÔÂå\yN-`¤$ã#‡1ýhš‡øÞúg?b2ÍGCÙNq‰-z¶\˜q(JÞ[@¨ào)µ<ä¢5²F£´êjµBmÄ()*Kî’9wc5—Ò¤%ÙK-j‚B0¨:qç)‚̵„â"-¡õž§ìĬœÓ3W,Ãe2’‰PQhŸãIˆ¶wG6aLLêzTÚ¸*/'>„ˆÃ¦6JÔ‰‡–ôÅrˆó«9R×0┣ÚIL[‹#½°KoÔ56ä¬Í8§Ÿdug*RœtIðQl¯£µÝ-z¼õznBaÊ€e,™U)[¡åYÈ„"B¾×©By²¥íµJ–»·*Kt-.dòàF1ñÁêʱô@–•j= ‚¤Ò»¡Ù—U²-V ìí¬7ÝÌýÁq\6üÄã $­iCh’ÀÇþ´MCüo@ý3Ÿ±šMóIž_j¼’0ª4¡áýJc'ˆL-=|±­æ(¨Ú5Z|°Ý—LÚÝ i?‚”‚GŽ'*Q4ésRK)-§§ ’[ Çu»ž8Ï,ÆŒ3µG årcVú¨âÔÛÄ¥Ui’þj¢ø^2úóQnvN‚ýŸKeÅ- Lï:·’ŒÓ…¬c¨ñŠìîÉŽë«uÚÕ n-EJRžp’O2{ˆË5ïf'Ö½Ú*YÀ3¥>r…ñ˜Ù,RZVÊšŸJ©ËTéõú¼Ü«©y—Pó™BÒrî;bÈÙƒZ˜œ’bé„Ô˜PSÊu/õ”§¹ø¢¡#ÒÖ­=¦êE5A n`eÙ)‚8°ðu^.8#¬ÖÝÏD©[wí ¯,©yÙ'KN¡C¬uŽÐyƒØckqm5¡T§¤ëVûÒ²5Ö~ÄúßÈCíud€{¤õr8ìƒB,¦ZY{Utúô’¹)K;̬%ösܾÑ#yÆ=6UcÜÔ»ÂÖ¸¨Ï‡e' O(=iWbàG‚)·Ö‰¨è¦sö"EÑÍ%×4˜,Rn;yÊSÎ…Ìɼ¥­–Tžä«‡\D™-m(  »ŠŽ?îõŒFµº£aAÙÚ£~Sß¶­Éú¿0”têx¬L:AÉI 9q1}hš‡ßzéœýˆ2ÅØ˜¶ RN̤”ÕžÈìî½¹Ô”èbÁ8*©ËáöÆ<Ÿô·VôºyR_L­ÉºäÂ\›aJp­àTÙÝÖ:>ÛBi†­j„ßÒÖªvô¥»+2^”c}ÀâÎJÜ;§ºÁ<1z©FO(ØöÊêJ´ ÓÝ9ĪÁý*âµ}hš‡øÞúg?b'ž¬­RÓé9{n»=@·.) –f*ÉÂN#{·´ÄE–¤»pUd¨tYÊÅIàÄœ›*yçÞ¥#&+Fjü֬닲•‰¯¥ôIyg¥Ò‚·Rû€Œ)ßÃPNUŽC¨p‰Ç\-éû¯J.3ŒìÜ™ §8ÞP!A>}ÜyãZ7P¤TÔÓ©˜‘ž–s¶ãKÒŠÙ6¾gtHÀêÝûJBy F°©š††ÒÚo{€%#{=Ï×¶µGQšPR/Šø#¶yÃë19‡)³ØF½¬}¤µ:ÝŸesõƒ]‘J¾Ë-:„’¡×‡ÞÓâ‹Ñ§7m2ù³i÷=$¨KN·½¸¯lÚÂ| ‚"¦F¬d0„"B<íåiÐgD•jä¥S¦JÃS3Hm{§‘Á<¸GCê›§–ÖÿÃÛýp[ľ©ºwùmoü=¿×ªnþ[[ÿoõÀXËaÍ?Plj„ë2R7ufiå„4ËS­©kQ䉌•JJRT¢$ž¨˜D!wm=¦výiÊ[oOÕÊ÷vI¦’G0HÞóp‰N/ë_P(Æ«lTS4Òë­©%2®Å$ñ£ ‹L#ò£„•v¨“ÛbTå§_—$¢ƒN)úb¡œgíq.T›-ì"°i†Ôµ Æÿ£ZîÙ²Òh¨Ì†KéŸRÊ2 Î7yvÅŸHÕ„! ÀB„„!!@B„Š÷k}ÜOõ3+Ý­÷p]>@oÔÌ ‰{R¯:e…j½qÖ~Q—Ú‘(Ø[„©XñÄSõÖéçâ[·à ÿ»Ó¶â7\BVžÅ ˆù{Sù+£!}uºyø–íøîÃë­ÓÏÄ·oÀÿv'_aÊ%côbÔþJÇèÄBèA_]nž~%»»Ûÿv=ÛhK2ôºäíº].âfnl¨6¹©4!±„•²GÙǰå?’±ú1¤JË!AH—i*ŠP€ÐÁ¶‰ïxy)ïTx›!ýÎÖ¯¹™ÿô{{D÷޼<”÷ªÚ9…,?gëžµL×j-ÙW[Ⱥ¦æeË_r²µàúQÜ›ÖKŸVî¤8òÚa•1JÝQÁq*Ê1ý–@þÜK–ÅÑ/6éJÓÑóÞÏLp‡šZ:D-*Gᑚ£¨Ó5 éܼÂ×W~ª)òÚH>"Úcë§—äõ¥³†¡ÚÕ'–Õf—8dÚB—•%Ož@C†/)t“7,µ¢a¥(ò`“¹0Ëj qÔ žAJ1Fë¶µCLì)Ôd-ôÌ  åDœµô­ƒÿ—¼#ñµ}ÃTºµZrjÞyÕÈ[4ÆqÆ—€å¤•þs¨h\X½¼Ó@\JäT@ÞAQõjá^¬ßšSjÓžXbr]ªŒú[Qà‚°|Im~˜¶Í¡-²–ÐJR¨d#³†¨Ü×õÝyÒë¢HKÑŸJ%zJ ޤïœð@‰©s²ˆin®e”¶ß¨¬Ÿꊷ±g|Q÷Ê>uøÃ6lÓöµ&ã¼$kõz’hr³AnÉËÌýéZÂJb@WÓ š±v%f¥æ™J¾ÓíKmaI>q—gdÚC‹ve”%±••,‘á슩¥,Ni6Õé¥>§55oUY+i——½¸z%8“Ù¼ JsÃ"0ÛNÄšÔÍ¡oËiúìõ6”™©—æú’àKøB0xc*Ïš%‹¼‰ÉU¡ LÃ*Kƒ(!c Øüý0ö_°ý™/ìŸù=*wÿ79Šq´µ®å£ZÒË>ƒR}µK7ìvf¶é éÂÈ圜â>›PiM+MmºEéoVkJ­}1CSSekue*Xs<ÁÊ:»aqbå-hBJÖ ”’IÀ×—¨ÈL´§eçeÞm' [n¥@ÂAй´õÛ_«ÛšshIϹ$«¢]‡§l‘¿¾'{¼²HëÀ7h]¤iÆ‘LVm:Å]Çj¤Ë³%Mͤ¬aE<0 ¼\X·ÈZV¤()'‘ ÁJ ¨àdÄ}³z”½ ´µ(Ó‘’NIâb2ÛJæ¬4»RãÏ;"›‚h¦mÖÔR¢ô!)Èê%d‘× ‹R¥N›qMÊÏKL-Ù-:•øÀ1ÙZÒ„•)A)$“ÀEx{fyj^XÓÛ®~…Q’p*iù‚_ÇÞ‚ž|r3‚ y[OÖ«×.©Úš=Nª»N•©%·j0JK»ÊPÇ>@!GæFy@X²’u*|âÔ‰Iéi…#ÛJˆñàÇÙÇ™l€ã¨A<·”b¥ëŽÓôŠÒ—¿ôò³V§Ôis-úIðòT 2yuã#‘ðiûŽzì·4š½*ê¥&ê’êp”% Oˆ+0¸±qÄü‘›ö›cÙ g¡éþ=ÎsŒ€œfr\Lž!’àß?ÙÎb™íA§2š^‹jé¶ëu“\šœR&gf&ŠÜqÀƒ™ê㞣¢4ºNÂÓº û![¬=s¿6׳g^š*.¸¶Ô²¡Öœ)<8ò…Å‹«˜G‹bO?S²hu9¥o?7N—}ÓÚ¥6•ŒÇµ‚Á8ï»h6¥=Sµ¹ö¥‘ƒ¸ŒånĤq1%%vÍÒ¥:³P¦›o¢<=kÔjn™Ùn\ÒîM8§²è8.ºA Ô“àˆ3Oí´R…í|Rde$›˜\¼»4´tN,$ —9R¹à޳Â2ªü¬îДj…êBé4&HvRYˉ˜N@;¼”’ ]¹ŒgH¨:Ç¡óSt§­SuÛt„Ó¦QÒ4¾­ VÄ)ÇW8ã…HÕ\ÑØìbp•0•*½¥Ò÷·§_Gof­!J7M¶ê¼&uÜü¨øÌlɤN „Цš'­®dzI~WX(å O[”ƒŸ|‡ho+Æ€¡cª-M$¦‰eÝõ7O§éb¥ÒO…Oš]J©µƒÓtÖ•-rÛµ‡i“"YÉi¥-¥¥•2œ'#>þÄôéÙ ’\â„ÍÎ?0ÂT1ö2@ÄJIóÇ^éÓ«ÏW«T÷µ,[Ö¼‹½3TIgÃï¾¾YuÑ„ŽŽç8öæ&ÚlŒ­:A‰ —•—l6ÓHJ+z˜BL”Cnîý,ù)Ÿ”¸€bÛ»¿K>Jgå. Ã9Âc43g v£iä¥Ó1sÍÈ8û®¶XnY+qE9É#ž#9úͨÿ–óÿGíBÂè®›?÷ë´|¨Ï®/fÒó•) º&iJq3"Ot©Ù(R€YÙ*ˆæÄÙZ—jÞ4««¾reté”L%•J%!e'‘;Ü"ÂÔ$åjÈβÛòÓ ©§[XÊV• Ga¤Œ¶jj'í„æê,ë+Ò’¥Ã'1Lxͤ{\$¤¥Gýç1Ÿ^;33[rfغ‘#OueBZnX¸¦AêJ‚†ðñ㉓B´v¥TÇÓ$úêI°Ôó¨ *’Rž;©Ïdøâ$ÊÞ„–çÚÕâPV¿~'}ðçÊ1µ÷>Ö¯j‚µûñ;ï‡>Qƒ$Lßf¾ÿ‡”òLl¨rjì×ßâÐò‚~I•QP‘êÞ·Ú:c]•£ÜRµw¦&e„ËfM„-!ÊO¥§ŽRc úîtÇñuÍð6¿Ýˆ—è€wТy?<äVø…mnÖ¬ÊÜVå:½"—S+Q•ni”ºXBÒ7€$ƒÚcÒŒ;D;ÎYÞD”ù”Æc2!‡m´ï8´!#­J@¸G]™é'•¸Ô今ìK©'׌ˆBBÌ„qœs޹Ÿ‘Ìä°Xæž•9ôfìÅg¾)š©mm[¾lëéô¬Ý=©D)Ç’„áÄw@äb,Ä0 …|ú£íüÍÉ|+þ¸}R6‰þfä¾ÿ\XœFgÌ¢Üw9°Ê”ªÅUÒ7ÖÝÄ2Ʀí ûHuqµ¤)*LæA‘~?T¢™¹/…׎êœÕ›:«Nìé}€Ë¥¤:¬•ʨ‘Öœú"ÌHÍKNÊ·5*ûo°âw┨vƒ8|LkÆë~¨ô3l¢¶YW’jñ{K£_çB´ßw6ÐWeŸU¶¦´ŽZ]šŒ²¥Öës ©C˜Êñ˜–6l U­}·¨UÙ5IÔe’ÿLˆ%ϸ±Ä9(‘xC;<›ˆ­;cémÏvUhw ™Mzvy¶]”œK+JUÑž)Vžˆ¤wi¹Îrž]QôÖ} »kÚöüÕ˜ò­ªÄÌ»ó³q! žNorHî/¾‹…`vBÂäw¯–A¼4v­mÓ¥’¹¦ØK’ ²7Å å |ñìë£5ù[ ø—½i®ÊTk’þÁe/­+WF”O âŸÍ‹G ÈX\ª»!é%Ûl_3÷çJzIRr~ŧ‡œJ³¼NñN ÀcûQ-éý[T¦õZ䑺) ËZLôßJfRÚBé ä…rŒž DÙàBÁ»•ße«ê´¯-@Ÿ¸hïHKTžJ¤Öµ$‡@qâHÁ=JO>؇¶sªê ½rÞÛ.ßjã•nc¡Ÿ§t¥«+YCˆáÌ`ƒÏŸ.Ëδ §–F3¶‹i$Ž™N×fe*óWu.¬:ÐGG‚£Ž~Ú#±¯«—Z¦õ{Pi"Š´6[QîÓ”tc‡0’yñ$òŽæ‚X×]¿¯×åÃX£½)K©)ã)0¥$¥Ü¿¼0Ï.µiUTh’Ò5Gß’š“p¹)6Æ7Ú'˜ÁæˆÑ횪՗%å¯ U¸+´–™5…qáRÔ¼D±S;´)íB¤l»d½§TÆç«*a€¶œBT%+%XQ{¾˜m¦×f Ø–ÃNm¦ï #MÌ;,H@[ŠJâRy•§ gøÄçH§JR©R´¹R̤£)e†ÓÉH@ŽÞd[å]¬Uv„Ô™š=›brÅjYô®~¦—ÔØsŽÑ‚NèÎN8ðŒ‹h]+ºê5»ný±LÕÃ@m ­§Ö¦Rƒ”¨À«%YŒƒ²°¹U/Ÿ«nµHÉÙ³Ö'ü#JöB¨ÍÌ8wWºyŒŒ9„ŒäãŒz[BiUÃ46¤ÙÔgêø ¼´© ¡)-aG$q;¤ð‹1ð……Èl{*è½mÛrZפ½RzV}n¼–Ô‘¸’Œgº#®;;VY×-Û£´Š-»Jv~}™Æq”) ¥)i`ž$dDÞêÛi qÅ¥HÉQ8Fwjõ‘o¶ª˜Ÿ™Oñc¤>u{QéŒT© jóv;l%|T¹(AÉø#%°%&iÖBq¢Ì̵6]—›<д´¡æ ÇÖå¹èVÜ¡™­Õ%¤ÑŽä8±¼¯yŸ4W Ï_nJ \½]ºD¹áÒ}±â¤}kôÔÛŠ§Ytõ¥K;‰š}ËQþ‚ùú#÷§ºCX¸çÓrê,Ìå™GVKŽ{¿ÁÑHši¥VõšÚ&П©ãº›y ”Ÿè½H)£’ž¥Wψwðèu±yÞC*‡*ë7Ú.ïócã#)-%*ܬ£(a†’ÛhN:€¹„#Ñ>Q¶ÝÙÆ#œB „!!@Gnîý,ù)Ÿ”¸€"Û»¿K>Jgå. Ã9Űٻ^lJ¤mÊûÕÏ2ûËXfT­8RÉsÙO×U¤ÿÊ+?®(4"Üœ¨ØÞk½…~ÜíÛ¶ûÕO8ÚÜHzT¡;©Òâ?1lX=Ìû$¢f¤ Û*ëKc’”:Éà; Tûžòº®iµÌ×® AÅž•õy0 D’I$“Ä“d=4²¥¬É{ÊçM*v«>¥*Y©Å¡I—h®Çäõb&åÑù‡ßaÀã/:ÒÁÈRR}"%-0×½A²'OÓW«Ä%<²à)þŠÏt“â8ðEܽ-=2»hÎÒë”¶´”¥ÖËHu£Ú… ˆ×v£ÛŸð•óW·S2‰¦ä¦TÛO ‚ošUõ$C`Íé]ýBÔ[QŠý Ó¸®áùu‘ÒK¸9¡@zAëc%ž$I¾A †ÔA( ›Þó¶¬ÊR\|Šmp‰G›'‡IüZ¼{Ür·ä¯´·Ø|ãã0sŒþ5 ϾáüÿV‚Ëó$œ6Mýwƒ3Í?Õ‹Rìm¶DÚ)Õ Y•’¢®Jõø"@ ×äËsK—˜iÆi[«BÒR¤‘ÔDföf¬ÞvÆãMTU?(žÇœ%ÄØr<Æ1C6¶•W™Ù̸÷©žÏìÿ>¥ÍÌ"´ö„·gwZ¯ÈÌÓä\GÙ[>Ž#ÐbP ]¶Õy Ò+RSdýêßšxÇ©KJ¯fW>'”cpOþzmxÛOU¡íÂ8Þ€PŽsÎ9„!!@B„„!!cŒÀÂ8*<ª½ÍoÒMN³#)Ža×Ò“èÎb9(êÙ¸SGh+¿ÖŽ2"1¯k•…NÞL¼äÅEcªY“ƒçV`ý£'¼Š¦GS“nÍN=qÕ©Ž¡ ä{X^Ìñ=šM/>¥ÞåÖn* !²º¥bFLùÏ¥'ÐNLT‹TïºæòfkÓí+›R‡¡N;;ž'Îc }çŸp¸ó«ug‰RÔI>s ™ÄWb>§Òá8¬µÄUKÁ+û»Êá×[˜™GæjŽŽI—h„þr°=ˆÖäÚàšÞn‰K”§£©ÇIuä Ä.ÃN¼êZeµ¸âŽ”Œ’|Q!Ùú5z\%»&)Rªþ6o)$xÌüQÕý·ˆv‡±î.Èò¸üLK¿þŸÙZþŒÅn[¾æ¸Ü*¬ÖfæÒNz5/$ŒŠ;6m‹sÝ¥Šc«hœ*aÁ¸Ò|j<=cl ´èjDÅI+¬M'Žfèð#¯Ï˜”e¥™–e,Ë´Û- a(BBR€祕Îoš´3Ƹ|4>]OÍ«/$¿±éöƒÐèå¹Ë‰ÁV›CXÝeÅÍ^DL2¬5,ÒXa¤4Ò„ <>°^• tU ¬|;2Åcçψ›“ö_%°„!ÇDB€„ !B¢;wwégÉLü¥ÄþÝÝúYòS?)qFȶ-öÌz)§7®’HWî*#“uŸ} pMº€BV@à•Ê$ï­£G&]ø{ÿ·mŠ»ÁRýõ3ó†&¨ÒFÔŽì]Ó»&án½nQ\”¨6Ú›K†m×J†”Dq´Çxk¿Éçå&$X޶˜ïwù<ü¤ÁìCZñd¾‡÷|Úï‘ÏÏ7¶,—Ðþï›]ò9ùæã(ä{eßµ«Å ­~üNûáÏ”ckîý­^(Õk÷âwß|£™‰›ì×ßâÐò‚~I•Q­]šûüZPOÉ1²¡Ê*)Ñï¡Dò2~yÈ­ñd>ˆ} '‘“óÎEoˆ÷4¶6y¢ç,ï"J|Êb¹}Ù‡MFÏ”ãÐ¥©§fñ-PctC¼åäIO™LC;}Û/Ôlz=Ë.ÙX¤Ì­·È›x$|IHþÔW±…¹Jc²Ý>}Ä·%2¤¨dÒˆ#Ñn¨ØNÉ7m*èÑúT‹keU CBNi“ä„ûEc°§|2·b€ý-¨þ/›ý ¿T>–TMþ…_ª6½Ð³ÿ)¿ÍÖõßL(·ÔÅ¥S©¥‡åð—&º-ét¹Ö‚¡œ×ö-‰ÌP‹IŠ¥>ë¤O·#6-:Ë †U÷«³ÁGž9|ÿô•ꎽ"z‘X‘nz•3';*àÊaiZˆˆìÏþá˜þ©^¨©XËw5=5û©ßv}q–è…‹£VíªÚå¦'^Iä¤'+Pó„‘”×î§}ÙõÄ•²§Ýj{áÏ™\eèlq¤%¶ÒÚ”€à~¡ÙÆ!@B„ŽÌs¿ôæÙ¼™&¥'Ñ΄M³Ü¸ŸR‡€æ+Å÷¢w]¾\˜§#éÄŠx…°œ8‘áGêÌ[ŒG¢:xŒ *úµgÞ{ùWc²ÛFæ‡sÕywú}—XuM>ÒÚq' JÒAÄc†Ô¤(- RT8‚‹ËuYVÅÊÞíb+0¾AÝÍ׉CŒE76δNJݷë/Ê(ñ L€â<@ŒñÇ‘W*« `î}îŽ05×.!8?Uí¯± Q5õ£nŠ}É>„§’_HŸBò#4¤ízÊ`N³NŸemù¤Š<Êþ‰ß´½å5 ÕE±÷Ò®‚O˜àÆT W)j)¨Ò'¥HçÒ°¤N#­ÏСգÕýŸ$̵J~¿¶¤éNÚIPµÔZ˜šÏÄSþqIí g:²dj²çú¤¨|Jг×â9#šb[ùZ¼•TÚ |›ûÜ·²Úå§`¬ÃDÿÌ•XÇ GuaÓÇNÆÊ}ÛKO¬E5Ä1«7­Õ#¥.ËÞÓ’ó_‚ê UÓãÿÍ>“ú£ƒªº~ð¢GÌOêŠY F¿|Uþ”qÿ°p_öKÛð\·µƒO87 ÷-,ú„t¦5ÃNÙ<*ï;ý\«‡ü¢ â—›Öè‘ÉÀ-ç'濪›Ú Ék{ f©0G,0¥QâÏm!JF}…mΉßõ ”Ö¤R~úeà1æ1šÑ6q™Vê«Whh•h“ùÊýQc„ÄÕÝ??îJ™îOVH¯ëô "#í)-34èjV]×ÜQÀKh*'Ì"ÚPt:Ħ©é9Š’Ç\Û¹ÌgÔŠ’Øn™K““HÃ,¥¡ºy=GÛ• ǸXiB›—ÏE÷*=µ£×Ýoub”dWñ“jèø{žJ6¾ÎÔÖ‡nÃÓg™f]=?8ñ?NøÎwée”!«WùŸ-ã,Ëu (/ ý^§lٖͶÐE-*@ÆøNòÏG&=íØæߌTU’±ójÔ­.z’m÷½@„!8Ä!BB€„ !B¢;wwégÉLü¥ÄCºtêÆºjB¥qZôÚœàl6˜ky[£8ìâcÊú‹iOäàâ2Ñ¥#Ø«¼/ßS?8bj2Ú Q­ªR)Tt½:Eµ)Ha„î rN<&=8Ñ–":Úc¼=ßäóò“,tëtºuj•1K«J59%2ǘte Oa§¢É}î™]ò9ùæâÎ}E´§ò ‡ðqͧ§ö]§:ìí·mÓéS/7Ñ8ä»[ªR2ƒ z#)r2G~Ô¯j‚µûñ;ï‡>Q°Áåš3¥n8§±(ŠZÉR‰—$ó1Z¹±D¶kïñhyA?$ÆÊ‡(ÂèºS§4Z¬½R•gRdçe—¾Ëí3…6®Ðc4‚A»”‹oóP¢y?<äVøÚ5Ù§öUÙ<ÔõÉmSª“-7Ñ6ìÃ[ÊJ2NèðdŸLxÿQm)ü‚¡üDhªG{CûÎYÞC”ù”ÆEqR)õê$å©,™™)Æ”ÓÍ+’’D}©rtºt½:Ÿ.Ü´¤³Ii†[KhHÂR`;1£&ºõßDn=7ª½2Ä»õuÅ“/<Ú3уÉ.íHíä~(íÚõfݨ¦£BªMÓfÒ0—p¡Xì8æ<6²û-L4¶_m¶±º¤,d(vyÄctè•\®bbÕ—”yg*\’Ë=¸OsñFliH£õ}cÕ ´Š¤gïj³’ëªJ ïÂRŒ)qçBPã‹<•¾ìì­¥ »¾©j»ƒðeqwÕ¢úT¥ˆI9'Øâ;´,ÓºZ^­G´)23òä©—Ùg A ‚AñƹŒÊ„hÀ„!!@B„„!!@ü<ÓN§uÆÐ´ž¥$@'cÁ©Ù–G&vÞ¦ºO5tƒé1ŽOèÖžMdý" žÖ_Zqñ⎠”iÉkèzXL~*œ’…Y/““©èeŒâЩµœ&dZLa•-'¶˜+èæ*|9eä~Ä!=jP[$}î]ÄÎ+š¤Ÿ›1©ËŒÊÈKó¸®'öcæÅHq{ª~w§öaè¸Ç¸ú5Z§/iú™7KmÙ„93Ró:ÙŒ¶‘¢6cí%n¹TYìöB@ø“Gr•(=Ò<™c¬êËÿ§ù2 D'J‘——FÂSê脤 ðB;I%±ãJr›¼ÎaE2!@B„„!!@B„„!!@B„„!!@B„„!!@B„„!!@B„ÿÙifhp-3.5.20/DOCS/LPRngT-S.jpg0100644000175100017510000001767007411207206015534 0ustar papowellpapowellÿØÿàJFIF,,ÿÛC  !"$"$ÿÛCÿÀªË"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?û.Š( Š*Ž¿ª[hÚMÆ¥vq+œ¬z=Éâ€"ñ»¦è6&ïQ¸¯DQË9ôQÞ¸=âMÖ­ã +$µŽ×OšC摉.OAÎ8y¿‰5»í{T’þúBYŽùc^Ê*•”ïkyÔg ‹"Ÿps@ExæÈêÔ­“;Ì Éï/Ì?Q_:Áss‚âX˜r 9ô¯§­eŽòÊ)ÓæŽhï¸#5óWˆlŽ›®ßX‘î‹ôϦ({@øƒâ=)ÔIvoàc¹;Ž=›¨ýk×|â½7Ķ¥­˜Årƒ÷¶î~e÷£Þ¼§Mðbë^ ]kI‘ÚöužÝ¹´çåô8#ŽõÌèZÖ«A¨Z1Yalz0î§ØÐÓ”U]"ö-KL¶¿€æ9ã/¶GJµ@Q@Q@Q@Q@Q@Q@Q@Q@ygÇ­EÖ=;KBB9iä¸á›W©×üz·uÕ4Û¼ GŸpsÿ³P7ÂM ÛZñ½ìb[{HüÂŒ2‰ÂƒíÔþÍkÖGNÖ¯lÇ‘; úÇé]§ÀýNÞÓ^¹°‚µäcÊ$õeÉÛø‚*Òøà=gSñ$ú¦“2Å:©e2…mÀ`õã° øcâN•¦xVÊÎî¹®à‹Ë+Œ`/$úb¼ûÅÚºkºýÆ©¯Ù„Øù7nèÎqí[|8ñt­ƒ§GþóÜ&?Bk¥Ð>?˜²kz‚íb¶ïõcþ'ÀK© :‘Wòƒ$ªØùA ‚3ëÀ®ÇPÃoã V(‹–Ày#ó¯j×5 Á"Ú¡oõ‘ÿ™÷5àR½Î¡~Ò6énne$àrÌÇüM{§Âwð–üü­"¯Óy®º²¼#¦cønÇN8ß @9Þ<·êMjÐEPEPEPEPEPEPEPEPX>;ðòx“@’Ë*“¡ó sü.=}JÞ¢€>_»·½Òõ·¸I-® ~GFR:­z†¾*]Ú¶úÕ¡¼ 0'ˆ…|{ƒÁ?•zŠü)¤xŽ^ÂVuIãá×ñî=yoŠ~êzE•Åý½Üv°)vÈ*áG^9ó BÐ~ è:Σ…¿Ú£¸œ‚HÀÆz‚}+wÄ·7vZõÝŠ£\C IqH¯œ´KÆÓµ›;å<Á:IøÍ}2Â;‹b9óPÌúΫ¬^µæ£róÊzÑG ¯KøOà–…¡ñª˜|oµ„öÈáÏôy†¯hÖ­Ý‹õ‚gò$W¼|0Ô÷‚,Üo…L-“ýÓúb€:Š*3<#þZÇÿ} rÈ÷]OÐÐ;1ÔQE (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (®'â/ÄÏ ø&#ôÿiÔ å,  È} vQîZ‰Ô8óIÙá°Õ±U*1r“èŽÛ5ÈøçÆþÑ,nlõ½jÚ7’6F™)cî®HükÃï¼ÌÇ–†É›·øW ÆU«ü_Í襎CƒÁë™b_òÇY|ûZže}ã(Ø­¥¼³ã£9ó5´~2üE½¶†ÃIhàXãXÐ[Zy’KnÉü+ßt„žÑ‚˜t.¤òÒ왉üÒ»++;(ü»;X-ÐtX£?!SõlUOŽ¥½ Vo’atÃá9üæÿMCãÉ4ŠÞ º{ÇÒõ饙·4¦ãëœV¡ø[ñZåv.ôÎ%½AüÞ¾Á¢—ö\_Å6Êÿ\ëSÒEz“GÈ_ð¦>'‘“¥ü‹ÿЦŸ„¿m>hô»€é•ôyý¾¿¢ìš=ßõòõçÖûŸùŸ+ãF…óGŠ¢UÿžRÉ*È‘Vl~0üMÐ%jsöõŽþÏk~`)¯­ê Ë;KØŒWvÐÜFz¤±†ð4gNèЭ”kéŠÂB^š?Éžá_Ú+M™’èÓY“ÁžÕ¼Äú•8#ðÍ{†%Xø[Y׬¼eà}M4»9n¤ŽßM•³±¶ä\gi¬ÿ‡Ö3_þÏ^Ži~-+c6÷óGÃòŸœVöãÖ·,¼9¨Ý|>ñvoðûFð•Þ£§Kon–W1:Ü»E"åq‚G\ýãHg¡üqñŽô;/xcE6Þ1¸7mÇ“ |~ú2{÷û§ŽN3Øøà®§Oý­â¹Ž¿¬HÞd†bZcìysîß•x~—ð_ã.•we¨éz]•–¥bC[ÝEª&ä`1Ó©èTðE}Að—ÄwÞ,ø{¥kÚ¬V·×ésM”G#FÅ}‰BõÅJ‹ªùë­VË¡ôxÜt0PöuEÉ-Úº“òmô^Z3•øßñ\øW  n éºŽŠ³Gn»/ÚP°8Êye@È#†=«;àGÅÏüV†êúËšv§Y\$Í©»9$dìQ ÔŽµCöãÿ’?ý„m¿™®oþ õÿ$÷Ä_öú)k·©ó»«ŸLW—|vø‘â†:)ñøjÃUÒ<ôƒpÔ9•˜Jydc Žö¯Q¯ ý¹?ä„ÏÿaæÔ1"‡ƒ>ðøzW”þÆþ.ðç…> xŽ÷_Õì¬Ò-FI<¹fPî<”ÀUÎX“À¼ëö8ðÆµ­üj·ñ=¤Ði:qš[‰öŸ:2¬@ô$îéè +ŽÇµ|_ý¡¼AðËÅ) k~°¹šKu¸Ž[]UŠ2GñD9SÚº-KâÄ7ÁpøÆo†·zD–‰xÆÏZ*BÊqC<“Œâ¼öûÿ’·¦Ø?ý-}üáÏ€Zdú®»¦–OÁÙEÂ4²¿ÙÔyaÉ$ñÓëL,h|øÑáŠpÜE¦Ç=†©l¡ç±¸ ¶Üãz‘Ã.xÏdds^™_~ÂÞ×n¾'7ŠRÚh´{+Ib–ᔄ•Ü`FsüGÓÚ½›ö—øÉâÿ…曟¦èš…†¥´>zJ%Œ¦ÐÁˆ|îãP˜š×Cßh5òçÄOŽ´Oè>6¶ð¦§èZˆÚ™¤šgdÜ[ha±nrq‚z×±xoâ–¨|‹ân¡ÙØ­›Oq;™]X¡EõËŒ\Š.$ø¥ðêÃÅvãP²+aâ lIi{ÊK/ >:Œ÷ê?Jé¼{y¨xnÊçR€Á}å캌»*¯øn¼3áßÅo‰ßôOø§Ãv¾Ò´Í°·³º‚IåºeMå ‡P§n9òjÇì÷ñ¯ÆŸ|BöÿðŽhVºe¡ÿ‰„‘Ý8ž0ÊÅPýàXcÚ³Tã¹.§UL]Z”#Fz¨½<»¯Cè*(¢µ9Š( Š( Š(  ðjioû;ø ûVËÅWqýŠ=‹ 4âPvž_É`výxÎ+»øFšJYßÿeXø¶Ñ ‰¼x® ±ÁÇ—ç18õÅqÔaÓgÉ7aðh{(Ô\É.&ùOɉAüsÅGÿ M‡ýþÙñ4†{¡èk€ýžä’i_õÞóÿJæª µ«]CÄAÅÛo°·fû vöÈTey˜À8f·ÑmN¯o` ħÏÀþ OÍê9ìkÔ>*þÏ7?%ðÊøV’4Ö4¨¿ÑOí6ã§Õ—¡õ>µÇÁC¿ãÿÁßõÊëùÅ]}¯ì½c£øóþo xæóDš “siÚ,ž@'îd¸Ü¼‘ÈéÁ­ïŒŸnþ)^i·ïŽãƒû:*4¶ÓTÏÌs!êT`v£ isÏ¿iŸù4¯ýl?ô•ë§øá8üsûCáin~Íöä¹T˜ŒˆÝnY”ŸmÊ3íšè†ß³÷ˆü/{ãtM1,§÷òÚù&ÔÉ»9*ÌXn03Îx¢Á}/ýœoµïøÆ~>ÕµÙdº—ìšDi´¸›Ë”óWå\žÜ÷®×ö?øA¯|=µÔõï·Ôµ8Ò$³W aIl¹n'˜÷ãÃ~éÿ´·ƒíWÀgT_³4–…ZG‰,‚\6Òrzµéß¾%|`Óþ1Ù|=ø›m4ÇQ…äŒÏ k$[Q˜8hÆN½ùúRCiŸSQEDQ@Q@Q@1ðÖïÇøy¡xcPøU¨^ͦZ$"ꛇp Ö®¯ã}{IÓ¦ÔoþêÚÀ7K'ÛlÈQœdáúsÉí^¥PßZÁ{g5¥Ôk,FÑÈŒ8e#“NÚeÍ·SÏ­|_â­‹=¯Â=D+®UãÔl°ÀúüŠÑø9¡ê_ÂÍ?F×ì~ËtMɸ¶gWÚ$žG J’ÊÃ¥yµö­âÿ‚úŸÙ%·—[ðtþŠÎÇ}¸?Á»øHô<Øæ½#Â<âTEµÕâµ¹n¶×dDàú ðkšž*|²Ò]Ÿõ©êâ²\E(*ÔW='´–¿zÝ>÷<+Nø;ñ,ë¶Ö·× ú+]®‹t Â’ÚDG4Rs¹¶²מ”º·Áÿ‰‡_»¶ÓçhôU»}ÑEÂŒi7Ë,Òs¹ ª×¥}T¬¬¡•dx4µÓcȹòÏŒ>üKƒÄº¯ü"oåi6sÊš,hP<›ä+sÁKo-ŠÂМ2¢â6ôÁ9®÷ƾñˆ¼goâ=KÀM©¥Þo¥£ë"/ìk„˜³¹u üË´î@O¯qº}:ÉšöäÚÛ¶0ÓHUx÷c\‡ˆ~-ø E &× º”Ë;0f'ñ_—ó5© kÞv:0øZø™ZŒŸ’lòðßÇ#Æ2Ü !ÓQþÖ»¼¸ñöˆ+ye"0K_/;»ªà€Üæ°Ûà—ˆÓÃLø|® <%)€íeœùÝâ<€Ý1À5Øë_´BM/Ù¼3ᛋ™œâ6¹~Iÿq2OçM²Òþ3ü@Ãk‘ðΕ'XãO)Êú9ÿ\¿]§'jiÉù™ì®ÄÒ´ÅÊ4£ýç¯É+¶^ñ÷ÇøC¼o‚mü%u®_Gk ’K ꮇÝ#içük‰ñ'ĽwÇÿ?áTøƒÀò[ÁygÒÆ¤"iw毛.ÂW@ç5ì >xoÁ¥ö«m¾þþìF>ÓtŠÏUÁ {dä׈ÜÿÊA£ÿ®kÿ¤5Дå¬þïø'™:”)^45zûÏ·K.ž·¿¡£àH¼_ üBÓþ&©âÿ ZKm,ö>uÍ¥üB4íÌ9#¶3Ç¥w—Qøká÷Ž-ÜI«ø×ⳓl·3!œ@2IÈ8!$9ÁÆkÑõÿÙ_øƒEñò4Sè†wŒ…rÉFR}:ø |Õû$ê·9øõãêDÉ?ÙöA¸çÊå¨ôcµ8w=Ï[ño|7¦Í­kÞ ³ŸK·S%ÑÒµ#=ÄŽYü·€989ö5Öøg]Ò¼K¡Zëz%ìW–h£<éìGB ÕùâŽx^P©¯jåéú]®<éÏv$ðˆ9Ë\U-SÄÞ<Ñ´ùumOÁV760'™È)}Oÿ?_Ýÿ¯íü¯wþÿùNo.¸·1EŸù㧃ÿ¡N‚÷㯉âW¶“^hdèñn„}FÚè|&ðƾ÷O¬]^ÜIlTù(Â4psÉÇ=½k»øõa¶ëNÔ•xuh\ý9Ì×-ðëıxgZ’êâ)e·š#¬xÏPAçéúÖ˨EÝ«úœØŽ-Ìë.XÍAvŠ·ã¿â{?†¼#á¿ ÄEÑ­,Î0dXòçêÇ“ùÖåaøsÅš½„°½S62amqø¿†kr»#d¬|õZ³«.z’m÷z…|Ÿsÿ)þ¹¯þ×ÕWÆèYLl’'¹|••Š¡lp€Hô¼O„ß_ãÊüWó¼0.…ûÚgÙþ£Êûþ^}úSd#èˆÖh$…þë©Sô#òwìMa/†¾*xÿÂÚ‚ùw¶ÊŠTñ‘®¤c½Oã_WX¦²„ß$)tPyË@Øä) 3êyÇþ^?í~#ø&ò×Nñ,QypÜ©û6£d›yVàa€==4M|ûé’jŸüwãTý{xäìÍ4ûÀELþ"½ÇÄc⯈ôYô[]/BðѺŒÃ>£ý¤÷o· bŒD™lg˜b·þøEø{áohq·“/4Ï2yÞv>§ôÔó‡ì¥¦IáOÚOÇ^½9ã·›Ê Æô¡VUe?C_[šó_ˆ¿ gÔüg¦üAð•ì_ŠôåòËL…­ï¡Á)€ç¡ 0äz XÖ.>,êºLºe–‹áíêd1¶¤Ú£ÜˆsÁxâ)fî73×4lSÂfÍ6Moö­ñ÷ŠmÁm>Îæô GÝ/,ä üU\þ/í=ÿ'gðËýý;ÿKž¾ƒøKðûEøqáDÐôò»1šîê_õ—2ž®ßÈÃó¯+ø•ð—â'>*xsÇrMá‹94&·)l·30›ÊœÊ2Þ_Î)[AßSèJóünøwáÝèZ¶­:_Z0I–;I$U%AÆà0zóïWu~.Ëi$v^ ¶”„’[»‰O®ÑÏç^7mû9xªéd¼×õí.÷T¹šYî§ÿxîìÄýßzb>Ÿ¢Š)ˆ(¢Š(¢Š*¾£{m§ÙK{y*ÅK¹Ý» ±^Añ¿]y¯âÐa|Eσ÷œýÐ~ƒŸÆ€9/ë‘x‡ÄSj0Ûù• Ÿ™€èÇÞºï€Ó\&§¨@"ÛÉc S´:žzgþUÏü5ð§ü$º£µÎå°¶Á˜Ž žÈó¯h»¼Ðü1¦"Í-½…² "3ô’h§ü:þ%ÐþñÃ2ʲ#¸$ džÄ×™ê? ×5Ë(ï£{kkYFQä|–8?®+Å:4úµ6™q"Èñ…!Ô`0#9¯Zø#}öŸ ½£6ZÒvP?Ùo˜~¤×7ñâÃËÕl5^&ˆÄÇÝNGèߥYð¿§ÂýYgp̺ '¯˜>Qÿ}^ck Ü]Eo–y\"Ü“Šh’AD$aÌ¹à‘œ~'ó¯Cø7áy/5×®ã"ÚÜÿ£†ë$õúçô a<¸Q?º S袀 (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ Ïñe®éri÷ñîù >ò7f±­ (çÏø'Yðü®í ]Ùç帉I´?‡ù{×1_Tž•ç_ôÍ:8’xôûD•ùgXT1úœPÀ«ÿ'_»°fÂÜA½GûJÀšì¾0érê^Ýo Í=¼Èꈥ˜ƒòúþ•À|*E4¶!TöM{•xß‚þÞÝËÞ¾¦ÖØr-óûÇö?ݯҽ‚Ömmã··bŠ5 ˆ£@íRQ@Q@Q@Q@Q@Q@Q@ÿÙifhp-3.5.20/DOCS/IFHP-Reference.dtd0100644000175100017510000000777707121757272016665 0ustar papowellpapowell ]]> %orig-docbook; #"> %"> ifhp-3.5.20/DOCS/IFHP-Reference.pdf0100644000175100017510000215522410130541262016634 0ustar papowellpapowell%PDF-1.2 %Çì¢ 7 0 obj <> stream xœeSMoÛ0 ½ûWèØ5'R%ÝÖu ¶Ã°®õ±#q›lIÜ&é>þý(Yr >~"©¥•N_9—»æ¥ywÇê騼(ÌWõXîÔ‡N.å—,ø¨QuÍ”‡ ÙƒU^ Õíš‹/‹Ï·—݆ íƒÄt«æânxL ‰À‘+8†ýrHx``¶þÚïf#»ûÚo(*P‘¹pIEKÆ€3Vµ–Àpu)½d³/Ùß–§L)íúŠ‘Ö6ÁY}¸XŒ‡ë "Wxó¸~n¥~¸,BH¥"èlDÍQµh,8ÊYÙDÐfæïO‡Í2[Á ÙÇÿÌ‘ÐVäºtÖTh¢Ó2‚™n,AS¡ßöZe”.©…ÑIÅ€ª%‚8 |îŸ3°âÃûþxê³,ÑêN°w nQFŽ2ŸSÀ¤ùþtsÄm¥FÉIëŒ»Ì .²ãº Ù4 [ã ¶ÞÛñi3ó "Ö³‘«îã¼$«Ã¤LlÓΟ+co17*óÜŒyÑÄlåø5)#‰ÏMJÿ&öo‚¢xÉÌl¯‡â%ú·Þ¯ŠY‚ì癤ûiÍÉƹ«›ái¼*O%UU7yÒâ“©Ô‘sSm·æ˜ÎÙo×ã~˜yæœàB¼mÙY“S ÊË3&§›cÿ·ÛÿÉfËÀÜ<›Då¶dM~qŸ:õ½Iß?-ðù£endstream endobj 8 0 obj 548 endobj 18 0 obj <> stream xœ­YÛŽÛ8²oýÆ<ͱF¼“³On[ÖÂm{$9ÙyqÜJ·&nÛ±Õ›ä“ö/·D²(9V< °”DV:çTÑù4ˆ#2ˆ›?þßõÓÕ§«Ob×ðŸõÓຸú=#j`"#©äƒâÕû€ ‰”„¿IÄä xºú5½¹]üVüuEEÄ©€wŠû«_³òC³FDd¸Q~±<”ÛuÙ¬3™Ø¿~·ÚÚ—M¤Œ`~ñyµùÃnG‚0îWE³¤#ª Å]çëÚÍb…çÓ8æök8H(êWßýz³;ØeÅR¿\}xÜY$"¿û­yü{FI7÷!1òÁPXµ½ÿjO¥—÷·8ˆˆC1·U}¨Ö=>±àÒ¯š%H˜°ÃXììŽqÄHŒù~.7›fu(á`fÄ`ÛjŸw{ûŒ ‰=T*£Îæÿõ{ÇŠ¨#êÁà1?˜Q!‡‹ˆ+¦VYñXztÙ ³àMD§}5€ú !ðèýa÷pX=Y.Až†âùÕÑK™dôô"‘–!Írû¸2Þ¿lq ªqo$‡¤Ó~éK]nïýËp§!ÜG€{c©ÐäIÃëÝöÅÃóaõ~SÚ¯$œ]mï}é´isÚêæ}{M$nV=í7åS¹­Wuµ³ÉHàu›Ìîƒ/„”:$m_ö3¦hÕÖQÄË4–÷Ŧ.~™RƒH~pR!<"\à»ÏGÞ ÐUGŸ«úÑ –ð Øú;58(GrNÙö¡¯è vWaXtâ×4È÷¸ßí6.æ$BûÕúãꡌüÎb ag %jvV‘$êïHGYdL8çyß”èØ’Û–õgïAÔ·Ù>ÚÒð+ãê±m@[NÃÀ H²«md4Ãà>­°âK9nœ °QL1ÈTé Sô ¶‘Œ8C ~ý¼…zõ³:Ž@zügXýP:FK…2Áqü"MqŒÿ¥ËI3*‘U_ª÷Õ¦ª¿zõ‘¶½ô5Èç£gôåX·•òžÒGwÉ׃NG1/\-2ŠÀר”ˆ‰1”cY{zmS4&¤¸Û—î´•­W E±T Æ5h®:ÖÕúh  .qKßàNÚå ÷æ°öÔ•˜vŸzUmÏmîéySWûÐ7d,BÚ}ÔmC ÖäÍÃÁt Ôi^ó³-H†+*È+;ºôFjì—ëw,7åô´’˜,¶qBÅ×ïw[40 ÓÛšùÞ§cˆÅdâ`CGÛkí1&Š[Û^ïžž|ÞÐÍ7Õ‹Îthµ»}“—¥È©&{)òMÆ¿ßp\MLs,TûKýÒË@Bwd´Øë|}¨öî#d;\,ÆS×€¼…°¯Æ‹M1xó •úúPï½Ü~_žOhž;å½9Á³ú4ãÜ=îû#Ðçê>pˆ„ â°ÚúÞ HJ¬UŸ_w”Ó$Žùé¹:|<úAÑozØÆ­föîVå©:O'»#šºìš:L€öPÐŽý0}Úûk  ÒV¯¶õ~ÝÝÀ%‹·iîÇ~K„`2/ï’YaU ‰P9:@‘Îgž2Z <4›xh¹ (nßB™u’äã,½N&~2Ö±FÌóùMñÆO;1exâ(Ãm”%wykâÐÌ™wÿ‘¡sG®TPÖëtâ‡ÂÁ^¿õ&ˆº¿…DÀ[-$Ëâvžå®ÔF7Wd¸E®Qöñ/£Ü+G¶“Gšÿ‚¶¨E‘µc÷höÖGaZÆ'ÿ^dIn÷åÍ0ÄÃ8ó¾fA¦w‹iêrfrAp,ÖºA0WÓ,ÍŠ4±; ;-b–~H“pOÇ ÒÙxºœ¤³WxÍa”ã³k‡“V:¤·,|Ê,l6÷Íô:)†ÅÃà5MïÒÂgcšRºû®h0d§`0¢9È……•ÞÊv`‚a|f<[Hþch±¦·c7>U­ï’l|;r2ã¦ÛÅG×é4-ÞzU\ŸñÒÀ‡›´˜aéãÆHq—WûÓ·G.jàe{u?õ¥ƒ†[¤ãåÔ=€sdÛ‹Ël1Ï-€¼qò ¬^¡NÒ|<¥wAð,t²(0*P$9ø¡Ê1ôïüž)'ÄN^{×ÀŒ…ÌoGÓ©o¿šê‹vtQÎ7'a<¸N¾áW­i:ºž&>­=+EÇ[!kÕ'KÆ!Åd—³M‘Lˆ+µ/óæ'¸ÐÆýËÊt_ƒÏÍz^¹–HÂÈ‚¯ç‹dœú'C¦€„‚Xô•ô~“€:<tÄEhŠoñìÀžpúli<ŸåÉŸÞ•7ª%„ ±œ|⤠S\fGw¶€Ð&aÀÃ^9A66Úzë»oÝ :u[Úÿ‡Yý„W!x³:÷ªð«\__/³{¶l~Ú 8ëѾù!ïDBùò:/ÒbYXÆ ÑÐz_Íç“Üûn)ʦYÈ8O²0¿NÇIþO»Ü©bÀ˜;§¢‚á'´0IbÔË<ÁI”™@…¾Š÷Œ$n‰wÆè¥ßའì… 6¤B4¿Dá–7¢M$ öÜÌ´qkmE’Ù=0È¥/ÍHå~|¶}‡Þ­Ú-²Ž˜pîp¾Ì—‹J…YG~(:vâ'SÞ΋½“†ìN3ì>ÀI`°¦'Þž÷š¾>ؘfÛï`ÀåáB×3c¼¹Mà8g> stream xœí][oÛ¸Îc~E»@;ïäc›nÙÓ‹·Îbƒ¾¸Ž’èÔ–\ÇÙnϯ?%RQB7j.°Ø ö¡ÀXúÄù²šùDr†_ö3 ûYý_ûï|¹÷eïË>q6ÿÏ|¹ÿòhïùBöiRh±t²×Ü@ö%÷U&î-÷žýrôß=’Éê+ŽŽ÷žÌ>Õ&Ê@s¥[Û"omYf¼­:q6D™ÖtP•›¼Üœ×?<ÿ@Ù¾#©äõž±úJûìg†jwýdÝ>³Œ·ùÉlÞ<×O­œ ˜É„î›É„ºi¬X ±+¬„†ŠXˆ• Ö`xyý>q£ÉBIz›¯?p‹Ó7ÞGb?~[Ü=d ™z`—­Vþ¯PÔ«ÍI_›Rï?#˜t×w§½†é_ïÃr³®Ž/曢*ë_EÔèëßTBb!VÂCE,ÄJ ¥Š(dê®L=œÇ ´æÜÓ‰ÄNR«ºkû¢ðÅüsY9T \…Ùᯋüø4_úÙ`Á@ñ9‘ø…X£‚G,ÄzŒX˜ˆÇ‘ˆ‘©”™zH(E¨_ß&¤XDHMÏòÅÂÚË2æ—ã'ëj¹jDã ™ˆ 3Ý€†X?VBCE,ÄJk8ÖÐ…Xˆ•ðP ±RÁBq€2 ™º+S÷ç±Õ‰œ‡úDZ›¢:±©PìëÄ·³bQ”§õŒa¡y›âÜ­¡ LG\N8~!ÖÏ•ÐP ±RÁJ# ¥L퀩ûrØŠ»LJ?U·]ÜIwu_ÜM~s“€4%ˆG\|Z4]µ¨²‚/´¹ÿwm’`ËB­f—ÛL|«Mu%gÃÜÛy8C¬R b!b 7¥Q, S#fêž<æ@D¨ktú,Òþƒ])¡Œ4­N6_g®ö‘1Ðõ”9&AYæ:,Ï7³ÅbŸ$)ä‹+5m¼ñ *ÿuz±wHÄÄxÛytC,ÄJëñEMÌ/ÈÔH3±MšR…¾—¼MÅßéf`Óv“Œcý ^u²lj ¹€Lïɇ|^W –ǹ˴Ò"˜®±Îãn„ ÍgëfÏ~]÷HÒxˆ…X˜Q1O Scfêþ2*×ÜgD—Q#‹4Z£õÕfPf$. V¢X ±+,” ã ÈTÊLÝŸÇ(ÂÏ¢ˆÚÕ|±þ“uQnšöÔ€$Êü­ŽóEs8‰U‹\y‡ÚfMÍ4 g@ !ƒÈÞyØBeXˆ5j¬Ç—0_"SãUýŽª6}o«D{RJ£3ú[%®®¿¸VÑþYÏþã„ ®Â¹,Õ*Ëp.>iFˆâ^xTÍ!,—þ<Ï×Må¼€LÉ[E(T ˆ…X£Æz|Ñó 2µ Å`µeÚœ˜V \ݬÁëËû&Yt«Æa¹ºh™°¹Ý„ó,Úcå•PaÐë™+`±€$#~rbš/òîˆ5m‘U䯓H{ X ±+¬Ç—©0§#S»P?2)h_ýtj',²°èÆš÷›Vî° 2Þâ—…0D‚ ü*m(çz…;F+¡¡"b¥‚5Ó&zdê..[!#D×¢x»‰íy›3ÜkD2-þ×TÊ<¼ÈŸ¸^&”áÈ‹Ù*_üÅAPÐ&,÷\›ÑÑêVìÆ¨ ±ëLô1="Swbj€ÇuÃØ®'Åw²ì„‚-Ù¿]´¡J…ÊÙo«FHP*ÞOñ $7· ©Äµ±b%4TÄB¬T°†ÃcöÂ[9)Ë)PÃé ÿMvÚ S8djt©€”&œGýÉ(7Uøòh…ïÖÆb½hï‚}‚釙ǀ•ÐP ±RÁ ¿ë$€é™/SC\æ1ÕÞæO×½ºöÁ£u¸ïòö˜b¿NM×=ì³»T€4Æé Z./ÊbÞ¾&A2í9›¬«M5¯Ú©¤ºÝ^Ö±F4ÄB¬‡Î˜)„$ ÞÈÔx™â1mm!a²« Só6aÆê=?¼> öËÝ%^”q?îO^N_¹'Ö§¬ù1´}83PZ{ÛÑÁäùá¤)ùdü÷ê“»\5av Ú¬»8 J­qq +d*Á*L(ª¡þ4›ëq8VÚóbµ:oC±…\†Ý­>óÐUä~1U$âbºa±~¬áð9“ˆœÈÔ˜à0%Y “Ê­é*V‹ñçyQž:`›€DPîÓwo]ç¬zßDWŸúº6Õ'òÚ¯‰Ö›o™nf›‹óTuû*Ë“j½ìr—E~ baÄt‚LÝ™©awšfÄ¿~TmM—*’.ë5ù¶{”!²n1¾(›ÃDˆ…{Ù§ùúo¢ÒêrŸ33•y_V®y‘ ˜ò.4E’öB)ulï¢KÇ T·OýJŠöÔðë$¥ñ­Úù[…L¥ÍÔ›¥‡°ïz[S>:# ¦Å2¯bÇ LÖÕ§E¾l*fì/ö!T–Çí§@H8.ñEm2öS…%d¿l[7Ïv‰nˆ…X©`=¾¨‰ù™ÚI&ÖR1obÛ:«p0‘LÜVmb. ÷·ÍªŠ½w»uºó£ë=J­ñÖ=j’ ců=HdêÖ3cá[Úíçá—O–! u–1Å3‚ºK‹¢¨¯ýõhÿ½ú¿ÿ2H×Pendstream endobj 32 0 obj 3328 endobj 117 0 obj <> stream xœíKs7…«²Ô¯à2S!x?–ÅN9%OS™ÅlRmª-3¡HšlfâüúéÀ‡@©-MÒ óT®›«ô=§ÑÀÅÇ%lD«ÿÚ'wgÏ>ŽXÝæÿ™Üþy}öí[.FŽ8͵]¿?k¾ÀFŒ9¢øÈ0F„]ß}­È?®=+/•L›òšë›³¯\ÓÅ|]} 4áLðöƒl~S52K”uþ꫺EËkÚn7wù¼h†XíÚöúÇ8QŒ*³ß$UöÑ«º5Õ+¡®‚V*¬ªIÝÃkþèUñ&Ý©§~/NŸÿµøð"}zü{ˆ"õœKÂ(w¾çÂTm¥b»vê\XI¤3Uû¨›ÊG±úëÌ”-Âû ‹ÅÝ]kš¤ Î ßÇËé<¯;@‰æÌw`×xqâb**+¡®‚V*¬îxˆ`"ˆHõ©–„Rk¼shŒÇÖh”vÀ 1ßçó|•ÍjçP Î|.ó¯n7«¬2Õ§Êc˜ÿÚ®á(_†¯××£Œð7ÿ¤"}SwÞ‘ÒÉøñ«l’7í’nüõ7ù»ºŸ’p¥üśۺnë;µ •…; 9 ‘zn¤ºŒXeõW {?çRÖf]ɺã"+6uöäšXeý}ü&_¯³Û¼þDÒòóøxÚ) ¬AáÁëY§§rðˆTÎIÆ™õ¿'Ü}çÔú&ñMW«é¼Èëu峤fÁí*#‚¡zQ5i" ¾¿7½0Ž…§Ùl:ËÞÍòKY¸6ò4»Þþ’"ÔÚû‘ƒ°ƒÖ@XñÈçP>Dê9CÄ:¥ýäìÊ®"Êþf1Ÿ‹RÞëy^iˆåAÄw'›÷æ¨[y¶ÆoÖŸæ“fNY.Ã{ðÿVM†ÐM‹|~ã祹°±ÌnóÉb3/êžðj¦GÞFï™ ¬ÏoJáVCRB¤†©.#D+ç:ŽÁÏëöùŽΜo=ÿO}%+s½ÜYÿ %|{¿7ËåbUgoQ~ÁÖ)¬½'¨¡²ê*X`¥Â:=í€Ê"R}øI(³a­´¤Gýˆ‰ø‘77íC©(ÑÊxLܧ¬‹Šô¿÷¼s ¬„º X©°NO^ ĈTO–Eê0Ó!ÅQËb#–åõ|ZL³ÙôÏíâmA„´þGýn|]OØ·ã¼Ø,ëÞ(B•ôÍ‹y±ZÌZÿÃÌÿmAbBi,°RauÆ#3Céç yÿ}w£Ñ‡õsÎ%µ¾›—û…s7[iN8W>*¯¦ÍÚ´R°OÚý”PëË`%ÔU°ÀJ…ƒÛ‚H=;R]†, s†û›Mªª­CE}¤¢ÏCûéƒÅ3¥ÅóÁz9/VÓf3(we÷ïÞS\X` š•Jš† !RÃT—WÕû¨ ‹Oj±û&ÇÊÖ4ĪóTe}=dY §»E¥÷üX w,°RauÇÃU$á*©"ÕaÀ’pªÃ‰RWm‘59:Zñko³µáŽçEá×SÂ}Òúš¡æ&°RаÀ v &‘’ÝbŠ2ÿ½˜ÝjK¬êh©°c†ëçµÑfØÓÌVBÉ ¬/ƒ•PWÁ+V"b [H 8RF\¯¤ +ט:‹•†»œ®‹¶ugmÔËl¾nž¬Ž‘‘8¤›šÀ‚Û ¬/ˆuzÊHõã¶vgÎŽ§£õÇ…/ÂÛMäÉ/דlYO J”wÇùÇM>Ÿ´gq¢|RµÜ¡f- °À4«3¾ïÜ •C¤†©.CĹí>49÷°µ±RŠ—Ùüv“ÝÖ&B2b(ówmUe¨9~G#¹Š4ó>”PC}7¢Å‹þ]5i˜ áLŸÙ¦yÑçH™<ñpÚHP zï ,°bM)¤$\Dj¸‘ê2âRƒŒÿ5Ùž^ )ч ×lóæ’˜í™äW?\¶Â·}W±§{”XͱÈ÷oJ˜‰t,°RaAdž cˆTÚ‘ê0bI¨0á*Eï‘°þÕ´›Ç¬ÈEmE8%F19ð"š•I( ••PWÁ+Vw<ôÊŒH=yÀ¥ñàFù9Šˆñ¶CÄlÇb]Œ'«é²9?W¹ýÓ¸Ií—{À ,H:„ ‘ޤ â$g*ÖHzä½}ì<¡«Õt^´§:¢Y8h§@­(Ý:Tó´“X)X`¿H ÇoíoÁxÀo¹ˆßz=ŸÌ67Í^ ¾{æô«ª©*ì ’l2M‹Ou7¡’>~<ÔP“X)X`õMYDê9‘ê2âÒpIÎÓTü¨áb´ApÂôÔbRµ9b˜ªšÜj|•$Êè=sæwG”¢í™ã‡ç7¤ŸÞé*X`¥Â:½ -D¤úp ¢ô,Ü~kèp„w³¹uÿïWÓ™G¦ ×aëË|}”¥ÿPÊ[‰ïò"›Îš×gŒÍ/œ1Ô”Ö ð`uЬÓS9øDªç$ £Üùž+Ñ:§£gcsÙ:§ØÙØ;Þ©:.ÓOž\­óÍÍâübѼ S‚h‹r_+¡®‚V*¬ÓS*h:"Õû¡V2ÿ{û‰¼m2ÑC½›“‰ÖßTŸM¤`Þð¼žO‹i6›þ&ŒJÏ#¤õ݉Ö>çÅfÙz'Ácì=1Ö)²ºã¡ Ih"ÕC¤: Xk5 ³ÇÊ’šèÑÌ~SrSÁ\%Bõ·ñf¹\¬Šüæ¼þL#¹ÿ•寳Z™"RûE#ËIÛhÒßûËFìYUX.°£bÞTA5„–•4UP1¥@iu° MH¸ˆÔ "ÕIš W.<*¶ÒtXL£R¦X9ÑRd~ùuñ®•_±Û)ó˵zØR|œoü¾ úxM¯„RÕPY u,°Ra%’ú!’ˆÔ€#ÕaÄõE:¯œI¬ºhåLr_Dbö:îM QÒºDÑPY u,°RauÆ÷Ú!‚ˆÔp#ÕeÈ¥ó`–uq±£«ünQ·R"÷·ìï Ø1ÞËç¿T&%+~YÙªžDWšH*›÷)–®Ìý?xÿY ,°Ra!Bp©çFªÃˆ±ÒÊP°û=•=of³eV¿ŒÞ/75¾~ûú_µVËÔ”é=¡ ••PWÁ+Vg|ß)b†H 7R]†¼®÷CBEDõ˜=YÌ׋Ys²Gù@ÍôãOÙŽm#Äþ3ÌX` šE€v"RÏT‡—ÖÀ0ê…[9 ¬²:b >c²~R¬f-À ¶·m'!lÙ9Ýû ø„r$X`¥Â‚" C©”#ÕeÄ¥ sa}ÏtôâݤÞmÎÑJ…ÒǼJçŠò'mHH({+¡®‚V*¬Ó)È9"Õ‡ñÙ¯ÚãO¤J@³Jb¿JÀøÓ|òaµ˜ïçѦ:0ÂßÎÛýüÆ„ýüWUÓÁ‘·ùd±™M¹JbV ¬Sd!›!›#RiGªÃˆ÷Kö< Æ*"ÆW?\¶¥°¶m‘âyœp)#±H7=5(@§ÂšÎ{6`gR"V9ò 3Š0^ï¬AáÁëYÎaH'"•r¤ºŒø` ©9n}b¥+/_ÕÎG¦´gõþXF sÔßÖo¿m.”p k?É9IÁ±,° ËPD*ÁHu±¨ 0^gõÑV:Z³} !Üö%DSÉŠ&„Gsã¾R·ß4j{’Æ*ÏŠ¼Þ ÂuU˜Óárú[ý}Q­š°»?S^&„ð¿|uQ/nåeßeÑ_”œÉ£`• «;ò“„ü R=DªÃ€)[hx@òc5+¿Ëß×j,‰ÕAá³Í¬ÑxC„ ­á ]l÷jÆ6v®×ŇÕbsû¡¶¢zH¼¸%,°ÍB"‡ä!RÏT——’ÎdX^Ø*zd·CS˜j·Ã÷ëbÜÎþZs¼†ØËl~»Én›×ŒÊü}<^æ“éW“ÚOI¢¸óýˆTÈ`„Kõ¤’Úi'9°ÀJ…uzÉ2ƒHõ!È¢ÚpvvT]DÚݸ·< ›¯ß7s‚– ÜîÑ’/W«E3o!ˆ¢áŽq‘›º‚dµÆ@YÏx³(5~±šÎok_ ‰Ôå°Àz:™3‰Ì‰Hõ©ÄH’= VŒ6N¸ µ„^¶jc‰2ÎѼ§ÄXë/üañ®•%*žVìg¨™ ¬/ƒ•PWÁ+Œì "õ79I˜5Ö?ÚQµÅ‹¹ØÞ…ߊꤊ?ªO„"†…"ØW²u»B×sµíß4ý0nÛÿŸÞŒëëÊÞѰÄ1LQìTfz±\Ž“zoƒ(û¸…æõB GDø«ìä¥}U¼Óÿ ½§ÂS`á.G>D¤ž©.#D ¦|Nmòý·o“#Wæz®åèú}ù=£)e£sÅ|]½i½Õûåõè§³ê¿ÿóœïendstream endobj 118 0 obj 3576 endobj 215 0 obj <> stream xœíMOI†¥=úWø˜=Pô÷Ç1&‹–ˆ,XÚãŠàõÊxˆ1ÙýùÛÓ3ÝÆö·i¦åRH5=Ow¡êõLWûû’ê_óóæ~ð}ð}H½-ü¸¹Ž&ƒãKƇ¬bJ '·ƒú:¤Ô‚dCM)p5œÜ>øuòÏÀ Ti7f2|]/Åò±ºÀ5£Esáz1­ŒÔ€46Œ¾8õ6œhÓØ¾”Ó¢²2Fš8ò¡X^¯f墺$p-Â%¿ ’¹eâ–H³wTšé=Y-YÈÊ…åLj—Î÷ jµH™²Îý÷µ£{ÍíþµDoï})ŒÔ<æ`% ÓiY™œj ÏUÃ7„Qéå´’ ÔßMµ³ð  þ(½M€b‚nˆ?­™Hú]vž…¬Œ—Š,dåÂB±Ð±€‘Ê9R) `D)Û˜j±·wÌ)>ÁóÃ7ÅÝ3!G*þŠÇËÙb5[Üù+Nú‰ÀO‰”“}28%¢Q"6OŽ$PÊB0NgóU=s¾Y¾?Ùô5½! Y¹°0•÷!•c¤òŽT‚ÇŒÒ<˜Ú*1¡M-æïQ‹ÿ¬,¬689[ýíÁn2I8–bÆÛK11†'ý¿ÀOØÈBV?XéxÌæX÷0R¯v˜ƒ³XÖÕnYoŠºðÃw¶glùóñe]É·ßÇpFƉ/ª­MÉ'‚†éOÊÅjYÎçnV?ü')œ»˜Î²º-&˜C0Ûb¤Þ©9(«UxJúB5‘~øfõ(oÿ*וAH ÒT}ÁϪ«9ZÖ–I2BV¯ðÈBÖ!²¯~a¥ÇHu¡‰PÂlXy­‰¶?F b¶ö+Zóf{ƒÔ-ÁhM¬î³WRM ŸêWÖÌÍ,ÂZþ]ÌËkÿzÛ}H’ÀÕÓÃC¹ô®@ð„ Óל†¬^á‘…¬Cd^DÁ€‘ê´2´Ú× b[[AÆ'ç~ZÒ°¾FqqkYx«—Æh06Š‹‚5[Š+¼ËÀ¸mq»ótÕWVFKE²ra¥ã±PfQ(1RD*Áa„¬ ¨ÅIË»0ÛÚº0¾ò6Rš÷×"£óLt¬Œ–Š,dåÂJÆcDÁ€‘z‹ËNÆpMâ–ûSÓÖõ1þ|Þmìâ8Í‹ã~Í€³ÛOFI¬¯¬Œ–Š,dåÂÊ¥(`ùÄHõ7R)W’EÅw-µdyiÇ ~ %µ‚`5‹[iŠoÞ¨ª>™ðýtwN(0ß­O*ž2:ö=+.xlZ-¿Í‹{¿úªÅ%ž0vUά;Y„Ò»1Ë)Ûe²Td!+¡>!ŒTÞ‘JðxãQC+SË&ݵb`ÀijŴøÏSh_• ÐëÇ›°ÂØÿ2ILÈBVÆKE²ra^½Feƒ‘zïH%x,€Qî˜úȳ]8òƒ)Å¢Ÿ¿½m£+ësÍ´”ÆOŠÕ§Y<§Lª0²¸©·õ$ž9zr½ôO—˜³ê8ôyû–BµØEçëX-YÈÊ…•ŽÇ‡j#õj‡«ƒØ”êÁèÊör/UsÞë(tSYGˆó|™Ý,Ë«òÖ+ÁA¬ÿŒ?{ÕÓhnIó\͸­ÅWž) YÈBVº)‡TŠE#ÕãH%xÌÁrÏ©+}ËŽÞQhLڨ듓ññ™¸ÁÚ„|œN—Åcý&‹ƒÓ¯Ú©›Q¶BV¯ðÈBÖ!²°ìö£ìb¤rŽTŠÇ(£ñ›d^PM¼E55_f#éúËlš}žã) »*–?¼ÕTýÜqdØ@L4 ‘;)¿Ü=-¯Ã©ÈR1”îºÕy†B,dõš…E¨E#•w¤<æ`5M@ægGÂŒš/ÛÙzòâ뼃®ÿ-æ‹Â¿,a Õq§È¶8PÀ¹aI¿ØÎ“Ñ!°2Z*²• ëðjVgŒT:F€ãÄïfzAÇÈ3º¸ðXŠÅ°“z¿¬ïܶ³Åm¹¼*F0V˜¤_kç©èX-YÈÊ…•ŒïºP`IÅHõ7R).{Ï×mÓ1q«jQ2Í-uœ|v_”O«zŒ»ŸÊWµãô55! Y/YÈÊ…•K™EA‚‘êo¤R<À˜Œ:Íú£~Ž/)Ï;Ÿ$HF bA?ÔoÕùm2ü:¨þýo·ËLendstream endobj 216 0 obj 1656 endobj 257 0 obj <> stream xœíZMO1•zÜ_á#=ìàÛŠžP?èŠ{I»-$°ÚŸ_Û±WD,$âCtU+‡•žŸ_f&’ç7—Œ2>é9=¯.«K†Ëé9{ßTûGˆŒ8hekæÕz2ƒ`43\±æ¼Ú;l¯Vo›Ÿ•$d­ç4§ÕÞr0R€Æ%¨ rp29‰$Vš¼ñlvÀý#BæÀiÒ2|{­$(§5«=l¤R5-rJ–‹7߯»YŠIp—øØžE 8—é‡ËédÕ.aA°F«´r ˆ‚Ëp×NNR„A*›Wb  ¹2›p\Ù­¬Ý çÔQ¨E«hEËCú®ºØFD”Ú%Îíû†¥4=fãp~ÕÛº¯TªTê…3àL6*µDŠXä½Er4à"þD “ÍØlz½ í?*+oGr“Åidk0Få’éÍ…2~³_xЋD!½¿Ðf§_ëõO½¢U´/_ÀÒ*J¥^6a?ds¹æ÷7CÙ~üös·õ°6Nÿݱÿ¸€ér1OÜQ]ù߸áÃmð`±êÚõ>_ôï0yG8PóW?Ðþ­…Z´ŠÖX´ÆÒlJ[.•úw+µKƸÔ2¿*²jm=åmïA`4çÈjeˆµ9ºiõ a_«ðù ÝŽ×ñendstream endobj 258 0 obj 676 endobj 273 0 obj <> stream xœµXÛnÜF öq¾‚À"ˆ „mö½{ógµˆ€8Q’ ‚y¡fZƼŒy±Ö¿ÕW’JNŒ,h€fwUuÕ©SUý.+Î û~ÍîÝî]†ÝZü94ÙëýîÕOg¤@‚+žíïvþÎ$FRd²ˆdûf÷â¦7wåÁ¼Üÿa KD0gö'¨PÙþ»Ý Œ^~±Ãœi²?î^\·co‰#qµ;N‡±êZ/ŽàL#-ˆpâ0"‚`•å#ávïOA/¡«)Vw§ó¦0„ä2ìºé«vtÖÀí ‰Ãòªz4ÞJŠ´ŠFVƒ]ÒcNDX½)˜!^°xþÜWMÙ°( …ž?$}p¥¸ü¤–‰¦aù®ëƒì‚p½Vxqw†¤¤ñ^ßÝüÔÞo]Ÿ$)W×W$]ÿçs×ÕÞ Z .( ]EºH"ö'ï@LA( «Çî05ÆËfÖµX®|¨ÖœD}G3T÷­9:…C!’w;»–3 f0šå˜ÀUÜ—[ïv°[0~ ÉR,†ª½¯Ý:èò"n¾-‡êà– RšÆí€jÓ›Ö›jÄyA>1‹¿Æ¡»‚EÑÃeo¾rz%¢ŠªêêOÁ@Ëç_B;桜DW«aì«['#¢YôØ4ú Â=9åÖƒ9—}9šÚ%D¦¬-[¿_@HxôÞ©< ȈßåñXYÚ(ë ŠZ?Â`i7 -žÊ5€Vh`Äè% ^PÖׇ#"¥æÛ¶ éÁ8¾y¨Íѹ›Áq¢ã²±V [aÈ%AL’³]Ûm)Èå¨ÝEF¢BÒ„Änª!é0&ÕÕ[g:˜D‹˜ˆ.‚iN(|NÁ6¬‹´v*[wš@°…ˆ§ËÚù;+ãÞî.œ‡°ñgOéù'Ñ8 ¦.óáÔ…ÈÎIBn`"D´¯75ø»6ÃŒBtb”¾2Ñw’a²¾€M2c½=ôæXÝzúX£«šÛ@‘`&MXñÞÉ©Pˆ¡.°z6}3y4ºëqpu"ÌøR&àºæ¶j'ÔUù\\} î³^)é6<ø_ÆÁ”Éç$@Tʹ&)ñ{ón2ƒ=åP0壚f» ö*œ%¨ü1 cT¦¢®®5—äÐRæœZ­Q¯hòï)Ç)Vt¦S0[xtLƒÕŠiêÀd+€¤T¢¸PÏ!éhk–Øâ½/¦ccêîË&ÔJž ö¦¦§CºMX)dëö‚éþ|2ž ‹S?sÓœ(‰£]s~‚í À÷¢ƒóZažR×Þ¯ÊÆ4­òÜׂ“ªo’Ó60850Cà \!“„!¬1¢.»·U°îëAßO—S=^VááÃ0š&T‚B‰¹´^pëÀM*ÑÌvN@ –õœ¡ó†vw%…F:Š¹íŠž¥b f°¡ÉÀÿ–ͨ0ä¡LN~¨µ»ÐÅKN>—!™)ÈC‡—S fC/è³¾?wÓ­*SµÇê…ßí†.Š%à?œªÃ)ôh’(:ÛÓ,bpXXýÐM12%8„<Åx›­±ŸÚ6 Ê(‘Ï!áI‡†ûJ®1¿ä óDPGa9|bnë/áV0@ÝšG‘Ùa©˜×^í³a\cX1ÄÜ<–3¤2Œ5·“Õê0Õ½¾Þ½º~“ýdv¯~ÍðîÕ·ößë›oàçúßÙg»«ë¿]Ööù¨Õõ[¬å›J Jíù}×7¾}[¬{``‚à¦<ÛÇG·}î é\Iì€Àìè"Ýucòrb†n’ ˆCt9çn7² Ü{gЉEõÎÝ}_žO~”ÐÒ6J1¾ñã¬íxʦ÷@ﱞ_$”Á·ÉÔÿ•!aä:@˘AÛ–ñ’SÔ¸¾(4¸Z¦âtð…˜&VÛ*oóÕ.5IC!Ä:õd4QHÕnUWOF«Æà¶ëÞ>‘}Êλl™}oLÀ'`}µàÊ$á¢ø»îSd}BÂ<ä_n61Õ– @¡æ–k£í€®´:6¸‘)ð«œß1Œ_°q™NlV½cÕ›ÃØA;Á”¢H„Ê.öÐ@®¯À­1íeË f§1тĸvÓ|:ƒdÖ,í æÇ˜èbYa¶¹Ç4ÕÝ}µùdÕ àÉg·8õ¹„&WþÅu~̦&x·:b0…æå–bho{¶Šp]…Öz5›mNz6œhÓº\P_§rÀ‹¿Èo¾*[ê’éÁèT¾O/*qOSV5Ú2ÒúnéÊ,=¸Í¿žÊ1âR§‘z³Žòs 0 iž|8¸PФæÙªûr€ ªæÕx tå;º¨kó{9æÐ|„@Ì6W”)ûì ýóª†r ù9‹ù<ìã+8ØÎÍδBì̳0ꦆ‡®?þkÛáÀÃR,Ëæ›²¶Êñ¹¼ed~ÎLe&PN¡,Dd¯€k8t¹QÄ­b¸ä È#œjplE»ß"2AúP¶Á¢åü†²’22?UTáž`C.ÃwÕœOåŸd5šŸd³KÀ x~êŒâ+uMÅ/Œ‡DŸÛßd(—†^j @¸~ËÛ]¥ªkÿþ”€Û|endstream endobj 274 0 obj 2092 endobj 278 0 obj <> stream xœ½XKoãF öè_áC[ žj†ólo-ô²}, ô<±åX]Yr$y½ù÷å<%En² EF ‡üø}$'Oë‚Ðuá~âïÝiõ´zZS–~íN럷«>RÊ׆É$_o«ðt- E@®¢ñÃiõþîûíß+C„aR£Ív¿z_ì®tÇèGMÝlÀ(ÂÖ&‰`ÞøCi›ªytæ¬0dôrÿÅžÎuÙGŒÎ%Ó Þø—öt²ÍÞÙr FcÁK]5>ŠkH¾?{C¢ŒË3Ù®²xÝOîH `ñSWžë˜PB%&>\«áÇ`@ÄÓánäD2N³[/ãhìÉÛn¨À|f鿵YZ¥µx3nâ µ]lÝ¡ L©"yhÝ‘+M‘í˺|X&²¥uG’ò}W—w1 ɘIù>Ÿcµ]u4^.1AÇC¤ÅS4Ò i”ðF’P#Ò¥‡ª.(‹¢C¡‰”Ù£<ýIš¤tÑçªk›SÙ ‘ L þvݽQ`éËw¿þþá>²Aš"¥[õñ Ka?·—.AÒ"U÷؆D2AËäv_uånh»gïZ r8ÄO$І­aFEL[cU9¦-°”ÞNÄj“BðÖoíPö¾:ËKs¸WÛ9}…OšcRá£^0P"–!9È~_S!šp<Û0Jãþò·à%ܤr Fª&‚£8e •(žUx¨H¡ H†_†XbjŠDD{>—6 žâlrþ ›“¦©4×¥Ç)"ÀQs@‘Ú9„ U!!‰ôSÎ#&H ¡|‹“<—æÇDþ©1FÊ©TÓ Æn:G€B[•³Å–Ô•=r¼ô! ×€2´uõ)”ôHÛˆ,LPÄÂÚcǤ™öw!aƒª|Á$¥ *‘u×6ƒ •Å®…In«æI$x‘¬C7Ó6änv²CÕjB¹€—–÷=§BŒÍ½½x3†7eõ÷ÇöRûp"M‹L-ëA¡”h¥æ˜p0…œÐ(ŠËÐ<‹ÚCBOK±Ä)…hûñŠg5¤>ʵΉǸ06M$s­mƒ>"yì!¢‰Sƒe•î†(Ȱ_#j¨E¹½½†Wµ}.Qt¼ä6¿#*†È±˜`ÌTöØ2Ad7Yeínþé’+^±>=@Rdb~6@ÿÚÀRÜÖgÿ6®M @Ñpé \‘Æ@™ü 2L$dÚËŽæ„Ò¹íûêalP ”:¬0 ÀUqÊݽ=ÙÇ2¶YSètiuXj⛈:?CÍF5 îÒþ TnU)ж®ÛhX0m¦ˆj¢ȼÑäÙ4qX5ýÐÅRSžÑ¿ì\¡úØpøè—¤]cäÊ6‘Ê aö0C ÷™)ð/]§óºùP.9sÏ à¾ÚÙ:LHÜ.ÏûjÔ>:•¯¶n©µ£íö×H.Årf1˜³ç8'i¸©cÜZ=¥ÎÍîbUŒÉU¹åõ›ZîÛ`6m³ €"nFdÙNE/š'ðúËî;1Wy‘Êãç¯Íî?<õ¨¨r0c“l“%îø).¿ÐÇæ@4ó1*׳Ó9`ÈðÙPä¹qÛõ»¼(#µrOMƒâŶ.X|Ò`Va;œ>é8ÅaÃ^6òÙ6ø¢‘»c²Fc#÷•/RÔe¨¨˜¼Æª°é9ÑQ™gÌ­]_2®¤uXÍ]æ:eÞÑ•0³+oî‡ÞÖí÷“WB 2YÆ}E@óÚ7î­)âúS„hò¬Ž]{y<ÞÅ» _Êmò|Ä»âL“BÍú.XRbòÃå&‡;Ù24UtÁãÙ“·¿ÔCîŒã 4œ‡vãµy¶ÝPí.u˜oŸV 3_vy> stream xœ½[moÛ8ú1¿"ß® ÔŒHФ´8Îmœ­i’³ÝÛ[ N±•X[Ùr%¹¹Þ¯¿¡H¥˜q’;àP`[Èz!gžyæ™î·ÓˆÐÓHÿ±/7'ßN¾Òîšûk¹9}¿89›QzÊ""E"Nw'æzª(QòTE’°ÓÅæäí‡u¶kóú§Å' '2á ܶX¼¥D_cŒ$Iê®M·mw'‡«pˆ”¥n…enœ› ñ¡ÓÀg‹¼<|´Û³!¬'JÝÚ—Õfk]f.ZdLb%Ý»:o‚Û¹rË–EY´…Ùç$F@dÛU·5I”?ÜíÂ;Rüè÷b•[èÄ!™áîxufYL€×Í 4 ˜ÛãmÖäç”óx§O’,ŒKÍOûv_›G€z °ì#æÝ)Äj,è1;W»M¾m;DŒbØ`DГ%â:ð$†ãªZîõcÝ ù"êvûbB³ìʼí~á XŒ¹Ý6ykÍ-âĽ#“u~—×ùviü‘ ‹O™¤èÈbÛ´YY"Nb xçî×û½u)ƒ…&ò‘ñ_Ë ×wœpeÖÈ,|KÍ·n1Ÿ‰x$G® CeY/ð8Ç¢ÌP׈§`ˆXõq¥ÝSK½ë¾ÉHœR0d÷s H“±ÿ¢++--ª„¹µêPlï»G8%q„œ¿ÊÛ¬( Ô`/Ñr¼a±î%‰é1µ}s¿¯{«NeÁàî?Ó="ˆŒR„ÝN_oìz•@G´ë¬µ¶1@1ù`˜0R)³Ú—«ƒüuk‚›ÛÚ6ÏWùÊnM*Œ¸Û.{Á7bÉŽòðS¶ÉVpKÓÂN  Á£j+6#á>xcX¢0RhÁïEµolO%g—9—1ÄIŒšÃxï L"’¦ìeaâ ³ÎÝ£[g”2«-`bÚÎÒ*Ž=Í”9ê+ æD©Á¢!‚³¨ì{v6ŸštÆ£Sæìò¦4›‡%GR¹(|X˵¥fÅø³:à¶­Ø„1Œ–@ú,¶ËªÞUàDíÄþ¯­ÉTФ 0Ý»ïM/>Þ8G¢|˜9Bív»Žwÿ§l»ÏJ“&˜'ô“Ät $¹ñ!É+Bèg·Õ¾ ¡@Ó¬@ |Lø$â1¯ @{þy¢–ÙÖ"Š¥è³PLÞU{óU 3Sw«Ùl0$yAqõ’­ö4ÞC~ë0%êÐìÞ©– z[·íîç³³‡‡‹Í„#…‘rWoï ºñ‡Dƒ÷\~Ï­|¢V옮ßAfáÚ'>³”…Qöz—"~¤¦ ô•±Äé,æ¯Pkv±€9æÏö1¸”ˆ”PNÀsàl\îžÎŠE[†>”Dúa÷À_ˆå!çîÚÔU;½dVÕ++jÁ/)R–dx<œêJÂÜ `JQ‹A¶ضÖ[\¨auy‹*EŸÝöÛ¦*‹ea¹E—ºq±.n]¡‘M`öös(wUc¿™>öU…Ûp¯ Wn’#Ü~T{K}\¡pÞì'­RŽhö·Í².L¨ƒæz9dõ †q›ꃀ‚–¥zË.t†2¢÷=¬Ó[‡#µ/ŒðcJ!BlÁsŠT;{g|,µk¬É·Nˆ(Žz.GOÅD(éV²É›Æò —ºÎúê :éÒDõ#fT;IǰFÈ¿íAšX궸Š÷Q]šá|þùÒ©­~î½Ušíù·~ù)Y¨ƒÊ£fµ;Þ Ó$¢8,¾ÀɦÂõ ‰ÎHƒò;¤ ëp°Q«Bˆ}¼@0üÓ×8ÇÜ[ëmµúaó Ô^n[&GÐHçvÙÏñs[P*Ê0íK £ûuú¦×®Îxm†bTvDÙ’*Q%h§&Í`Ýw¬[âÂRjõëhª»¶ó€#Aå¶ÎŒaž«´TUÔ7µnó|kWå;›Ì¡…Y‹zµô꥕¿l‡¢&$çËÌ!ª$-Nz,1}\(ƒ7vÔÆ¥Ô¨Ç—·—Óùذh¯ÖTìàE©cž ZüÄjpŒªæEjc¥·VÜZQµ·ƒàÞ™CwoSv|áŽGxüº7‰9Jì[ã È$õ¬ÐÓ–ÈC!=Ø@¶n¬°K•ng Ç6…‡AS«»–ê°kIãÇŽG(»t‘`x¤* ˆ÷€Û 0P…`À-BåLycZ|¾/‡±4òUn£”­©[\Uíný–"(oz0åî÷(`Ä$D{:D_ÞÞuÊþëuôÙn{†|Duã ™ãL›&µ-\j¯+ÒÞÛU1/ÿm¢D×xº!ˆyï¡HÕ—˜åº+²Ûµ!˜ëŒè‘óº(’о²E}<Œ\-”&úiæ|_;FŽôØÄqÎ+û™Ý RÝx>Çøí?ÉŠPü`:Kƒ\0HîªÒ4ÅiB|kîÁn8l⮺†ªáEAˆX ûÚU| UCÔê/Bš ?²rïFGŸ¤¾”pLLì'•ÂÒåÂì§žä*×UéU.7ƒ†<¼Û-ä×êÖj  é2ÛÞï­ªöŽ¿¼½ùõÒD‹ŠXê¼t øPì[Ñ4{KdÛ(ÃòÜÅCú úè¹- ›O/}á,æåy¾\뙄a>0/²ïã. XtØeygáHt]ç¾/ýPæ­mAêF•ˆû¼uã=èŸ-¿fõʵ^Å1Pß‚8±'«»¨<&̹âzÙV·Æ`pYPd]šñX×¥]qq¸ ”>\Ú%(AeÐí2z¹Ûip{¯z ~N¸ˆòõÔ“ðxT à¬DK¢AWñ¹¶›¦å‹¢¶¥í`O¹ ¼ÃœwTŠuÐô†GnÛ›î«Írƒ™É+cSؾÒy4L¬«ýýÚe|ÎŽrêÑ@Jå¾ló!€e« +zu¯•÷Ýpx÷)ÆI”¥ÞÔÕ}Ùáj A™7Ï‹Xú¢žÝz× ûêÌ$>(Ž“#«2—8õ^ø×á]¦mæB~*roíÌýTÄV+¬7‚ÎÁŠaçÒ¹ˆüè& b×ÇúÜü°Ô'T…‘ P+³S0&£Â†ˆ#Nô²|¼Ã;1ç,4¤ö˜?T;{‘sœiü¨‹ûu‡Áôq(8uÔ)´ÕyÑ,»«²ßç/³b“»fçð˜…pN˜>¦A‰´ „â1X˜r?5[–{7ü”£a©fz´º Š7>=—½«±«’Pù¼ÞKcDIDÌk«&ë X>hqà‹á4;”Îàk˯ösTÅ(ô{mDdˆ¼4M XqŒ+¦i’Œ€Ów¨EÌñ°7UGìç7»] tlæ¤S’"aøz+‘țݮšÃµ†ZžGìèøPD½²àU(xzèJÊ¡³9»¬ní{e¸1Ö3cK-Ú:HrkÓú°3Ç E‚^îyb[mGúE^/mèH¥[)xhi_ïªÆiYX°RÇ SãtZ'[în­ó]í]5Žu%J¢p3rŠ™Ý1N”Ÿ5CRZÙÎiDRßû · «}½4h‚”q¹ÜäõÄNð¸ÂžO¢7ܳmBoJTÐÜK©ê>‡õ×–)EîZ¤#¾HlÏϽ"¨ß±p|zSÜÍ÷^@I‡c£aÏàŸ+ ßîr¿* eÔ••ÒwGƒýۯ͟é-4@ åè]7p)8­ÅE‰KxÃæðˆ)N’hP9/>N,:É\X»œ¸YLfÓñ¥óaŒ@ž^ÙlÍýЧs‹máÏjœ_øüirµ°!–±æîGÒ~fí˜(üµ‘ÁÈÑŸžOÎ-'PŸ~›.>^^Xø+<±p1™xõë^;¾:·žˆý)‹ñ|d7Ñq/í½Ør»òÇŒ®®M˜½èóe½0ù͸^ªUÚx6_-~·òM2„çlòËxv>½ú¥³PâeøÅtq5™Ï-KQìú†›¢H!Ÿç¸Å'5×3—Æ}k|õ»7rÇçÙÍõ|b(°®¼S{@A+š”\¡5?ƒåg'’â9oäžØ_^Zö’ƒ,úáúj1›¾·Éˆ+ì@¯R} )æz6?ÜóxðµñÕú­Ø½P\Ê|Glüþrrˆö—ÛñÜ`5áþÀâØ„•.˜f_&ów6V(Ç0çÓÙäC·.¥¥/—Í營^ù»P½·¼sôäÏçÌ&óÏ—6¹*/ ‹ºnþ¤%jÏ¡HüääŠÂƒ A& ¢1ÛéØÖHŸ4 Èë‹éõ•ÃHþìÐëa"gc±ž³ôh9+\R@…Dc¤³óQ‚5ÅÆŠ©“ *'TànêOzÏ÷»]冗I„íÍ`¿ª(Õô^¬ÆóvlX7YAÆy¢ÿT•Õ}¶|y\~&Ä' YÓ‚Fò#S}ºO |zõ³ –üÞ'ŽÒºSe úý!ƾà3¥%Žî:;ºÓ ¬'Ƕ¶¾Oa¿ƒ™V¾]gÛeŽ]VàåÄ ~ú´ ‹1þÌsæàÆÊ©20`ä§)[;UÄRÕ,6h{ã‘§žÄòCäϨ?Â×8÷k;*ãü1GÈ9±>W=<½ºmö¥;rë3n¨š¼þ^,ñ°¢ éÑù×ç«é?ºåƒÐáòø8jqȆfiÈIÝßÂ2²A­„³_§Jé]~xc‡¦ìm±q‡Ç{‚ˆš?89S/ƒÆ6Õÿ'Œ%Œ¨â˜aN}ãdqú·ýç?•×UÃendstream endobj 285 0 obj 3912 endobj 288 0 obj <> stream xœ½XYo䯒7ýŠy‹È4ûn¶Ö[–VÖzGYl°/¥¡4CŽxX+ÿúTŸäh¸†ý¬€•PMV×ñ}uðy†™aóãçÛ£ç£ç±²ð+ßÎNGÉ/„ð™FZRÉg‹û#÷™qΠ3ÅJá`{t|¶Îv]Ѽ[<EáÁÅêè˜ #œ(/º¬:û áH`–zi½êó®¬+sÓQˆaïsF£l6§ Á‘S̬jƧ:hùd $´×K#£LF},»ÂÝCÉØ¿9•p'pArP˜"A¸¦{ A:åÂËnH ¦5Õ^”=ßÙ5"˜0/]wÝî»$yyy1gœ£”iéÏÐf×T(¯·“A LQs™“>|"ÿZXcàa†ÙØãvÚeŠ´b#ßg¥M…cüF+8#•P#­ÖGH"JBàF<µ‡÷ÖQøp+ÙõËäúö—êÁꂜHÂõåøîã—wVY8˜Óèêû²iꦵ—A’R¸âz|E?ÏÊßz”åèqgo©Š.{ßý ®‘ˆ³¨ázFQ*¢üËñOF(9 s/< IzJgsHº7h¸:oÁµM¿]–*V½½=s77ÓpC¾.Ü„¼üjQ€”6Lóðj“Ý“õCfpˆÏÃÈr…”äò0pƒr&­àÄ;˶@ý_£[ÒQ>$J‰|øƒo¹ßo«¨u”] aŸÒæ´õeÖø q‰FLòA‚E'eŸ‡[-ùRp=i•ɽG¬ÆeV¬ ¸4˜×TŽæT$BÀ!­.,{ö%†KRà,0EŽR94ÅF@Ò'˜ÐétµP?æYj %ÅIXDÓ2ã·‰F §Áe²k¼Í€ì¥eÕ9JðÕ@}!Ó@êzãêø¾‹†LAGJP:Ç…ÆjpðÄGC`@}\& ¥‡©wXô‘GwP–5@d“fç±³bPƒÛ‹sâ;×±äMÛ‘Üü'¢ œÞ3Æç‘5*ÂÙÿÇœáH LFÑiûª…J‹úl³,š.Cyf¹æŠâˆr` £C]8‹õËX Azµ²º¯›mÖ•O¨¯Êù:Ûú(Še©oEO8´hÆæ¾*’À/Â"—& R·I_ùÞÌhÑú5é»r3*L›þ¦¢_çMÐv8€q"f¶)€3»lU4˺©ÐÊš`ŒÕ·ð$Ú7v™8!ÐG¤Wå×C!°­<$ÌAƒí`!Mù„é¸/åtMÝÖUí‰/%RÃèñ@]ZÝÝTS»»ŠU—"&Õt­±+‹ýy·Ù Å`"Qû2Ø«x¶|È,X­¡*ƒT4eÞ¶u…Ú"¸4T<–6‰ý8$†€b=#%¿ôŒKfF I Š8÷“˜˜`àÙ”iá¡Y\—m793q3qe‡&?í,ÜH•Š®ÔŽBXrkè>) vë0²½i¦ …ƒ§1o­±)Á™íà hQ½gþÀ>´ùݦÈZ{=ŒÖlÈT[T+?„(í7Ú½Êb€uçú$°TEvÛ™oÞÏ}Ñvß» °´÷h%=PÂèìj7F2`…©OW°ýw¹œë)è\^ÕKÙ­'ŒsÁ5Á¤N]¯»Â§:8-»6¹*^/Ï­í€YXãýÙyæ¾’€g|á®uÛÁž÷öœ¤°_øVòßøt¬ Sž`|®Å™î &Z«“„‘p»ˆÈmüÊŸ<¾5ƒÀ ò{Ñ">\¿›ÌP£™O)26»Lú¤&ç»lgÕ}Ÿµ]ÖtÃWš7šá hù!yÿœN‡núSòÀ3=ô V¬ÿ­gíªíÍr3©WKãDö ¿(ø“š&BYh"sóïôâ‡ËŸM†lú’XÐq{wz}yæy0råêâóáç×?Ÿ]Ù+üTªMu#ðßEÓBíµ> stream xœu–É–ªH†÷<»®{8$ɸ胠¨(*îA¡PqÀ§oDë.:Q¿òÿM#"9â4 púy½ïá;bGtì÷pÅÅ(—H‰gxwìõÀY’ƒ #Å6pÀ¾Ô}PÕñé›a-@`ÚD7¾ùdí,ÞhTÔ]"`IŽ†â›–Ñ%¬Ó²xF(ç)(¶Â|o…¿!ÚoÿfX’»Ž[ù\)eåµa'MŹ‚Ê€&Y9N‘¬¥ õeÝéHÉI¿ê;·”Ïfg”!žçßÜórrݧÅXCù8G”«“ø ¿!#’üÓ1¤Àw¡Sdfk10Äl¹®Œ´”’ÇÚgoLÌÆ;¤jŒQÇl˜>ʪt_£œÍíŒr™Y6‘ÜÃ=qüü¿ÛP­F¶¿vš`eFƒÁe¤+׈Yž·ª,††~ÛÂ(ߢ޻ì¯-T‰ö×&=AùÁºn]å¦lzš‚rG¦?9^—E™zîtvÓ6­˜"ÛL¨Èªðð$½€gÞio:6 xÍö¨ÒŽ:Ê„òlËé)@ydFì¹Dy²Ÿ_ÍkÐÞ„Ô©-Š­CÈôzX ¦7K›Ä|Œ7ê8S½A•+_Àå„Y4Uƒò*¶S¹§ŽK©FCIz5Å’ž5žzÓ’U³ÝÉ3ç"Ì’÷ÌBÞ_3Jp«ûô€zVåªÌTk´e½ÇÛøR år·ˆžÝœòÓ.ŸNvî:ò,he’*vW½Æm7*ûÐàu¼ºŸíaO%ÿ„лôìþÊóò§§Çr{ªP®MšOŽwîÂt¦7A¶ò°°НøE?ܸL5«VŒbÔqÊü£§—Êàç8zzò¨/ïtÏÜ3`0‡=¿Ü~šo«\ÛGµÈ—`êì gT= ‡û7²ÔŒvãÔí™ÈF’qKT©†³hè÷8ˆã=Õ3ߢè¸K$”ûÅâã|«2úÂYÉ©¬ç®wƒRÁûînÁQÁŠžÛÉLŠîBOï-½Ðˆ{º<®±vQK‡Ñ¾ç ™Þ4sÄöÌ=ðqZü 7ÛªsôBìëûùXÚŸ0V$!û{ôÎù3‘$+À¿ÐS&#µ“Úµyî·Õþ;™“þ&+“™:î–Êÿ{`x¦=ÿ9ü›ƒ€„¯è*fàâ6ö¼þàr©endstream endobj 296 0 obj 901 endobj 299 0 obj <> stream xœÅZßÛÆüx…ÞšÖj’»ysÜ6pá:®ïŒ¶@^(‰’S¤LR=Ÿò·w–»;$¥•¢kšÜKr9;óÍ7ß ïóŒ6£öÇÿ]íï>ß}ž±~-üYígß?Ü->06ã”$J«ÙÃæÎ=Àf)#i2KiBøìa÷Íë]vèòæÛ‡Ÿï´ ‰n{Xß}É]ãœhmÂÚ}½é³&·W 'FèÔ_ySµ]V–YWÔ•½Ê˜$IÊüÕ¬ZÛŹ€U¦ålÎض¿ôº®^l >¸øÀÙÌ“ðDZ»ejíscÿؾÏ7µ³ÖšÿާúØ¿8%"Ò/®ë~™pŽÆ8‰N¤òkʼnù2!©‰¿z(ó¬u¯„Ýyžjò¬?C” ûw»þVë.ƒ6uY:[4IL°ù±¨¶ÞËÜH32¦9®¬-mÅಠ®þ§]Jc‚†cú£OŽùX”¥wˆ1a±ÊóÞbÎàá}]ý‹¬j&fs)öÛƒ© 7þ5ûäOÌ9 wæ~G!ZuíDBâ‰V>r]ƒaßæ÷v*ÑÛE¿¦ …wìnšzïnÒ4ì¹ëºÃw‹ÅããcvI´0!ìd[Iݧ×Dh¶ß.Z›ƒZ¦á H {É#…êðnw/Ü àI‡{É. G*¼u_ï^Ei¸ùuõ‡~WJ¤áaµ?¥²§DHö¡$3Ñû/·dø7ÜInWTŸR¹kfsp¿qI—-ëcÿ6.‰J’¥®y † („Hç 4eðGE4§1Ô.½‹ÄZa\ö;)aB‰ñá 3™ÁêcUæmë.%ú!Êž¹¦™™¹M"˜úw‡)ì)¾fÍšxhªÂ{^UAß…—ÌiÇ«kN~nrÎ…aÄ–9¸ÏÓ4¿‘bäúêÝý›ÞE’ÁûÚmȘâ©«z(JpÖkâKƒ˜”•É„ýŠÍî+ 64)’gÑž¿víê8B*v%^e}ð쩉N±(úâ´¤ {vyÛù›áÔ Yè±èv>‘™D`a‘X4l#¯éÛ¼{ŠôrcñøªÓQ-pl ‹#ήïú]èÖ]@¸’—ìZ ¡§©Ftï8zÄ· ÇÇïë2kV%Ô$ávH°¦ ÂÈ ‰í®>–ko!cÊ”ðcÙ»H0–žE|äKÏ‚ ¼ñe•—e^y'Ãl9Ù;´=V›&ïŸW‚„ýh*(\FV..€…ö]î.¨ˆß¸hXÑ&U@Á²¨²æÉ3®áhéºÕR,=äA΄W!ÎÂN¯Þüã< B:8 ÈÀv ”@¦nØÒyDP† :–%Yç‹Ãq¹èP„¥Hg΀nŸfR7ý[à7ÙuŸæe^¾[â¸Ä7Ÿ¢8S=ÍÕ«ØD.=Ÿ:iA©äÕ¡•¢[­û²^ÊÙ] ¦ò‡¹Ï«µãIC1õÇJý”çœB²Ï!5¥ã÷‡ÝÀåèÊçˆÖ!E9¡*ÑÞ<„8Ó0ŠZzr‹õxÀ!åê4ø“Rèõ´TÆ„Fq±T€ÚPX*HPW—ÞlýÊ4¬Òh<Œ!ϹMQù¶ @OéÏ:oñv,¼ ƒüaeèÒãáP7ݹ8z_·Ýýª)ÝKOÀ…«#x¾ýö¥Ï">к÷#¼Zk”ù9K|éÎõ["z(3Àµ! ÁëÊ'o¨–èè¨ {Ncrn†ïÔ¼ôÑ ;Ðvè•>!®æL F‡²YrêšVvצ k渶1”ôï§@jÓ„G΂Zß%]O/JÃ(~ñ¹°Ïºóõ¨ ‰kn'´Tt{,ºlY摤Hž‰Ž˜‡¯¹ãÞw^´¤óÅéT¨%€dP•óÛǪøâYH2$§?e~¹]Q]Z+tM’˜±âõŒxÊ$,œî6½ù¢ Q„žq-,n«â«“ö~™°s1·™4Œh"­Ë‹2Dœ1Ž|áÛ‘¶´ k¿ÿ‹g ´ÄØx&°™b!ŽË§sEÓ6Ù¾¨<£HPYü$/¦âèEÓvè2äÈU}<”~Ìܸ¤Ò š9NªåS—m! >0=×U×r®Ò.MÇÙáP†ÆX؈¡¢Šå^±Ç€âÁ,k½ÚDI\1µ9B ZSÁÓ_)VÞ‡Ò !7ùçcáê4ˆ]• iû0h³R ·¼Ì–u“9f€ 4ŠËk.êžnÕ5ôòë¼ËWaÜ6@×TN*€ òZëhE‰ŠÃ•,F“ÐÆS<æ•LVjèè" —•mÐG ¯N:¢˜þøÎI`;¬•½’ZY˜LÝzfßd¯ã@gP…¦Ãñìš&Š¥®Ø€,Ö«P®eÌ’Ù%9hj̵s_ĉŸ?¤©M‘1îó õ‘.žAçQW¶¯ée<ìÞKy8XrÆ^F¨ó-ÊCSmq‡·îV LŽšëCµ]Øx=ô²è2lüãG=ë=Zaûÿ”^ó^½ì²¢G°/q!*ƒžNMüqYnGG%si§žpÛî÷³Ý·öH1\†3)¶ï­ Z‡ãHÿþP×~èÙ E“OªçÕ. í+à-øçRÕµ¤KÂ^(½À/(?ÏMÝ|jÏ©f™û‚3IîчLEy™&nTå´¶GøZi °°¹@,—ñÒ&…:pM,FÏ0ž\£»\Ð €:×ñ”86_ý­Óµ=`Ðz—ÝÓ8]x·NPalm™Z™…¬VtŽi•¤bœ'}„’VDÜëUK‹vEòõqñËÖn³(*| haáø_ȮۗÞ,• Ê¥ñ£,¹mbf_Òö¶†t‚“ØR:ËO§›h2L¨N÷XüômŸ ̱”þÚ^ÎQÒí'5çZ'ÅòD&ˆÝÜcåͽðŸB´¼ œ Ãt;‚mÙéÔcR_[oÒÄ-1›~S»zSc:Ö5ç2õRßylQ!Øq Nýb=@”aÆI†a^ (mûÑq†füÁÒ¼w8PGŠìùª]…°Š¢‹\'¤ôä³Ù¤; ].MÑ/þIÐØƒ¬påD)ÆÎÇ3çÞ~]¤ªºF_\™ýàd ú/$c ‰‘†çÚ9êÊÍ{liûøÂXçmE€?w>Eäˆî²ÛÊŠ;Öø“a^ì\ÞÙ¶;zñ0ãªU÷Ye‡l‰ÔTÊøðm?L‰+œÆÔ»®WÇ}^uíË@¼I:RÆ¡ÁõEÜ‚ã"QFù,ÇgÏpFk¿÷ GÚ/ЍK†:5/ª É«¶#›fñË:ßgà‚|aSáÊœý'…ɧ¯‹¦Êì­>e[׫ÂË4*ÍxEЏ/z¢'_·FãÚm]‡ñ½¤(L~®—ç%.*ëþïQ²”xf Ê­7¾WLD:|^‹6¾ñöAÀ%‰¾:»k]?!UqÓIˆöÓ&˜ëôÚ|ò´ke:ÒµŽ>Èú9Id]‹‘ÉäãÖ·h§=¿°1¢O]™“ö®?=Ìþvgþ ÝÎ3³endstream endobj 300 0 obj 2763 endobj 304 0 obj <> stream xœÅ[kÛÆ-òq…>h ˜#Γœ -ÇNb iÝxÛ| Pp)®–±DÊ|xíýï½Ã™¹$%R«UW ì$uçÜÇ9÷ÎPû~ºÍ?÷;Ý^½¿z¿ Ý5ÿ+Ý.^\_-¢T,4ÑŠ)±¸¾½²Ÿ  Î9‰Ø"â’Äpc{õå7wɮɪg׿^ÁEJ#^¯®¾dÄ\‚ªÈ]{[Þ6÷‰}8$*æÊÝÈÌ%Eb°/Ý¥×EÝ$›MÒäeaðPiw7)Væ"ˆÐ\¸‹ß”ÅëÖcJyóhdù£C¿®c ¾˜ "¶XŠ:­ò]Ó™p—z—sI’HFÜ{ôÝ_ÿa.§C­©»øj`!”Å‹€ZówM³ûj¹¼¿¿ï¼à´ö8ɺhIÙ9ÀÀݘ{‹ë¥ fDÃÈ/ý˾©˜P=hé—g]à  âØÇúú.¯»GáªÀpî’ô]²Î|jûàÛ‡5d[2 q_JI¬„7›l 2 ~g‚A€±:>tˆ‰¦£ëj ¢œÇîRSº¤A¶bÈš‚;¦¡v"å=JØ®žÊ-£DbJžÛõ"J¿Þ¿Ü¥¶q±á4ôªì}›WY·DÀ!_ƒr¡ êî§I•ݶWÓ,”>wP£›¼Xww" ÜÝUÛùJÁÙHª‘¯ãµ›;û  Š :Œ“€Çú8}Ì-p%CŸ¾´\YÔ ’§„_Ç> UÏ5óŸßUåªM³º£¬I,…Ïõ›M–ÔÝ’,"@5ï]Yh’HŠŽý\%»]Vu«B݃ˆø;ßZêp­™·`«ŽúB|S•ë*ÙÖðÌC¼uјôàVY“ä›ÚU¹äÌÛ±lx,ˆ”ñ0]w¥­Ý˜1Dro/IÍ´ÞÏÕ¡¬µq8,GÃÈG}¨û)Œ(1¿hÞܹ‡ø¨laMô:¿½ÛMYÝ£+­K[@;P eà,³^t€#F<ôë~l,]5aÀTS›’®Š,Àü ¯ŒKŒ{^¤›v•­ÜÓ* Õž»`œ)yWàû1€,G–àl4,€AXåuSå7®à™ÞáÖ‹?Ä%îËÏw *›ŽQÙ¦8ØTÙ6Û|rt›#˜os+‚LEÞ±EpD‰‹–çTɾ)ëæmß‹¸äD®¾Ø¸îMc jÃ’’ ½ž½v¡x„³ÎЬJšÌ6d±˜\Zp"B¬ý´Üî -ÜllÁ_Á÷y1®Bpªû¸LEϧ*b¯ÄƺpÝ"U1Ìtšg…mü ^Šú(o'¤êˆñ¢q:ÈM¨±é©º€G¦¹¨av@r\oʉ íý]VM‹‘©0˜ÂêœôãŠÃt8ôÁ’¡ÆÐÎëLI‘ÔØõ«‰€ÿÚÚ€ƒMö-¯tJÄÕ˜š ÄM\Ho÷mæ»&pÛ?}tšÚìªbM Ø¬@2Í eC}ÜÕ ®Àx"Æj8£öØ4û=0AaV™SP&$=RÕ›rg%š\iàæ“kúÐT|å}]¬[ßjþËv½¶2ó»¦áþ 7”ðd–ifRò|„¶›8úP—º­Ê­¶ MGVóm—+øIViM²IRÒ¾[îÚ›eòkºZë2'ÓÌMŠ0Ö0‘7i¹Ùd)n!@(óO‘z7ž? ¥?¶I‘ïÚ~‹"A0)ÖÇâã¤ëõ8¤N‘³ú¹'Ø8È1K )u¯¶ß:ÅúütksH,&Išo  Y©†2RómUºÑÕN¨l®GÖ™ òs7}ùØ*×Ò¤ £cr^ÕÉÆ†ú–Ï[´;×  #ö#,H.@~îFÁûZŠÜ=6Uÿö6©Þ +\Á¸£øP/ЬI“f('jEÿÁ)íŒqT0Š’7Ÿ|Á+,ø©ÁäQCÈ‘Nb‡#È~£2WŸ|ú;ÞùØOÍufãÛåƒúB1UÜ=«A £ƒ±z°Éжֽû,ÓØËêëJã>×uÚn}X)Ô‡ãÝ éŸÊ¶»áhQdV\¡ÿš~£‡Š5…w[yc)cÔ”õjÚÔ~RÔ8¼&©ü€]÷`\Žá¢ŽqÊ ^fCìy/3g‘öúÿè +ä“…*Í8ºÝ•77yó—äCž¤¬ÖSu+Ø> ôþù¹¯‹%hj£99_m8øÔ á@¢éaÃQ•˜mÎAÃI¼‚0¤“óÌE,„m½h—u•.ï c×Ë"¥àQÓ¹¾ãØûoâ&¶€ZbTÚÃ$R3Ö-;1‹€{f—a^ö϶v6ÀêÎPM1’X*¦ßní‘ÁX)ñP šYš­Z+¶hÌ ¨g§ä8á7s2f4 ™•–Åm¾nqþ!—!lpÐϹ.dXÈQŸ¦”Åï.œ¤Ó¾Ž~L¬˜= JNf4‡¸žkœ(_x®ûÑÂ_ä(“; ìkÌœà‘bƒƒ‰ÙUò}Ù ¸†*Õ£“¢»ä´qïpŒ™ÜÃÜÂlSº((<¸¸÷ºmò-ô!¡0UnåÇÎxïšmUF&c䤫5ßAd|X5û{x(Ô2F{ø©Ž6 ´mzèZ}ØïÕ'¶W©=Ži*ÄíÊt£Ê‹Ãr<# ÐS`ÆŸ@mÊ´ƒR56sÊÏýŒö‡N—%V= àè …”8¼?æž…ƒ1µwÔnN¼…osk,…<ÿÁáô³°ÄþðOk‚Ár|¢š^]/þ~õ~!X%°0/óJ5ÌÇñ‚Ssj›÷/^_-_ÿ¸hª6»Zþ¼ WËïÍo¾_¯_.~wõêõÓÛò†X̆†¸Ùù=ÆÐÌ›“hêÅ eáô·k [ÌŽ­w ÅŠÒÅVÂ!qZîbë{ÇqÃæÌ{蔘Ïá¬C4÷À±—ÙmÒn?„+|ï0åצuö ŸÅX‡õ¸ðêãdÄŽSÐÎxŒ’9p.0w(¥=ÒEÁ?O– ¸÷·YUå«YX’Ÿù9š2hfæ÷ofË‚±“ˆ)þØSD~`²> ‰üïÿ³«²Ûüã§Bo‘yæ^YGÝxnÙÖÕÒ´¦Í<:OÊ‹£ëX SA/lìþôæëëïçzNƒpÏ”çÁY¦æjW™qà7´5ÃñÇvÑÇó6µ–ÙÇ,ý×éT¸4¸Ž J>ˆ ‰pil`í–". "¶ñ\˜ÌžÄS$×g !a·üTä:ÇÖ ¹äãGÔÇ“ ¶A’¹ò½É‹U^B­KCó]fˆnÈþåÝg=À²KôC âì‰v#’íÒ;²…£XÍô©\;â,?ÌáøS5ÅslÍp+zy®™—§¾šëÓÉvilÙ¢xŒoĶú4º]¨¥›Ðí8HäÛ¥AZ¾Ñ!È ¨G¸30Î’„ÑðÉwŽ­©CÆBEÔ¥éÆ„ûrÞä7¦¢ç7<ü¸88Ë7:8â›CûÐÇÅ‘v„clˆt@¸P"ã.Ò0.ŽGñ ‚>᳤ZœrŽ&æ«n¿©­é¦=š>št4ÒÝ÷`lûT›w>§µ¹‹Ãó´AôŒËšÉ:7¸‹C´»66„8àÛQŒžmÇØõ·Q¡½a¢Oìpç œ¥H¤ôS7žek†n‘’—§›¦!ÛZÞ&'N”‡æ¶o#tžiÛä„QòâíA!B0í(FdÚ¥1Z¦é!Æ °I>•fg@œ¥†zºcýslÍ„ŽN¾4£Ý^— œýk£ÉoA<æEøôÛÞɯ¬ºÞøevâKº¤vo‡£¿gÿ°¢$Ú½÷_2!š½É؈„¿|ï^ï}—±Øü™Ô"ЬÛõÓëÅüû²-Hendstream endobj 305 0 obj 2951 endobj 309 0 obj <> stream xœÍZmoÜÆ.üñ~Åiá0÷¸ï»jUvT€&®Ð HƒºãéXóÈ3_,9iþ{g¹/Gy’rÐZ€)ì.gggž™yf©óáyl~Üs¹}œ}œãnÌ?–ÛùËËÙâÆl®‘D°ùåzfßÀsJ)’d.)G &¶³/_m’]“V_]þ{ƒK /W³/ 2c ƒa!ÝØ?Ëus“ØÅ1Š 7‘š!Èçn袨›$Ï“&+ 3Ë¢±Ðn6)VfKÄ4enðUY<»n½.L/>Y¼#´®ˆj…bFçaˆ©nñ¥YÈ‘ œ(ÿþUÞiHbDDÐDöŒ4£1q£¯oÓeÛø7˜FTSz µB\i9Ô:è("„{qßdV¼ÃDxçM¹ìÖ×fêõåü;p$ÃZ Ö9*bHÍ1ÖÅj.´¦ælàï—³ÅÅÛySµélñýÏ7ÿ½üö<.¾žÿaöúâñe!eaN@æ^”ÒHý>QG°*§ ŠI<J ),N­•½S¤¤ÞÂÿ²þÖš“€®*K®:‡SÀA쇭'¼¹‡Ç¢Dcc™§>샘Tý£ˆÔÇ5ãTI£Ñ)šÅ¢ â÷'ë¦ <ŽñÕX_P5•Ä[Ëÿñ×<»J!àWYõÛbå ïðDÀÈS«iABûªæ»õ‹ÑŽ ³õf÷àœ îQg E 8§È:!µy>-p87êZàÔŸëeY¬ p˜§V¯ À¢§¢Á2*> '¨wÔ©úX9EÖ€p(O›=,@¶@LVç8Ò??%O­c‡ÕW”ë’ F\‡‚ºK®TNP÷¨§)dºÇJQ'È:bFëŸ/ÒfÙuH°EŒý¡úÉŒEÐ ™+ÂØoE6#t²õ&©Ò… ¿›f ´¤ˆØ& MH=ÖÒu!`m¶gÁkO"Á7D(oÅÌo@†î£§O§†£?}ꃩš{‹{†ùáNøÉÊp6è&¬$TžÈÏn,ÐeÈØeÈn5S}I0§@aèe,‚|¦‰ë¶ªºyá˜?Ä[çÆF(C˜ nmÑØVÖt…<àî…Ř1ÃXNí_¨}˜ow`ùn†J“Ðâù^ࡃ¤Ì6Å>ryð“‹GÐPæ Y›v»[KhºÙ*à]rÀ;tÕð4!1„ ô·ïÜZdúµ³h{ýŠþÉÉäý‚N‹kæO{Ý¿d;wVhÏýx´tG…¬ÕGNäD‚wz2 …UÊŸæ/SÛJ@+-ù'€æþ`( ‘Šù3üõ~a¨¹þÅÙ_Poéÿø\£eðˆÇ Ên?­ÇƒÑg)¤¾éôŽ:ƒœæŒ¥ÇÖÿF?8?¦{q?}|zÚñ9d†}ŠüqìO„ÐØu^D(Óð) ¿Ü…K{Í‘>ær(t ßfvÚ™·É‡Ôçé±»ÌS[F†™ß¥™ ¿ÄñûUä§©X·AÁ€Ê/ÆÞphèm[7£ã­Ê1Ì]¶<¨€ež—7™e,:^`hû,mŠoíï!™'©Ç«²lޏWÇÈ`à^Û‰ Û}q¢{{%cT ÷€f  å oËU¶þìÀ@Eæö¥NîáÝ·e²s®‡óÌ]Zý¡$°ËÒùëØû±­§y¤¹_Õדˆ£†ŒÃÍE–Æ4C?t‘ ŠÑØWmwØ@h-î=H[·`­ÒºA“­¬Uó~§–ïΜ”a#u–ïÎoáßY½²OäJ»[ò¦3¿m³òr™ä‹]ÒlÞ7å{Â÷®ÓY˜ßÁIÏ! 1ÂÙùPMèʶuPVOpÏC¶²ù{r=QÜrû}·óÐôhCF#B÷î»±C\“Ò´7™­KææC‡-Ë.’pqž}p¾d{]'>î‘&Yi.eHRÆUê’24]8ð¾+’ëý.ÇcØ„ìþ›ÑÛ|ýúkm”*³ÂætÿL/;«­¹¡J®ÒzYA[ÝÅ6ø ê`±/ ê®Øò£Œ…”rÛeXð¾izûÁV§K£Ýt\àD¿•ëLŽð–ç– îV§ì«IoÇÜm]ú¤Ô»^\¥M’å¤:¹*ÛfLd÷d¯'¤˜ÚÎèƒ5¤“AïqfHÈù¶\¥ùyçê@«š¶þ[wÈ3«ýH>¸Yt$湳ǀ˖…MšCÚ¶3ËIÒëRñp°­½8àôËeÙç¸<*½pw_6Øð*) w­3®2@¹(â²û[X.ÌÂîÒ×üü¨%‚Äendstream endobj 310 0 obj 2225 endobj 313 0 obj <> stream xœÅ[ßoÛF>ôÑ…€{I‹æþÞ-ЗúrM PׇZ¢"6’¨ˆTÿ÷7ËÝ.¥mN¯€"—³3ß|óÍ,óe’gd’Û?þïùæâËÅ— é®…¿æ›ÉÏ·W¿Â'&3’J>¹]^¸'È„1–):QLd~Ø\¼º^»¶Ü¿¾ýó.¢Üx»¸xE3{ ÖàD*íC½lï wsžIͤÿ¡´—d¦a}á/½Û6m±^mUoí¯\g,—ÆÿZlö"Q7Œû‹×õö‡O‡` —2,‹\ýn7¤ac’i»±)“"S’M¦”g\wwÿóÇzùÓÕ¡Ù_­ëy±¾ZWwå×r~µ¬Ö°ÓæªZ®v~1;iÊhFõdÊóÌP·ßr]Î[{/…Í üP¸íÁX¸Ôª¶¸[wŽ's޾Ùí«­÷05Yž›ðÈr_oº«$Ó½ÛU·ᙤœÿnÛ}U6a ’SÿCÕ¹…&L~º‚â¸ÂÜù=)ÀÁÚp†‘QF>¾JºœaR‡'#?—íüj½[dðªeÊ¿œH´öÖû3Õª»kJ(\͉{Ëck+ð€ÊÃÚ_wàÕYN• oWeSúXR‘œû„¿e3ßl:à5'gß·©Ý"”fÚP…‹´Eµî®óL(©GVHF}[ºdœ‹píkëÎûí6Rk·ç)•'ÈH-íòáÃêà0œ HØÇ¢v‹kJÑâû­7BähDÈTH#BÔ÷%$÷Þ­ª2Ièx¨]þÚw14°KuÆt fW×kÏ=$SÂð±w‚‹œy&L0Ü»»·{!n.‘ Öwâ” Úz,}¢PÄI (¦ˆªÎé<3$È|KçYà`%pѪñ[R˜;÷öŠ‚H2Dc½ÿÜøMJ!è˜?ÀÕžB™B uQ…Ôá’†§·uçû)3 8›úÌòs·q¡=7ŸÂîÁ™Êüèë°W^“9îu^슻j]µž±8 ‘"ÕÔ!Ù€€s™A=ÇÐ6ôÐæ«DèR…8+÷{Ç6C¦Ý—»zßVÛOƒÐßîîn -Ðø¦ÞVm ¿~ºìvk€]0h£x&C—$¢¶U³*.µ™#sÔ'@S'KG…5Z©öôm©t84¡4hš#),•¥œ¢£7N¡´“ç‘CÊዟá‘fUÖŸcV,NŸN¦¬£_‡oÆ3`4„H“ý¡ãÌÆK“#Ôã’zJÏQI虇¿úTÓMRÚªpÉGiï݆œP¤oLõü°ÓP ƒ`R¤ï5îj/—@Iù¸*8kHrãZeD"$*ï/¢â#:ÆÈ” ñgCÉ|3ûÝU¶c°@—c”k¾‡·‡È £çnªÆ…T´ § ”ˆh·ð‘Pak÷ÕzíCgL¸xç ¥Xrá‹E(rÄ“4±€½õ¾‡U4Á0–K/u?hÞaÝ~Ð쉘¶TPŒÿöÔ¼·³ðžGnЦÜÿZº]åå"„Ž¿ŸyÇ1®T.Ouâýªò¼ÉQüxov¦1К†"«×Mûú’]÷Rl”c[rSz¼@SÁOóɵÛ14'»t×l§®Í®oDw™êŒl›ýzsé±Ê4c X9!Ö‰ j""Œ»jQí]¡sB@ß$óð’y½Ù¶Õ¼OP(¦B²±·yÁ –‡í| Q@Ó`O^|*¡"T€ˆ\éû(; )žô¬;;àç³-*Ôl-°B'úq™›`{²‡G@Ѹ²ˆx÷øZggK/s­fˆeì)”ðª>4¨Š"P7¨% {£I<¥k| :]Æ3o|S¸,Ñ0ÐÕdmð¥7'اzl{TÞkR¸çÛ›Ò?mú‘Å¡9k_˜†Ïk¨YДnžmñ†QÇɲÐ9¦{/Е»å”™RHå8¨ ÊxðÞ]ÑTóîy;{@‹ðÌ‹pÆ1ôÿv™~Zo”ßX:0@Q@.ýZl@Ç^zQMü0…W@1|y*ФÈí%¨ôŒd‚à˜ÉIîá°ämP'¬7ø~]¶ítæË¡”Ø5óÏÅ~qéWf+ïu±­·î:€‰ ¼Ù5þ:M³^t¦jZmÇ+w#ɱ” 7öO8ÒmE™òtDÌAT‰½úTN{ÅÓÅÞ5¦ÚŽ™Lç­{ºC)è!&È©a‘Ún¯ý¶Ç«÷Мb!¨º§Aß²^c!ÉGÃY7(ò@ÕÓ@áË¢ÈN¿ª-¸}Ó{«”Ž›@“DîÀýÉJ²¬Ãf´M”Õ®<åӾĔÿ£{ ¬ëÑUx ‡:²hº>Tô”aFž=@é°ËÝŸë+fQJ~|íjŠõx³Ïùc6°ï%Ú0í‹Ú¤Tq9-!)0» Ħr  ‹Bvj–B|XNbUHS>Qê_Í>¸ÍÛ­ô£Â³]ÔyŸƒwÐçMÒå°ƒ%È‹èàÅDÆ›`©M\ßx+• öz#È H˜»ù“áÌ9(c8îä oƒQù˜h ‡&‘r‰&í¹Tfì…gn©ûéìéX9韑`I›ÊÍî‡c#¾EÝËæÄ„óh„“šp¦tš³ú_+.Å ÿMpY¬ž™Ž4>@Úƒ„°QÏŸ].žõ/ëlÄþ» …Û³þQ sendstream endobj 314 0 obj 3294 endobj 321 0 obj <> stream xœÕœ[oÛ6LJ=úS豆÷Ëk³®õÐÙ`/Ãu[¾¨¶Óvß~‡º™qDJf©B€ ì£¿Îùñ/^dÍ0"¶Õë|=ù:ùš‘¢­~™¯³W·“Ë¿ á™AFRɳÛO“ò$cŒ!E3ÅÒp`=yqõe–»—·wh$D1xãíÇÉ ŠlÄàDªªífûéð}V¾#©™¬,l“D⋪iºÙf«Õì°ÜnìQ®ÃÒTGg›¶‘(Ä ãUãÕvóëçûZ —²ßy}›ý×̉‘ˆ×tÁ‘Î1a)J˜}…Ô¼šN.§ï³Ãî~1¹ü'#“Ë·öß«ë+x™þžý2y=M >_"‚BÌc(l?/”§¬ª­ª„âLam+[”´L㣤=Ǩ!VÔÐâà<ž»¯wËMͨ2¦¦âæ>Ï· ‹Ìªý°øè¿Á´B:îB¼ÅǒؘQŧš:„F4EvmZ5¤W2}Z{i˜½p›Ú|ß–(«¨©w:EÄWoA„+êÍb³Ø-çU½1'µÇ\o÷‡›ùn™ ‡€`I«cù*“FW~+Þ‹”Á‚5|Ø6…°b¸öŸELnipí_‡í±­w}S´1$„®ýf^vÂBQ7~+Ïkiô/v{èc…  "5‚â•’R<Üï‹ÃT]6¡òÙçÅ|{¿©/›)Q{à¾è_Ø#ªèƒ]*%Ÿ5V»kB( I¸ëH8Wy'Ìç«n·L(*Ð{˜«Ëß{®Þha¤©ÑÚnVÿU­„ÕïìÓ—ê¦MÙGà¢%­?_‚ÜmÁ1Ùñ’$)IeçQ±Úì\J"‡g’Ã}¬aòßÏ–žP•J,]ao¯ J¢¬¡äÝl¿Øý¹8T÷oEEíż´gΔÝï»ey+ àÁ˜„…Á&Œø?^¢A”€ó¨ÇNÞeÊ1uð"ËìýcyL™1:üx0´}É—Ëå~ÙÕө tÞ;þétZY*´Þ|hº 2ðé´¦R¦-„FISÛ7òÝþxÙà#奊(“ŒÐ˜XBÉù#ó Å0?­e½M§*@¨q„¥g”<¤¹ò‚…©Hµ"Ë)†{ÜÐ }ª`au·8°¦S„ô(lÄFäÊL';A56/ªfC޼T¬þVͶ$T°—ß–³j¹LR^ÓýæKó‰^°FdË ˜H·8Ë«lxX¡4„‡¦ýPM§,pã§®¸1£‘-/^'›EÅò ÊŒ|KP…=Pû¡šNYÕ£¸1£‘-/^”'›–EÅò JùðÛÊY-ÇÃ0µ¨éteic5"[^¸°I¶s«mç@`=üηQ¯Kñ®mƒ„’‚s)GÕÏnüa[bÆÐfÉt½¬v ("Š×À¶ì÷8¹Ä§'‚4ÛÇNºÁáÆî»;s4wà ¦>R¹ÆÉ6 ¢bµQ†ß.à²HfEýº û„šØWÖ˜°_×ï¦Äx¹i¸éXîísdçrS/«"ÝB\T¬VîÅìsf·oß…x~:QÁå]GטÀ/hŸùá’ûÉ·Še´ãÇÔÀK+M·E«•|Êȹ‹{ç“O°ãøûåúG'ûédwˆeϾŽe¿L!ŒhêÁˆæ´ÀÌMÉæÉßó訂XfD2ߊÕF?3|xßgš:¾Ÿ¯ü¦Ôô'”¤ßQ6&úëLL¼ÄJÉŸ5V+ýRïýL0w´ß ÿtº‚k†Ž´1á¿>០ÅD¼Ì2ÎýcbµòÏÔ¸?,ê þ­“ýtš‚³]GÖ˜ýߪ%P.Ý%ÐÓ1¿}ìšGùcJàe›t¾«•{»H:´ïS¸Ç÷»ÁO'*8Ûut ü2v¹£‰ð|û%(ÆâÁ(VªI2ÊÕ>µë¤CïèS©ÃÏ»¸O¨)høŽ¬1qŸ?áÇ”À˪ É ?*V+÷‚>á3ó` ß ~:QaÃ?êøe‡5ü˜xaµy~ÎX­àÛeÒÁ Ÿ×ðï:ÁO'* þQטÀ/ØkG‹Æ“Q­ð’Ìò£bµ‘/Ã[>Ñ)Y‘¿ºËwÛ.öÊ ®l:ÊF´´Ó¤l™1?ü 'ñã˜"x•é¾ «~ùß„°£Î£í¯æè§´}Gטl¿LàÇÒZmŸâŸ ?¢^Z™Ngû1±ÚŸ¯$ìü¯fžÏ>Gã÷/ê?|Â2¡²à²¾#îÌðþ:x! Eâ­<¥ÉžøŠå¡ˆžÿÝÉó)²¿ìRS$züšGBUÁµGØy‰Äš?öÄÀÉlÐÈ 7œê·U<¿~&³JÃ`¥ú¾”n.Ðþý0渂endstream endobj 322 0 obj 1888 endobj 325 0 obj <> stream xœÅœmO7Ç«¾¼Oq/S©]<~öÛT¡¢mÚ·H½§À¡¦ß¾Þc×Þ´7ÆÍ*B⤽cîÿ÷ü˜û>/EKÑ ×ëÅçÅç%®×ëåëËÅÉïzº`¥ÕËˋ矀¥Rªsré”é||b½xuúéj·¿}øáò~/8_xy³x%»þZŒ¡ÁºáÚûí‡ýßWÏ/õÊOÜö—lçc|3\:Û<î¯V««ýÝvÓ?«}§„ óW››þ"¸N¥‡‹§ÛÍ÷ŸF-ÚÚ1| òörù[ô¬!ØN<ý¤;¿¦~é$¨þ1.Íë³ÅÉÙ¯ËýÃÓíâä%,NÞõß^_œÆ‡³7ËïoÏøcÅŸ?#cÌJ„N·…BÒêŽe¤X:áûÌRú¼Œÿ[´¯Å) 5·¸ø>1¼ž ¼x¸ÛŒÌEU!ŒT¼Úí¶‰E`¸¾¿½Áå]çiFÐä }LŽä ã;ɱ¾ýÂú¸ÀVùÿfßÕ[ï÷Óή*²Î§ °¬€©°w‡ßxÓI%Ç"s~õxûðËí~H¹“f,¶¿«ƒ‚‚Ÿû+¦S!ÈTEÖw«úËRvàôX.~<Ô›ÎaÆ7z·;¼¹î¬Ôðò›V0áFXA 7•6ãÆë8º1”œ]7r ÄËä2ŠÂÉ6éú&Øú&lÇûgyGp) ˆÂæ pÝpI±pã¢Î®íß² ]>Yet“²6x£ 1`)½6T€ˆ²`›_] 0aQèÌóã7‹…l‚˜ฌcíÕ=£¨rÏt%zœ.Ð3–?}~l è¸e¹8=?€*ºX^FP·›g|_àŒàeC«ÀÆ%™î7Zss¦ Srm]CŸ¬B¡ Sem•²è"ñCpæ\z¶-)ÂtL›Ç?`Æã§ÙUàçª\¨²°6|J&=hÆAòíU(±z@ªù颃DϺ>Yåê“•5âSr‘ø!¸Àrn‚cÛ2bçÇë;;3?ÆÇæuìóm>ŒªŠÕg"¬qZAÅšqlý:)B9?=6¶j‰žšêÃ(«X}&Êñ©©>hέ¶JF‰…ðcŸ‹øÈ© ‡OT¡ø¨©®Æ{W;h¾`ëÁI±vŒhþ|¡åâ#;wôðÉ*מ¬¬‘ž’‹ÄÁšs¥ÙºpR,„¥›ùÛù‘²S~Ö_*âV HOµ5Tò‘"ø@óA³Õ3J,„!ða~†„í\bh]Ÿªr÷œ…µn¾*è!˜@3._'N‰…Ð#Tóaw3=:2!ÓuÕg,ŒºŠŸ±L¤5V}ÆA±e]{ÏÖ‹“b'H{×|ŒÝN3½Ü YC£®2AYZ#AE#AhÖt\õŒ !ÈÉæƒìv‚¬èßc HUħ«LP–ÖHPÑF"ˆ`ͺql=9)B±ógi[¶I½ÝÝ=¿½@Ÿ6”"ÌD^{'ý‚•DÁ š} l9)B’†ùg¥´ c!U…ˆOT¹ º«PÑCb‡àÍ·´lãJ¤X;ÒÌ?®¤A¥q¥ëíjû°º¯ˆOÐDÚ1€N{±‡36šrõAhÖAðõå”XA šµ› RÁ¥y¡ ŠiFi…Û˜Ÿ¨#Bôõ0QÅ95ÅÆ‚ š­['Å:ÎU 5ÿ|Š[Ê44‚UqTÄ(®Ø Môñ Uq‚Dñ†òà‚æª¤X[ÎÏ?;¤¬Í³C7÷PuÀ¨¬Ð6É©¸c`½¹}¼û¸ÒÐ9iPV¦I]-ª&u_ÀàE$¦ 7J,7«šOÎÛq3‡v÷_VUçŒÒ ]ÖDÛ1Ú.ŽÀs·ÙøIß%Ç öçùðó.Þ‡kƒSpré/ú&DºF" k‚R¤=Û‚ !R»ùÇ—TïѹÚ* ù”• `×Z-s$8FQÒ±SJ,7%çŸwRRäy§›ûºÛ-Ÿ°âgÆmmýšŽ/„ñ°ªŽÛ)&ФƒãÛXPb!m>¹oHè<ð’5ñ +”µµT2‘"˜@“.€o÷@‰…$`þ©'é}žzº¹¯»ßñ +4ÑÖPÑDˆ`KºôVpU3R¬ãIoæ{’Nå±§©ˆQX ¬­  ’‰ Š 4éN°µï¤X@6Ì?ó$Ë3Oñ¦jâV(kk»…•L$€&ФÍÖ“b!=ÿØ“Ô2=E€Œ¸® ˆOYqÏ6×FPÑEBˆàM» l-9)‚òóÏ=IióÜÓͽªªA|ÂÊ5(kk"¨h"D0&]*¶–œ HªùÇž$@{ŠÕÕ >eå”ŵTWƒ.д Ï×”Sb! 7ÿÜSÿ^¹ ÒU%ˆOW±eiMü=$|°”Cl-9)Öq|b¨ù‡À‹ OUùa”U,?£²6vªjÅšpçØ¦H±xœÚ ¬îôs}UÁŸ²ÂçpYZ#?E ‚4éý?¸àˆ ÈÂüÃN·Œ!¸šcDFaå»WÖÖ„PÑDˆ`Mº6lÍ8)Pü]š ØDª @uw0>eå;X×FPÝMŒàM{ÿ¡ W=£ÄB’aþá%7^ê·zz¬ÀˆO]a2NM6cTv’P"8AÓß×M–Û;òßµM¿oŒÚa\” ö_ÿöL0endstream endobj 326 0 obj 2096 endobj 329 0 obj <> stream xœíœßoÛ6LJ=ú¯Ðc $ ¿ù¸¦Å’aíÒ%À^úb8n›6±ØÁ°ÿ~¤$Jr+Ò{j€uP”}úù9Rw¤z_Põõçânv?»/ l ‹»âÅÕìäOQXbS¢¸z?«~çœhVh.‰qîfÏN?Î7»åÃó«O3× ¹ûâÕõì#¾ÍÙ tÝv¹~¿û{^}™e¸ª/,}“"ÆÙ—uÓùj»›ßÞÎw7ë•¿* áTÙúê|uíAa¹¨O׫Ÿ?<-B©`¾1òêªxë|`¥OÇ‚˜ÀJBM¡pÿéºæÅùìäüu±{x\ÎNþ*`vræÿyqqê>Î_?Í^ãÛr¿/ dÎfkŠZ"Æ™Š «îU`´ÐÔø‘-‡´êƯ:m_g¼¨©Å¹û8ó¢+ðâáf˜sª¬ T\>n6ë†En¡nß-¯ãŽHn41yŽDŸ*ð61ŸJCFÿúŽ5®ƒ7_޾²Ü»î;÷ãæú“–rq7`èñ¤AlèeWÛÙEô’0ÎÂ<ór¹ýüÛrWÃ@˜úÂ'šaÏp"6ìÊR9zØ1mõ#äL±éÒ-?ŒRºØQX aM£m?‡œå8t-kʲH 5=@Êß²BˆIJàƒ'+>ÿPÕQèæÃªFHÑÀÂ3Lpƒ¹ßSZ}“‹m­yx0z³.í ¢˜‹ÖÅéïGå9aŠ±ÐºÞî.7›êvnj¤*\ûcuûÏ^3z-ʘ¬>ŸÌV„Wiéô¼ºn4^‡¬˜ˆÂIJ޶ b+G¸‡Ñ¨}fµÔ‚=³ýåLp‹ÆlŽ­³Âç,S3ËpÖ…v³xÂÌŠ®¶hKì| ©íWÌ~=ÏjÑÇ,ˆ8³’e6£ß¢œ1ƒ–˜fÙŠ0Ë4Rî—bÖq Ù؉OYz¢mÅM7Ó:BK@©k…¦¦QW@òVª^jð™ÑEQ¦€á%Q9¶‚‹Ì°®!>=”`mæ#cIƒWÖЉ§,÷´â2è<-âfeM%¥œ)Ýôé’Ó`eµÞÓ ÂÜ{vá-”ßæÚá­ÅÞ…Eyå„pd2çD÷zoˆû.lèÍèÂqÒFÔÚêŸ]¥ÿp1š_©ÁË­øƒÒ.D]É´«#­ÞÓõmUëc’€ËiêæßçÛåCHè%QTô:eCw̓BÚí@\ŽÛQJ”QhÄåØŠ§Æ?Œ'N*Š83Œ8<]iâZiÓ—v»!.Ãí(%’¯HcÚŠ'™žž8AÛê¶‘rqxºÒĵҦ&.åvC\†ÛQJ¸F+†gÙŠÇõôÅpé¤Â’*é€]4DUÉ$;ëƒÍK}3€‘ ©ÑquOŒhŒäØŠ0Â`úz·ôÛ5%n92)áÉJOJ²>L‚Öý¢öëõõò¶l6Dò¹ž ø¥œ¦ËÂÞÊ»ý)Ì÷PsÍÛ÷|‡½e‡*´:v–­‡TM_Ç–7ul3ŒC˜¹¿’†™×OëŽdF“Œ¨)IrÕ‡q¹îÖ­BªPiÛß,¶Ù,6¸6´y_;¡0œy£š×|æy{ЪÃü1î¾.»\§ÎaµG`´nC¥:,“Šƒœ!‰²+ñŠBY¶zãÀodN=©s³™Ôê}XØ‹ë­'àÍÇX*U%W†Ž°«ê˜-·šb—ŸwëÕÍbö$% Sû¯Ë•K%õi]겯ÀT㟻Úl|öÜèÆ•ÏH›¸êœ« 1x(€Ž=+t7&¶«»M‰Ô4GŠïœW»µ»õ‡ê6–0Ù¼4z9cHR‘3vQÌ5Þû“Y¶zCFÓÑïÑ©Ã4]… ?¼„ K¼~ÛQ6.fb¡Q{öå«ûß!^ %\ñ§Ž—ŒQ‹2.Þ“c«7^|©nò%Æ?–t—-Ç ž°T¼´Êpâ¥ö쇗ŒQ‹2þ]›'´Õ/¾”;ùúBéþú¢û‹û{ñ‚',/­2¤x‘?v¼dŒZŒq0m}ɲÕ/`Äôë ¸<°>TÅ‹9/ˆÂñÒQ†/æÇŽ—œQ‹2.Úú’e«7^¤š~}×ñûëËáç1Da©xi•ýÿ> stream xœÝœÛnÛF†‹^ê)tÙõzχËZ iëÖr(Ž’(±%Å’Ñöí»<,I§š5wž¸ý°ø¸ÜVw?^}šÅƒB8¿xõnöƒdÕ±hC ëÚc—Û÷‡?—Í—9³^ÙöĪ:d™öM{è|³?,on–‡õvSÕž)nC{v¹yWŽé t{p±Ý|ÿá>iÑÖ&ó‘çWóߣÏZËtíÓ‰f~.D0Œû¹“BUŸqhÎÎg§ç¿Ìw÷«Ùé빘¾¨þ9»XÄógóïfÏÏémÅÿ_FF›½)˜.3„Õ‹ª|"[‡´Æ ÚCqJQ‰šZ\¼N4¯‡/îÖ›Ä\TB¢âò~·Ûv,ª Úã‡Õ;Ø£¼cç|nEe|éåÀñLRŒn5¬>¯UþëØÛ *Ç«¡Ý}\îWwFs~lÀ*e]Üé” 0îÁÅ]Uš S!^;%ŽÏ‡»íf}½¯ƒý32eƒ‹Ú•êx´Ä—íñ䜌Áç:Zlord$Çé”9¨É˜ŸŒK¨ýTç$æB†”ev»ýöús­D2×'«Õ¡þö‰ð†ÉÈð‰ÑßúÔ~s»«ëmŸ®z]:lã¥?4— Lš.Ë]l÷‡Ëë»õîPŸ‹£Ãmò-¥EËœ3‹WP0;öÁ„Ø·ÎÙojëØ<Іd¼áL—”Miÿfõ×íòî³æ*<¾!—™Nf¨ïU½zœiÅZµâGÇ‚T íʇŸZJ]0bâ¾QÄ…ŽLj»¹ùûñÅ ÆmU-ï¿¡-;³ÁäK¡õso¶»ÃÝòÍJ 9=:0z¾“X€Ýo•mRæ¦KÊ•[‰FÕWn=MÎÔL*Õ¡Ú¤@É™3"Õu}²ô¡O–/&˯¸EŒÈšpŒ[Œ-€[Q¾†)ç–Ç‚·!w#Ì~¬tª@X aÏÖÖ±¢o‹)lBêU·¾ÐÌ8› }õ«0 ž +CØíöõ Sž ÂÅöv·üR·Lé3_#³“âI‰°#ˆE H—†,kclÄò8½§&Öø8Á±v ±tª²ÄöÂþ/Ä"¢Ìx¨ˆEÙ:Nl4eh6¡rĺx'LÄÆˆŽ`–PW†Y=öa6<‘YÌÀœ9º]]”-€YGµqšcÖt»¦wëO±¬àc°¥“c;Ôöâ¢ÅD*™–¡g÷ûõfÕ̲Ƞw.­rÏ7Ÿ?­íz6ÖÛÝ#‡èÝ´Î8º}3”--cÔôhiÅD¾û7o?‰ÌØw`Ñ ËçÃ^Ûb¹icÄg¤ìàzûöfõ²¡HËXþðŽ»—‚¯F`„p ½ædUÊ€‘ ~òMSKUSаfW ã }nÉÚ°P¶’¸¾ Ký  k$ItÒ2$ ´áRÒ8’¾@ÑÃCV l'I>}'–tñÅ«xBi9’zm(’ô(’0¾€Ñw†l™²äÌôÝX2NH^N´I½6I¢ñ%žqÞ§žö'<çø ‚b9YëÊ Ó·nIí´n„ŽNZº^ºQM€_ÀèkM¶ÐGÙHÒºx‹¾œ$%ê÷s’D'-GR¯ G’EÂ0úÒ“-ôQ¶’¤Ÿ¾ÉJ û Éj$ItÒr$õÚp$™1_Àè ¥ÉòÆ@’ÓwNÅÀƒÎ©‘$ÑIË‘ÔkÃv±Œ! á }ÙBeë8IÑTñ|1IÕÛsÊû¡¥eHh;NÒ/÷7‡uýcAi™Óݯ[¾¼¬Ö¯¥H{ã iÚW¥Môën=B¦/îš·¾oøœì~»üëôz»[7¿mÍŠ"*/ÉŠ”-P/¦ï³6<ì³ò£¥“–´×†|(="Óa\ƒo­#Ëš[HÖNßg%Œ~Øg5$:i9zmÈþ˜cÛýCB9|HÈF0‡ðäIJêe `Îðéߥ)”Ø“5Ž9:i9æzmOªæ á"…2dEʘ2Ó7k ©Šé¢Ó•£«†CËŽ)&1Ž€q—\%<Œ-€¡ê“3Ä]ß®õnµO¯Óx#:iÙ7•öꎽäY”û2'·ƒ! 0×DÕðbu…‘» ѹWýý*oÍØendstream endobj 334 0 obj 2288 endobj 337 0 obj <> stream xœÅœoO7Æ«¼¼O±/S©]<þï·¨!jÚ %ï* —J€pG›_ï±· äÆñŒÆªr’—{î™_ì±oØ/ê¡SÃÏøzúyñeñ¥ƒÍØöåôs·¼ØûÀv©O^{ÛXÜ¿:cLtŒëc¾ðyñüàÓÉÍzyûãñÅ"“ñølñ\÷ÃXÖ°àÃ8ööúÃúß“û_V½Æ–ÃïcÖwãÐáÕj}ryy²>¿¾®ÚØåÓxõäêl„ÐÛdì8xp}õìãÝÖ‹õ~+?‰¼<î~Ï1[H¾·›˜~¶}ì’ëUì‚3¼æ[³¸Ø;ü­[ßÞ-{ï:Xì½þÙ?:È/‡/º/åµòû7BàtÖœ¥Tê-M IkØ•UЪ *™Ý¤ôþ6~sÓ›3:Á`ªµ¹ü9YÞ>4xt{~µe.»JiKÅÛ»››ë‰E“`_/Ïð@œ‰¡¼@Ðä+ƒ¦Dò•‹½–¸¿Ãù{Ÿfß'3„>ÜÜ«?Ï–«¿/–ëŠÜËy4÷)>´÷êhóÿÞõÚèíTó"û}}ï7ó ,ÄñÂÑåݪ"ñŒ(°Äû¤9ñ’Z»!ÊRº=Da&(ãã”ú>A‚ÆÊ>cy‘1aZdö÷Þ})NX(ÁÔ¢ÄÒB Ö·GÊI†JÎZªÉmVº¾]Ÿüu¹×)¯ -Fp(îþõÓBÐrIµG+ßFÆ|%g­ŒÖänZo>lÆTo@mç¥g§Ë‘6ú\okîl˜;‰1bEé°&‰‘ÆÑBH³ÃF¡5iz£·¨ž]Ô‘&g %Í=ôFšÃl)„ FhÒuÛš±´€tÚý”ÊI t€ä¬•š½Qk«ƒ ‚1 Y-Wæs´‚@›ö)Õ 9k%‚fo4‚lAŒ°¬»Īz–Ön‚\ò±÷ rÑöÞR ´V è7Ay—VA'4ëÄŠw–BPÝž Ÿ«6:ArÖJÍÞˆ™‚1 Y÷Äæ3ŽBw¾=A.Oår5ÉY+4{£­b®jbÄ€fÝ)±ªœ¥…äùÈœNÉ{cO&HÎZ‰ Ù _E#4ëÆŠUå,-„ cÉçåt‚´î 9k%‚fo´U¬f3Ï M:$+6q´€ ¦ö)ß:@rÖJÍÞhÕMAŒЬ+#W”s´‚”!‚“ ² ÉÉY+ôÀ[ ‚1`Y·1Šå,­ÝÙȇÛt‚‚ì ´V"höF#(ê ‚81 Y:HÍg,-„  É§Ût‚¼>ƒJœµA³7"A5›yN hÖ]+ÊYZAηo9²6—md€äœ•š¬58 â„€æÜ‚XMÎÒBø±Ð¾ÛÈêD¦GÎW‰žÑ‘[Ã#4ßÚ‹µ±´v´kßVdÁôäsDAg%z&k ¾Êà„€æ”\-ÎÑBøE>Ó&ócRèéÅœ³?³5"?UÕ3#,ç&Y±Jœ¥µ›Ÿ,Õ¾#Èäíâ㎠€­•š½5¨~81 YÉJÍf,-„ Û·U$g­DÐì­A ĉÍz¾³bq´‚¼!iÓ rð¤%¨Š 9k%‚foD‚\ AŒЬÛ(V‘³´‚lhßd†æur-h­DÐìDP,…0ÄMºÑAl:ãh!ݾ#Èhõ¤#¨ 9k%€fo4€‚:X-+bDæ‚\YÎÑBO>Ó¦3¤,£'HÐZ‰¡Ù¡¼Œ}=¯`ˆšwr…9G aHAû® #£+HÐZ¡ÞH ¥P³1BÀ’®£WRKk7@:ºöMA:FS µ@³7¡?%+3ʼn å (±J¥…0åSû>!í£OHÐZ‰©ÙÛ›ËÍBÙD˜ úgóÀŽ>Àvh¹^ŸKßÅ­)¸9Q¡8+V¼³´¦œmß9¤­ft Z+15{{¿¼½þ:N?Önâòþµ?øiú¡Çᣃ_7ƒª¦¾Œ‡ñ}®¥¦ß¼^­W§·ç7›©ÍB´Þ^»[_}ÜèäU4Æíð/Ÿò{ÞNïù¥Œû„’e’Øö€¥…Pjbû•ÇÝIÅMùD©œµ¥³7ùsNhÒµÛ°´€´ißœ¤7'Õ$g­Ð쫈štåö- Ú÷& ŸåÉüÈ9+ð3[kr,Å Ë:$-¶`ií&(KµïN‚¨¨üú*ñ3#ÓSs Å ÍxbýI,-„žàÛ÷'·ú“êø‘sVâg²F<Ò¬éOâ„€æ|x2…?-„íû“ oK“&$g­ÐìöÝn¨"ˆšuëÄÊq–Buí;” ’†NœµA³7bÅŒšôá ©éŒ£…¤Sû%€ð¨A©ö‘¢‚æ Xsý5xn' 4óÃŒ)²®#uvzøÛÌíÝ=…7üü.ÅŸendstream endobj 338 0 obj 1905 endobj 341 0 obj <> stream xœÅœ[o¹Ç‹>êSèq‹ÖcÞ/¯vÜÆ­²Qײo…`k9¶¤è‚x¿ý’3Ùq¢C“ì,ŒDG:þžŸÉÃCR_§¤¢SâÚ×»çÉ×É×)­ÛÂËÝóôâvrþ ¥bj+«˜ÓÛß&Í'è”s^i6Õ\VÆ=xžütùy±=,w»}œ¸FJ5wo¼½ŸüÄ*ßælªtÛv³ùíðmѼ™TÊpÕ>Xú&Ug_¶M×ëýañô´8¬6kÿT˜ŠeÛ§‹õ½o¤º–‹¶ñr³þëÃ1hJó‘«ÛéÏ‚ZU‰Ú§3Q™)¥VVÄL5£Ü¿º®¹¸žœ_˜vÇåäüÓ”NÎßûÿ.æ—îåúÝô/“«k|[îóµ!*™³Ù›"¶y¦€°êSQ¥ŒL51>²uH›nü¡Ó^‹ãÌR/jlqî÷8ób(p¾[­sN•µŠ›ãv»éXä–¶í‡å=ìˆäFW¦Ì0øDQo#øDšŠaô¯ïXã:Xqó}ô•åÞuß¹ûÿÝÝ?>oÖ›„Øãi£`ì­Ê{?¯ÿîeÅ8 CÍ»åþË¿—‡–"¨iHB._àxe‰Ì<¦­Ó9Sl|ˆt>AˆÂâé|(y›žÀˆkI±æŸ"[=Z¨ñéQþWfóƒ'-ÎO§. –BP`Ôeóú§Ù’–ŒOëÆ‚OZœ N]A"e +q »à ¡[BÂçôc#ÄiÅY>CxÚâ õò² rùS D^€gm%Ud €ˆi¤ÅJ "ÝA´Üî7뻆ð¤ É¡¶W‡ý±]Œ3ªÂjéÝìŒR’2qHƒL^^b †2>>0„T4·…æ>!ÃLõ~v¦SRãÍ` EK³‹lÀÊÆF¹4,A:ËŠ[˺ý„‡åóbß•«´1avT&pWà7ÈŠ$hyx‘-€;I²kÚùÜqítÜ­¶{žž²ø@Õ‹»\¬›Í—iJÆZTfsñ÷X ô‚æ-/²ÀÂEví:Æ*ÞÃò(îW‡Ï ¸ài‹®ÖòòVë)©t‰`Ü©hƒW‰-€!jìø UéCËK OY|ÀéÅ"hæ§å€_×Ënóü: 'À¨Ž—§—Ø .2Ɔ²ë×ÙüG3oòãuuôàéŠÒ3öër·y©§+íÒ¦p,B&¥f~ñ+;gMvd´æ!;š_ÎþQ¿‘WLu³Ý|³?ÜÜíVÛ@á2¢Â³}½hy.uxpܯÖ¾ÙÑè ª–¬žUÝÃ}~eòT'vôt"DœÐ­XYdëôø'tþtœÏ¯bƒb¥ç7!áBT'¸wÛPÉ´&ÔÅúþ÷šJZYÖ1šÍM3:„ØÐüÉ7¹>°ÂÛdÁã'IXÄÆÔëöí\²°8X>›#JÕÛnI¯˜I‹V.-² +íøåR!ô \ê‘ Èâ)‹#Û‹‹3”JÈñJ4ƒA­\Zd FäOöùÀp:(—¦ƒ§,L/.Zýj€áÜu$ÌËn¥p¿]%€Tà |fÐʨE¶\r0>HT ʨ© á)‹ƒÔ‹»ò[H?¤{Wó™ÔÍÜ(HE¸ñ#îÚu‡ÝÇÿ$ Uàˆåh×"[Z”_p„ ®‰há)‹£Õ‹+©dP]qÝÒ~n€SB›6Vë}Ý꺇ër}ÛmšÅ tÄ ·­øZdë4ƒÎÔøÅWnİøšÆ ¢²(ƒqY M.÷Ë·!*ñ ¼¡h™~‘-"CÇ/Êre_eÓ ÂS‡¨—WP«·€ÜdÊiXùA“fsÿ€¿…>š§•tÈRhEÝ"[ƒJŽ_Ôå’WÔMaOYœÁ^\&ƒ³úݼ’°1),èIÐVE¶ ý¶èØ¥aÎÍw¥á ñ”Å)ìÅåQ¨NP˜LVs \¢-<Šldù=ÔÑÉbµÜL²ð”ÅÉêÅ呾ގPÃÎur¿8M(¹–ø BB­FKlÀQ›½áÑþwd‡§,\/îúâC»#àœ?/ßÚV!»;¡›Ý—NemX†n–:ãŠv%ª`+ðÄ­`Ð`+±ÀFøø—Q[|2aÃS…m ÎÁv>[¶ÕZâz¨eååyѰÅNÖ4ì¶2Ûo‚tÃÛ‡¶¢Ü|ÚÕ="Õ”A¯ + v˜K±8,²ušCgjüû¬,{ (+a«¬¡Ïeù‚w˜Cú,ëèû¸=ìu³ë@ÙׄŽ«•x2 9Ú ×"[OšÕ)RåVx…ʼnê´ýÿLÝÔwͨ¨´ì†9Ê´ü1·»8ÿÔO×Áêfýô{[5f’‡é:aÜ+é+-©ÑV*E¶N¥ÎÞÕÈçTˆ*wúEç´Óöñ˪¥DösìÇ™ $LÉšªÐþҔ逸]ýnvõ®eÏ0·¯ò¿Áñ‘1ê,%}2æ ñZb àUÐñ/í2*þê<Èöé¸O`O\ô®Â@_Þ‚xu£Ã¨À 0ôδ!´Ä€“㟄óßפK0ÂǨ×Ü>ð Õ­¢’ºûfó³¤#å%Ž€Á§o Rb ‰’ñϧQk¾;Ÿ–ž¸(H}?_]†%)ëæ´›ãv¹ìu3/eÝvjÊÁµO è»´ÕG‘­Ó$Q+Æ?¸FýÙšnɰ}|yâ±?䢶藼SÛ©kv.½j§:?tqV¿Î¢ž°J<aÐm¹Pd KÛñ²Q¥ÙÒÁÂÓ«—‡sªÄ 0îJ ¥ðE¶†ÿÄ•tpb-!> stream xœÝœ]oÛ6†‡^úWè2j†ß/7CÓa[¶èd[IÜ:²j+kòïGJ¢¤x¢"±T+@–^>|utlõs  þ+·‹»ÉçÉçåûÌfqœ\NŽÿ@ˆHŽ9 .¯'Å'P@‚0ª7î&G³Û(Íâíë˵!AÔ—ËÉzŸŠA律Íuö%*†€‡„—oÄz¡ŠÏÊ]gÉ.‹Öë([mý. \–ïFÉRïDPIh¹s¶I^ÝÜ-”s¾ rzü®ÆL‘䀿cšRI`ŒˆÞªÔœœMŽÏ~ ²í}<9þ Éñ;ýÏÉùLmÎÞ?LNÏüÇRŸÏ!†UÌ:”€ e™VÑ6«Ã@ÀPÏl>¥Eÿ“´§â–H‹[œ: O›Ï·«Ä0§TIi¨¸¸OÓMÅ"‘¨ÜŸÅKû@ Ýb|È‘Žé4ù8Ä@,ØGvuZC•^NÂý¹ç’èëÔÎ?.8‚*“m)ÓÚª™÷§ Yg^’¦¼Y”Lâ0ŒËé=¹ŸÏ×ñû8Ë}‚ q¡“÷³©PŽ„šeQÈÕÑb³.XÁ¨CL°7yÀÕè >Û8YÆÛxyõZ¿7E„+±DñƒÕ6?‚pø ^Ët¥`@!ÃòÓé:Zšmˆi”c¤ùþé¹9ýíêæ6?ÌÌÀviܵž¡ i‡²!Í…àß5VÛòP°ºŽŒ¼<¸:m.ÔgyxÔÖ½È{ÔÖ|-ïƒü6ÞmÖ÷ÕWJ3”ƒú.É·ÒJ‹íw‹ÕJ>•ßÀìõT6Í~Þ«ÓîQ[7ùµ¼—J¾ÀðA½¼÷Ù]Rle#Îî«•o ÙІýp¾aoòÝ«ÏîQ[7ßµ¼Cäûkúì.)¶1I$öæßN±ÚøVÆ÷o"äž÷ê³{ÔÖÉwCÞ!òí¿Ïî’x+©œzsu§X­Ôs2¾«†ö\½WŸÝ£¶nêky‡H½ß>»KÒ­”æÏç]bµ¯§{tŸWdóuÞ«éèQZ7ð•ºÇ»þÑì3¼UÏÑ%ÅV$!÷ö{H§X­xC>¾¡cI÷ ½WÏÑ£¶N¾ò^à= ]7`¦U‘ ëß÷ƒÜ!Ï60±½y¸S¬6ȱnWŽý£_¬“Ød¼W“Ñ£´nÆ+u‡Š¸ÿ£Kî­¬RéÍÜbµ?é€u»rt{WX”þ¹X~Ô_Ê[Àú ƒGmè‡Myïε,Ä&Ø`ô6Þ}*¹'@Š tj ³’mÉCã¨ÂõjÅ”àé|U”Ñ` ü³_þúÙž G‡|X"”xÃÑ%–Guo1>ŽêFóÄ‹?ôÄÑŸ¶nky¿žÎLû¸~áÿYZæÕÃ[O¿€¡*<«¨ +èô½[X»óOëMŽ;Œ éq9½ÈâU2/ü‘rÀ15]›ÂžŸáÔ!QV¶Pújr8Åj-PHƧr€ vÙ"J{U þ”u3Z‹;Mwe¹ ¥Æ/²Çõý®ÜM7tͪ‚€$ªÃ¯Ž~LJç¥U(´é/þÚA:Õ¤¿) ÆĬY@œovÙÅb»J³²f˜›Šä6Z_g›d•Ü<[8¤ØF$’ÐÛãN±ÚèFáðêb0ÝHóp¡¢»ÚeYÑf6• Cûêè·íêf•DëÛ¼H®Ð4ÏÏr k EYê|kŒ™@a"TKG±-”)‹¾_ÀwUoʲFÔ ±iºj}µ¹ \¦ÃŠ.GÞLÞ)– Eðf¨ñm)«mþïµm)ÒªÅàOš}14µ½ì¥€û.…úõsõ²:Ëþ¥Â–KCqÛªjpuÉ)ßüGåu+¬øOq{+B¦h+¾&æ×úDn²ùGP7ÛB˜sQȘ ÞÕNJµNH±®- úƒþ·¦n¶2ö‹h5<ý÷/Ÿè0Íendstream endobj 346 0 obj 1853 endobj 349 0 obj <> stream xœíœ[oÛ6LJ=úSèe@Ä ï—צéšmí²&C1 À %n¢Î‘]ÛéåÛïèB‰NEEæ(7E‡ 1@ÉGòœÏ!Mç]‚IpñS¿^ÜLÞMÞ%¤l³/7ÉãóÉáKBxb‘TòäüͤzIcHÑD14\¸™<:ºN—›ÙêÇó·h$D1¸ñüròˆ¢¢ lp"UÝv¶x³ùV7c$5“õ…YÑ$‘û¢n:É×›t>O7Ù"/®r–¦¾šæ—E#QˆÆëÆ£EþýÕ­ÕÂ¥´æ#ÇçÉïÐgNŒD¼ìÓ”#bÂ:Q”°â†æñÉäðäy²YÝÎ&‡¯29|Vüy|z/'O’ï&Ç'ñmÁûKCDP°ÙšÂñÝLyܪº¼J(NÖ…gK—VÃøÙ m‹cÔBÔØâà9`ž»OWYncTc£âìv¹\4±È ©Û7³KGÓ é°Žx%)l9ŸjêÑ£[ «†á•Lßõ½4¬èx1´ëÍÅ_׆±k¼ aÛã #>· WÙñr]…#æ¹%ûlói~»®›“vöxýè·Uv•åéüõåìA#Fß™=$RJtšâ¢1uºZÔ73¬¬…£Å¼ 4"…$¥MzQ^„Hú¿—ˬ¸C`„UóhF§g›ò)Qmˆ=ÿó—ƒ:¢•ÔVÓeVu[#A‰mU4A áÚÿ,­Ú`$•½í}Ùwd!v^žù<ÛpàYR)ùEmÙrBtMQH?#S%áYÜRE}PUÊ,V•ù±ÂÔ÷°Áâ5XJ‰Äá7ZhUÂŒÚûÝaT’Ϻ1%2…P.ón ™G5ÃxròúѺ©nÇ[êBï%…Iº[êL,£SGÌ“ uþdv‡»xÚ¼ÜqˆTGÞÃæn¤|¶'èðàp#ÂpkÙd«›70ÅâTæ=¼ Miy[.¢¸à„«oïÀÙuéàˆþº‰[ß\ˆË½˜m¥d«k±&±&8†1­y/‡¬Ö"*ë§­·lž°‚îÕ»TáOÒmaø>˯ÊÇc@«IY»•lp{wÉæBCÍnЄ8ÎèREË-A¶:¡‘jüÜÂ…»©'–_¥õ–_Žºñ¨iSËPjÔWLM€ç¼‘ÎL¼Tb«“¦÷jÀnªÉd¥õ§šFÝxÐη©QZ$jà9Dî‡ßö@–ÿóv¶ù¼{ð p7Ô Ž—lBlubCðøŸ 1£d£—hñ´õrãÈ‹ŽîGòC¢[6`%#¤ÿ^(¦DBüã­ìˆŸI> Û캰 ñœ/Ô™¦Ñ²M­.l˜&ãg&M›môÀ-¢²Þ­÷p™á#mEÂLˆã¼q.X´ã A¶:™l©†“íT3¬D‹¨­?Õ´ò.6[©Æ)øJc™æ8Úl´n±q6BíÚ*ÑB\çu*âåš[ÜÐÝ?IÝðx{t–»x7ñ´õsÓÊûŸ›HܸÎëÔÈhù&ÈV÷yc05~Æ¡šÛ)=»I¯f«Û<Ÿ­„À]Ø>rQŸŸm\‰Gi¾ha6TY˜sœý/Ž«f‰¤!èÜ¡¬>­H5º9 ½„æ)\žÊžîÛ é¾7j4ÁÑ"0Ä–'5–ãG Ô0ÞÀÚA÷D`<}ýØJ|PÐ}oÔH!bmïÙòD xü„GÖߣ¹^^¾-Öªçhî_ˆ¡Ñ2V­.¦ÀÐø‹hDÞBEîƒ*¢ª^¨aß0UEÍ·WªBÜë%AÆ;d«“*ÉÇÏT¤Ø5m¡¢÷BOT?T®o˜©½gªïz9`"^¦ ±ÕÉ|ôå9)üíd*Ú¹ªÝ¢*ž¬Þµ•£ì›Ä ë/ÄU€½,àX‡B=ÿ¬EÀ³oýO3ˆh:Wüü u6=endstream endobj 350 0 obj 1988 endobj 353 0 obj <> stream xœíœËnë6†‹.õÚ8†Ã«¸MzÚè)Ò&@×Fâ\ŠÄÉñEß¾¤,™JKR61²2 D%~ræã/ÑR¾–”@IݧÙÞ½_‹¯%Ômíæîµ¼¸-Îÿ¥!F1%ÊÛ‡bû (9çD³RsI*»ãµøtù4{_Ï—ßßþUØFÍí·÷Å'F\›!@é¦íæíaý÷l{0%ªâªÙ1wMŠT6¾lš®«õìåe¶~~[¸½¢"œ*Óì-î]#h" MãåÛâÛÇM«E(Õ†ßù|[þnû,À("ê> R•FZ•šw[;4WÅùÕ—r½ÜÌ‹ó?K(Îq.®/íæêÇò›âó~,ûý:HfcúPÔqX¨HZu(«Àh©iå2[§t;Œÿ´â83àD -Ξdž]×ËçE[sV•1mUÜlÞßßvµÈ 4íëù}¼#’WšTy‰&Ÿ*p1³’Ï*Ö $+Â0F× ke‡Wñ꿹W†»Ž»¡-Ï@ñÐ`9U»œã©‚XÎ%U]a7O³å»ÓÅ$Ñšµ³Ìw?ÔÓ'P™væ¸vM’pc˜Ÿ.ÖOÛ‚avÆí¼ðSàÈ×ç—ê½;²> ÚØž·§¹iN-eµ›hšiIY²m¼¾üµþ:ã„)ÆšÖÍj¾ª5DI¹›!ûRË?m…‚­Qf‡§Þõ°­l„låÚ9r½Y5ãZ¦t¼Ïçwo›Å:–Þ é‘ ´V£Æ Qe1k?S¥ì¹„§JôQ…¨*M•6iª(™«œGYæp‡ÁŒäJØŽxÍs8W\uÜŠQÚËžª4W^ؤ¹:6Ué’À(ž[åÄ RÅèÜÊ^^{·²T­z±Â“•ÀJt•M+[ãp•‘ß Ò0:j¬WÒÀðn%µùàVЇ¢ª¤[u„M«‘Ü*'½QÜ’[eÅ R¥øðn%%%†yªd/UxªÒTya'ªŽHUFz£$p‰çU9±‚Tqq¯²Ôõ*ÕKžª4U^؉ª#R•‘Þ( TáyUN¬ Un™å·‹UÂð^¥{©ÂS•¤ª#ìDÕ©ÊHoŒ¡+4¯ÊŠ¢Jh=¼W %;^õ°Ç¢¬äzEGÙ$±k½"'¿QÄv;Z¬ WÂÁ­ìm`c vÔ·k$±ÂS•v+/,‚ÕÏóÅ|ù|çvpçlÐî¸Üu„ÑÒ´Ï‹tHjK‹$ ö~$ÕÌHÖE¦ÅÉv\±ªíÄAÊÈh´øàTN¬ HŒÊCï:$Z®Zƒâ¼w‰QU$/ìÚƒ¡ýݨ=CQ7²e$ÄHn”‘ÍXásÃÐÜ(+V"hx7âÚtî8ï]‘@T•„¨#ìÑ`åd3ZøJ 9QV¬ DŠïD\Â'ê]€@T•†È ;A4DÙŒ>—xN”+‘«£ÁÈ–Ðn¹aµDxª’Ë ^ØÚÞ(¹wŽËPF2£uOÚsæY±‚ Q5¼1#:F$úµET•4¢Ž°)@4–ed3VøLWhF”+s+èC¿¬ÁÜ z†z}QTš¡®Bƒ!”“ÌhÙ ƒæCY±‚¹ÅòÁ}ˆëŽÉ~BT•fÈ ;A4DÙŒ><ʉ„È-”îC´êÜížªä ‘6†ØH e$3V÷`šeÅ 1n|h#çæÂQïÅ¢ª¤u„M"1ΪBN6£…¯5V"·N>´„FÔžª¤yaS`h$#ÊIf´î¹Ä3¢œXA†¸ƒ¿O.áþí?ÙûN-¢ª´yaS€h¤;¢œlF ŸêƒÍã ÿA$™&Z•vrmþ ø§Üç_›vÈÙendstream endobj 354 0 obj 1421 endobj 357 0 obj <> stream xœíœÛnã6†‹^ú)tS` ¬ϼMºmìic ×nâ$.âÃú€¢o_RÖÞ’Ì¥” kˆÊÿäÌÇŸ¢¤|Î0‚ ÛWñ~·}}Î o+ßîÙådtñË4Ò‚–MF‡o@F)E’d’r¤ÌÅèÝÕÓt½›m~œü=2’šNîGï²m&!‹¶ÛÕÃîŸéáà EEq`f›R&>/š®—ÛÝôùyº›¯–ö(Sˆb¡‹£Óå½m‰˜¦¬h¼Z-¿Ü—Z˜eø*ȇIö»é3-Ëû4fHeš#¬2I€Úw34—×£‹ëOÙn³Ÿ.þÌ`tñ«ýsyseÞ®ʾ}¸NË|?œ˜˜u(¬;-T ­Ò—U 8“XÙÌæ)= ã‹A;G‰+ªoqæwLxæ ¼ÙÌ—eÍUZ—Uq»_¯WU-R Eûnvî§J"ב`ò±3*ùD'Wˆ¤];¬Ê ¯ êËÜ MmÇíÐN7æç±o°¬ª*çéTA(ç WØíÓt³¶ºGR’r–ùá}> PJ—3ÇÕjÿXL2€$×åôð³mâˆjMªid1þ7JHVÎyP†¤Æ¼ü¡›Ûâ‡8WÕ´RLBfâÒ¼l¼¹ú˜PD!Eë~;ÛæŸÕHp^͇¿}º±­c¦Œ3%IÌhäÇ… ã¥^3%îöÛb@òB¤¬„¬§³»Õ~¹ e³*üˆl† _Hӓ׌åƒÈ"Æmz†H˜ßb5DÐQBUÍÕ¾%ˆ0 ŒQL>ƒ¥Ïôéþ‘2–#f:zâŠætŒ¨8ò"ÞŠQ:UÍÕ¾%Œ††("›ÁÂ'8ÅÄòBDð^dÖÊ®‰VˆÒ©j†¨v†¨?ˆ"²*|® ~ÕX>ˆ¸†þˆK]NøÏ³ÕzºñžCº%”Õ@s•(úe¶œmæw92iåuOÌ)²„Ї¥²˜ÛYR_Á°,A¢†P‡š’(ÓuATÙáXŠÉi°þí"‘!EÅò²$hÿ†Ä96UXm]Õ%TÕhHް!mß;¦ÔÊ ¥cŒŒ#y0ênI_ƒ‘Ç’Æ 2sÄ›Â("ŸÁÒ§<%ÅÄòbDÙ–dJÈ99’í¥SÕŒQ-ìŒQŸEä3XúX¤s£˜X^ŒìÆy’« 1M7Zvá(¬Æ•£ìÿÆ‘|SEä3TûLªdvËÇ“²;b‚;v´ Xµq”PV3Gµ²3G=r“Ï`í³Ãû«ÅòrÄô~dNåŠY7<\Øn¤(¨Š´«ëÔ}†ÉÉ%.‹ªì™AN+(ë¯&‹–?øž!Ëv˜¼)²"r¤@:‡Š‰å%‹`~êe©ÓÉ QQ:Ôڜ쵲•NV³CÕÊ\¶¹NqµÞŒ•¬:–¸¦¥+§š›·óü[ãyÿ¿j Z"Æ][©rðîNUDvC$PM’ùUT,U&Pÿ~E¥vΟ¨J(«‘*GÙ™ªÁ¨ŠÉnÁ’yUT,/U‚öïU”ƒãU–ª}+Vét5`E\ig¬ ¬˜ìŸ«ˆôY <[ÅÄòre «w·2%¤\¬¼75a•NV3V•²3UÇTÙ‡ z£*"»A°HvÏxT,/UXôïVD3÷ÌŠuX¦“Õ¸t”±n ‘Ý Dªd^ËG±[ó}?‰Aì V^Õª„ªš¡ª„™Œ©˜ä9`:™SEÅò2e·é{w**Ýó*Öá¼*¡®Æ #íŒÕpçU1é ²@ WÅÄòre7é{÷*¬Ž½ªõ¼*¡¬f¬*egª¤*"»!@“dnËGØMú¾Ý ¬åžØ­¶O󿦢}˜PY,¦•+.ò‚0‘†¢é¨{ÌÀ(¹çÉŽnw£kÀ¼Œ{2cc`)s·ZIó^ƤûUáÆbäB˜1ÍX^Æì–}ßÎjçê‚W:QwÑÖºNx8ªXf¹ V÷™üæå½ÝBR$Ô›ºÝ"&ÅA(Og^1±¼`QÎzÌl«çn'+ªf²jag´†F+"ÇA°<ÙgNúGœHdZÌD\ü¯Uÿìë?‚ãáendstream endobj 358 0 obj 1604 endobj 361 0 obj <> stream xœÝYÛnÛF-ü¨¯àK°Ö{¿¼ÆMSMáÖúX°ÔÊbK‘2IÕõßw–Ü]ReGªÒ….gggÎ9³Ã<&‘»?ÿ›­g³Ç„t¶ð“­“·÷³«Ÿ á‰AFRÉ“û嬃$Œ1¤h¢˜@¬go®W馵õ7÷¿ÏÀHˆb°ð~1{C‘³N¤ò¶»jÙ>¥ýbŒ¤fÒ?°Î$‘ÿ›nʦM‹"móªtO¹F K㟦å‰BÜ0î×Uyñ° ±p)ƒûèäÝ}òœ™#ïÎ4çH'„°N%ÌýBjÞÞÌ®n>$m½µ³«_2»úÞýóöö~n¾M¾š½»9¿/x¿sDŸƒ+l?ÎÕ²ª©ªŠ…µ«lWÒ>{IÛ ŽQC\PŸ;8ØÜóq€·u^ÌATÆTÜm7›*b‘âí­]>ˆ`Z!}ÚAKâ|žT|ªéȑЈž#».­Ò+™þ¸öÒ0wp—Úenëg)ÈTº\\±êç‹‹ªºÀtÚÝ*­7..*R4èÌ{[Ú:Ϻ¢3d€uþÁw££0¸â4ÅçëG'ø:g°MLHf7Ë~˜‚±L…+ËsÕ:#Åp€Ãf¸CÙ06ayÞ‚†J”UW"¥$”2ï.ý#F¢×vÕ¿î Q62ŒEÞ´’q—ÚÞ+ I:œÀqLÅ!.KKï”e”ú@5Ådpv¢œDtEÕ™5’q0xÊËÏ&jx°>ló…-òÒ6ݬÊ…eˆcœr±ðhê\¥ýBJ¹QüÙóÔ¯£~ÄU„±Õ´7ÁXHÉmÕ´wYoº$Ιt ß¹$V¥Œ¨`¯U}2ÅͪÚ‹~ñ'$x_¤Atp¶iüš](ƒôò¶® ÏÈGS¿œÈñ~Äÿ(Çb?ÇaÂÀAB(£´ÂÛi•ÀE*7¡ÃâûÙ2°éÊŠÉ|iu@Á˜«Á š¹^Ûra]&aÀd\ífrÎ1„v„—É|>9h+GØ3-#o6µ•×b°ŠI©2Ût2(cØÅ.‡Á Ëàý¢èÛ $ËHëþûÄʇ†4-k§Õl‡ Ó”÷Ÿ™|‰µÐaùûÕîq Xµ—làD8 ”ûמ!sCŒWÆ–mýì;2&Ã(:Õ3[جÝ믓øQä²_Ô¹¯¨Á:ä`ŠIu@#p¬o³ÍÛô·ÂúQ›óøùnòJðz’ˆÐH©Ôsêò ­ÆãÎzï¨Ñ$œº‚c×^Îõ0Ãw*Ó™ëñÊ䲜÷àsx àë‰ÜA 1h–>yèPí?ö¿fc³ü"óDÐ\¼Úƒ—Û2s_ÕÒ"o»Ê † „Í}ak­ÃY—.Vuÿî÷!~Åcü¥µA `5–ñÁpÇŒ*3µí¡ÀF]ê¯t½)ìea 0ŠŒPœwÊÍ–)̇Òïw£5gtÿXT^(B‘fÝ%Òwv÷!ö2)e<š§çþ·mÌŽ¨-€~M–nBçÛQiN“jŒ·K7¬^–™OíÃÙÊf„yBÒý;7Ž—·i~í‚ÒÈ)P‚ÁxÊwÄhš<ñ.8ÒÿIÍÉ>úf,’8Ž> þh2÷ c·®×\uÿ£‹‰Žsûû@¤$endstream endobj 362 0 obj 1494 endobj 365 0 obj <> stream xœ­YMo东›Egi.¿?{ÙM€HdÒ¹,ö"·å±µÔ–Ôãx}Š"Y”Üì¶wv0-Š*¾zõ^çiC ÛPÿ/þÝnŸnŸ6lþ-ýÙ6?în¿ÿÄØ†S¢•U›ÝÃmxm #Fo Õ„ov‡Û?=VÇ©¾ÛýçÖ ¢­°°lwûAÿçÄZ—~ûTïûáîîë{ÿ)xèøpûóü‚"ܹøSœš¾çÍ!fÃÒFþ'M¤1¸w?ÇÀ5ưøÛ¿Ç™TDiŒlÞïûOœmqškéÏ·οj7[îü ýÂ?žê9LG¨Â0§~þÁhÚqz %Ñ\¦®»z¨Zÿ@hÊÉø «¦Ó0¿À \§<ĵj½1+–Á‡ŒéÅæáñX:Ä èš¸ê¦ib–HÁ|œñ!ŽQµøh ÉdJF3ãæc cî°Nsžàªî¾æ M˜ã|=ÍËQÒ® ±CЂ÷yòÁSâÕ+nœPÀîö)&{®…ÖY¸«÷¼2?„ &Þ|±:þVRÁÊÍ€p𲝇aýò‰æ…‚paÒQª}Ó6SSsÉ FË´ïŸC†qV¦ =×ñ7auÚãKâC ÂÇ ‘‚·¦‹6TékäèÛ¶lÓXÏÏM÷9"Ë"[ … †µT(K¬0¸ù_ \¹ VÐb9M»Ü½d~¦c5‡c[ÃÎS?Ì)U”÷.å¡«Cê9—*íü3oˆ‘&f~~°ï»›Ï§¡BÚ)Gd~/†¾Úÿ84],NJ] f<ý0‘@~Æ7ÌÎT,& ¬›-¨—QsY € ’£2þ¥;žfÆI >º‹g¹Ê†*"èdë%ÍuÂù_u[ïýáŠ* ö`µó*ʈ´áó©p@®Sʃ~;%ø·@Ï ©ê"ÆéXM:,„2ž6™†*Å@!°´x\žE@*óPï«®3ãÈ}ßźÔJñoU¥êk èÉ ˜á‚P%$†ÃMëÿÚïƒQû2ƒÚT¾o0&):4ßÄãéåXŸvˆ)qD %ðXO§&œWPßO ÷!–(qŒi»Æ}dË'L#S¥#G€Rõ´Ì»!Gò´ýs~ d~à ÄJoøüü BÈÇØXìGUwªÚMª±ÌêîKÝöÇdöëšâ°ÖË×–…‚ÚE¢­¨ü6ï­¾È{kt™„Ö ÇÇþÔÞ‡Üf§¦”B‰Æs3=Îë(Ȇ8oe^½$E¼)ªÊÚçC}ó¿HVcPÖÁmçPo§2ƒ‡¡}xú§ªÇ²‘3ë ו­Ñ€7¦}«¡éOc̯áV,àçünH!µgeìÓæF–(fh¢É±Çæ® E ™PÙjw—ƒ¼ µ¦T 5èj´Öj Ïùn€Ã$]ã!ØLæýš&Z´JQD°éöí) H8túu˜Ã$vÆ ç¶4Ÿ4|û¡:N+A}ÒÚæÓE'¢R]ë{PJ6whþ;$¦Ä*f¡«;lW¤,õÌÑû¬{bj›IŒýi؇Av6¥.ÔúMÀ $Oh“>˜B[«o5f€\¦©õÍB½xÿ.5‘ ó-òtþU GG™g%ö:zƒÁ?×m{.F……oD‰Ç¾%p ŸÉ%õ}S‘è~BÙ\È ‡L¢Ÿ]¡ÆûÚ¢c½onö1ÝVª¤k÷õÑwÝüHB ]Âý%œH †VpÁ5™ƒö-0^ÏTü¡«EyØaá+*‰—Mþ·~ùáKÕžŠÛAǶ€ó~?f òÆÜ¦Þ ÄYâxÿ2î[`¤‘Ÿ¤ÆHlëDbª58Ëç9ÂPœ#.ÊÝxÚ'¯3‚­k«4Ó‚ÓæûŽˆhÓÝ5+`©ùÕ¨®Eõz~lâ÷W6T쬰`”‹ óáÔFBÃ8„Îs“hÑãË8Õ‡…ƒå®¸šb«!ò5ÐcçŒÅìT*¬À|ò(b™ÂäŠñv§1™$XÄB;ÚAÆC¸bí¢q+öKï™Êã˜j1 -a?Ò ãØßOSü´f,6‡?†æŠYZþÎiËù˲÷N[+ÇYÈŠõWtó5žÓ¿¤˜=”ÙRLø]8lÀ(s`]4œëL 㧤³¤.<|ìÉ&¤£ØµzçÂúÆlÞÀ¾qÖ‚¯rcÍ믦ñŽÓÒx·(ŸÜ.›ëãÝV8ϱ¬©ßqÙ±(Â4Æ ·¡“ÚzO°)QyÜQb)«ð(<ðȈå#¯JÅÁ¦ÈEåg°žRV¤q¼@ÎßCš7†h{ ÃÈÂ|¯ #Èž>Dzftv–©å4riô„²äÐÊ-L4Àú¦‰š”¼‹>ºÎÓÅ Ab g™KÉF-{ËFƒŽ(—¯ã³‹zÍÏmô¬ï»…„€Öw+ÑL×Û¼i£’þMmt©ô%íþ6Êtž/ô{ÿ‚*è*è+ý›o·£pÉ|=Ùü:G“£ÄQ:I®Àžü—ÿ˜ƒ–#_ÏT ’¿|7£º¼)½îÁ ZlÆ‚ã,x®|G¿ùP/÷tcók^ÌßïÊåBY=ç¸}‰åÆ4ÂG‚V0þéÔLiö[\J^œ?Ò˜1…z‚BÇn»xS¼ZÉ]ØÊ·ßw[»€%~q+¬¿œÓ˪üFÀ#kÇXZÉÄÄ¢N̰U¥y> stream xœµZMoä¸rô¯ðqØ\ñ[<äì$‚Ýd2ë`‘½ÉjÚ­¬Zê•Ô;îüú¿Jl7»í ˜Ã ØY¬zõêUi~½­½­ÜŸøw»»ùõæ×[ê×Ò_íîöO7ß~¢TÜbSâöáé&¼Ao¹¤¤·šK÷×Ãîæ›ï¶Í~±Óïþs‹”j>ln¾áÄ­Á‚*×>ÙvÜíì°±÷£ªˆd”Æïvk”¦ñ…q¿tã0ûÝádmDüáiôGRA*gbXü× ¡†P­U\õoûÉ=VïÝî¼ËÔí=DÔþÁÞ.p“;÷¸à¤R"]¥·ÏMï×¹&J)‰ë›çôƒ‹â ãovš»ÿZÿ“䤖¦Ž?5•_d”ÍYZ¤…EBH´œæ¡¸g¸MÑÛ{Ì~ØÚÙú×a²JÆ5“RL$ÏK3lšÉ{Ÿ+B Kví›}pøCÕèRw ¿&µJ– ÍÎΤìVÊ ‘Üù<Âü㔾P]pßÒ<öc·)^ÎÓžtÿ¨¿üž‡ùÐôý1â†Õ4ªé»f¶ÌŠVê PTHsàÕ+iûr¢t%ÓûaI—9шÅïXN«äæÝü»á9¢¬–ïqð3"KkýØ6}„\"ߎ°flcjž i›°8Éèt‘Ùö¶õæ0HR|·éž¢‰¦ªÓ™Ov²CzÌK ^Žûè8N„©ÒÖ£ßâž×d0ˆ»z)šCêp<9—Çoð‡¶F ËýyˆŽâ¾ôà7“Sèý®VìôcĈ<íû9М¦¼ZÑéïßg¤6<-/ct65•^õ‹À§ ß?e=-‘õæC»õûVDsŠìQf8Uƒ”tÿspÀ#/^ ¤ñúw Ë•Ä[n»x´"šÕi×]sŒ„«¤L‹69Ä\®÷|:ôqƒZà1í}¡¤dð™óbwÁ @ó#¹l›%r .­n›Æ„LŽü-\r’¦½m`çd(Ø;x ñ‡Üùš¥S ¢®ëôðÁʈj$UH–ݰDàÁÀRàwvÓ5çþ‰Ú.º¬µ2øF»m†nÞÅ‚øƒ•198É€ý÷ª†ãc $Ý€aú! A¸ûCðÔÄ&ä{t¾À"ýcnßkTŒÈašŠ*žÆ41\°ü8 ¥^#‘Ç〸‰‰Íº9ØE©d ݽĜaŒE©ÜÅl?ÍÃ/>„éí¼úIuRýîbÂq@¨£¥µAKÛqšì¼föÛËŠQ§J©_´8ñØQÕ58ÏÝó`SÙVºD)¨0Â\A»o¦¥k}ãï(@?Pħ"‰‘Ë:móÀë¢ÒD‚ÍYb¶ãašƒ_8p E¿¬7ÒoÔÍó!)^–qÉ$ºp·ï»¶YlÊ#¨¯X`çå±èBo7#®ÓYM(}¾¶clË,2Ñÿ'5.OÖŒý¾žr.ë0¹y­øê2f?Û¾'ѱð`:íÏM7ÜÅx2^_M$§{nÀ &ó8/SdwÈÜš¢é‰î"–x…ゟò4æz]ØbIìà+ {mË9[~îú>oV.ÑÀá ýÛ ç *ëé0'­…¸ZedÑtW°¦n<U¦œ’Lžñ*A“ Û£æ8ßÅÊçØ- 'Ð%™hôU™XŒ-”ì*>‘ŒŸHX¿Š¯ï'ï­¤”+“îþ»i÷9¦ˆ×exùl¡ß[Æ)ô  Ö`/¶6/ÿ¹ÉR¥Äç,F³éç@5ɞ̃êе©OÈ*k9ßáêSb'èzÊeçÜ®g; ú¢þéfD}’Å%¨ÖðêmhŸ (4|-îÛ`:dH7ùu’?6{á+u B»¢îpZscVjÐàpôèË2AÈcïåíþªncM˜ ã}Œ:ÍÔB¾Õs0^P\¾™M…¡@Ùæe¥á´GIÚî¡:‡‚ÅR„ŠÍäÇq^~l§n¿æ” °U²øãß¾O )+¶*ÓÍ|üîû - Õ $p[lš÷}ª§½÷~²!Á7þG²‡ËuÞá![Û”~„ª0Ì (ìÐýÏZÎQ}<÷ã< 3wâah·å›GÛÏ¥¬€»å³ú«ÆnÚ4‹àïJš¬EÛDgÔˆ”‹Ïà<÷¶IR»Ì@¤Ocj* Ǧ2ê…|nÐ` 9­+€bUª¸'l­(vþìì_‰L©ˆ–YÿK×ÛPŒ@uB"§=èÚiœÇ§%Õ?ÛÅâ@²ïfêÎs¼¤‰¦p¢S ³ñÞL-8ÔD_­£‘)M¦2uòîòvÑa?¹¥²0kÏ÷K,Å`d4Yö×i<ìIÔÁ²/®ÿ}\ìÊk‘Ω*c×9)Ί®=ÊI×eWEópÛŸ¦mí>êfÈt¦j<ÀN¡‰v#¬•pJ‚§¬Ê­Q7l€!§@ónð‹;É/ôØÐ`ˆU*Ås€½¾¹ÐÅ•“²´ÁI‡“)bÔÌà0+Óü4¯ÄÕ™ž› é/t憓äÍIg. ù‡È%Ÿ+ Ù^Л¯ÒÜðÀÎÜ‹-¯¸KÖK‘Uݘ– •wêxºc•u^Σä³?f„ÍT×tÓç­â¶YK ÖB»<ã Ó¸,¦×\¥¬¤í²ðLskã’ædL®]ÈÆ¦©œ Øˆ"b”BÄd-tÊykírŽÂ7ñ–uÔ °Õ:j|£ƒOÇgBót$Nù%Ê3Iœ(ɘ¢d\ýxâH±%‚ü ò.¡4›—ºüqêà&•(¶R`n”ì°Mi”ùnú¾ ŸrMŶX?#­59ôݱ ´æº)…ž½«o3@.¾ç¬T ÚYª€ÛØýƒb¬pHìz€ç~øNÅÉf<·¢X†£ý•®®Šç£m¦KŸ|€¤“È™ìÜ8.y)}J ¿9‰¹KÀ“IéùÓJh_•ðÙä [úSB*^{cŸâaÐü#ýúBÏ‘e€÷“¨]šãxõâç ¨âêmç€j˼Xž•¦ØþkWÊ2Ó‹X¡Ï‡¬_ Vc °Ú}ïÍ>Í„çí8…nF­Yq¾eèW½ÎɾìýŸýÎOr¡Öh—†úZOñSM Ù\•L_L†ãPèÅ÷ͳ%QjjÔ;´~¼€­Ï ä*vý~(©7 ä?GÈê¤ÏÈ0S²KÑü#ÒOøÁɦe™S"R8»¦:¾ ª›èd®¯ê˜ Þ ‘fÕ‹ÅZ˜ Þ€Øß7xË^k¾&«â|Í+?P†¿RB(TÓ þ‰€¨:ª3ñÿýB^uFÞ)º 3ŠÝ¤•Oÿ£ @˜Hh™î•ûàîd•{òÏ·ÿ¼qþ; k½endstream endobj 370 0 obj 2575 endobj 373 0 obj <> stream xœXËnÛFºÔWh™ÑdÞ3\t‘ºluÑ"J¢-&âÃ|Dq¿¾w^—”EËqà…Œápæ>Ï9—kJØšº¿ø»¯V«‡5ókég_­Û®ÞbL®3’i®åz{· o°µPŒX¹6B¹Ÿmµzóñ˜·CѽÝ~YÁ"cFÀÆíaõF·gH¦M\ûT웪*êCqp5%Š3nþukŒnð…¦ʦîýép³Éd|p×ø+™$Ô™ÿîƒ!,#ÌWýÛï?¹m<ÒÂ:6Þåz½á’H6–U{*¾ÇíìÂøŸ¯7,lü³+ëÁmã Ü3ɦö—s"$çq-÷~’L ‘|êËúþTø×5áŠ*\?øUf‰2™M‡Þù5J´¶êùCÛü¾Xö“qA4Sà(w>¸ÍÃXíNÅ;·_ BµL9ëM7<ê"8ˆIØ»a†Ø‰í±ôáåb)’}a ’ÀOYûàœ"†Ò±¡‰Î F“Ãí,¸œÙìõL±pÐìir¤Æä4u°I›)}©2ó4 Æb†ckPs™\ªŠC™ûÐòŒ…öï|´‰É\gÅ ñL–Qƒa§üÛPÙÖê[W}~SCo y}È»Ãç·nƒ2Äh¬Ç®,ê!wäžm„Tl(yˆB¦Ÿ´g//»*%w»ÂÛ£k_1KÕ¢À{£Ra‘ä=U)z³ÒaRÈ›¥3æ§ÓcnY Ö!&m)bÆùXÔ׌õc…ê…ú芾a“ÚÅ&ÙW=v¾0©vE„.«e:徨‹.ÒIFKµ(.ƒ¾Z‘,ËæIÊO°5äÑGÞ²²ßB\¡¨XZ*‚£†Í½‰,¯*i.°¤Á»c\]mf®äu„a%”¸uô¡¸‹¡0”a«§Ð†+ìÌ  &34ûá>/ëã†X^ÐÜÕ ÕeÑ„ÖRÀ€C¨Z¹'~Ëó±¬úheÁ¿>„œZ‡²bžSÿFYø—$t€²¯N‹Ê¸–"VýÒUg¿*ˆ‘XÕy·p†g< ä¡ézDh[m‘¢Cc «ü1fW+•\=æ!²œKÅ^,΋.lª"Z+3„ë±NÖŠéæïm± %€‹2Áox¨-C”¢&­ÝÁ = €ÅøJŒ3%Q@ßiK˜Ž F“x—äxêǦy» `¬€äoô z ¢Æ¯ d¬ðcÞ_S䮈hƈà¦>§ <ô+£¬à“(ZâØç"SƶS]JbÀbç®ÅJ„n⪑èÒ9T…ÊÀΟªå%ë«ük´“Mð²{àHÙ„mjxz°ÇúHÔ ­7ñ†Äb{QvL™ üº‘Ô„½@€/ÍÑ¡¤h¿Ä“ÏÕÐXÖ_·†q&5–H«*{„„¨ÑApzS➪&’" «˜ÐïtJ›'.ÿZ§*± 9×qMѧP ²'ê“ •f²­ôX,+Ýྺò÷€Ù±i¦bZÀKOk—Cв|,Çcž¨ z$ Ú¶ Aç`^h®é£n†ØãœcÖµq9˜3%±yþhbÎ2‹U{Ny›~©k»ÐóRP“Ž #цbçƒFEµ²è] ŠÊ²Üc'»òT>° ø\>Çr'*Šj•BËðyËìAîÈu^ÒÎì˜$Æ œkõþ4B~CqÁ3ËR4‹`. ¦w)˜õuïäN‰„F4-n"Þ®OÌÈdÚ—Ư*ÉéÀ{þG•ÁœÕ}”€å2¡_>M\0 †¡.¾;¶K¼šÕsæ,S}s7œcG@ÞS$AƒDî}:¥¦}PøRÎPú׺®Éöb"ÿÁ¬Ú!bã¨Ì_ÇWv¡X­S"Ÿ3ÅzÚY"Ko’K‘ïÛÀœæ@„uËtðìˆä/™ °óò”šDPls9¯ÝçCî³=–{_HPׯÎTÈê¬P £§¼(‚±>1Rêäõc3&yoðª× È9Í/}xì¡b'rª'ñž/McÛ¾2Á´—!YL& õ§€hþ|äÏ»²û¨ Çð_~ç2 ¿suÅÃXv © ÍèLr'¹h'‚.êf¼?¦sdJUUTM÷ÛNÇï MHžq$gçɃîUÎ4ïAT»ò¿üPNãÒ”W™a^‘gŠa‘~‚XíÛ¼à ™h±iïbxDF1/KŒôcJçȦH9ëåEWû¡ñ@ F•I6ÏZðbXp|‡œb½be¤2°æ[T|\ñ‰¡† `§a:yõOˆD”Na¹ÎÑϧc6±LŸßÎA|P3Ó‡]]Ò(vù¹™k÷…üt-Ncœ¹­¿o×­Üßÿiø„©endstream endobj 374 0 obj 1824 endobj 377 0 obj <> stream xœZ]oä¶üè_áÇX+⧨‡bÛ¤-š E·‰‹¢À¾ÈÙ£]Íh"iÖu~Tc/ÅË+r†#Û ?ÐP"y?Î=ç’¿Ýä»Éíþ¯w׿]ÿvÃægþ_½»ùþîú»_»áy¦•Q7w×îvS°¬Ð7E®3~s·»þæ‡mu˜šáÛ»O×FdÚÃî6×ßÈÌ>ã<3¦ôÏ> í<y^â?T‡ê¾íÚ©mÆwögÆ‹Œ+íî÷WÇ¡šÚ~ï~¿°&ØÍ-×0Ã<ªÚoìO’g’›hʺ:Œö§ï~áì¦ÌJ͵´›R™ŒÃ7J»);üûfž¾ÌrU(üFÿ0?˳ÂÿlÚº2Ó\2|¸«>õóî¸ÊŠ‚ |¼iýÊÜp|xU;»]û‹Y)X¿<µÓvþ¸I ‰O‹í`¹`:?|ì¦'´u®´ßx5$ØÎÓ•cŠ{ãnšªk÷ó:À¹ª”çëàZ¬nü©ÝÌO9Ë +üÓ¡Ú?ºÇ2SZËs&MôÐ Í~B{jEö Lq+Š<“ª·Œƒ_矷հyÂiK®Ù™ATN ¯ÃȲ?«2“RÑ;.¤˜wR4Æž`œ<Û7õü©9øD¢a~Õw[gýØ­£{a¶~nóǧDœÀ-2ƒ%‹5œ…‡¡EívÇ}[W~š[a£¼˜l×LÛ~ãRK˜¬Èi}Éɦçƒ[™,)‹SŽ×…¡!„ñC?õ÷óX•qÎüÃâåX="H˜²ÌÕ™'LIžH.®™WQdJå…¡Hª§Wó­E"|slYwÕðyÄÇFšÕ†”?Ýl¬ŒJé¡zôè*h¾$4mš®Åï’Þÿ2§SV2FÒ #ŽË9s;½C‚£ËØ€¥‚*N3/’ÙP1zÅøàªiè;‡:ü £¿¨§må&-2±Œ©úŒiÉ–„rÐ4¯$Ú„¥42ŒDØØ3åêRþkˆTg9!W»Ç)Y™— ÷ÔtÒ H²‚œvµo6çõ÷¡vnÓq$£?4sX.ßÙj½>±ü™á…!kN=nM0ÚÚaè7ǺÁ T¹)Î" 3Ï,T:CZÏ3Ôu?l2%ì6'ÖÎcȬÎX¹d ãòÔæÁ ›'ž¶ù ‘ðt@W.yêÀâéw>—rµZš¸sV‰5Zi¿ªz[}è<Ô A4hèw—ºXó+Löw¨)sÈí¢<5/D¨9ûD!CFål^ð×ål†é™3é×x‡š–Çxd:(Ïá¢rÈŽ=ИvçrŠL® Äêªë\Š s•GÕá,Z  5ëѲ”€Ó€±€Q¡Ì\Àå0?úÈ  r׉Ivý¦9(YžøÙmUdF‹æ¾³™ùîë-ñ®zFÓJñŧ¶&ã—sCŸHU…>‡®ñPÅ釶zÀ–ºÇ~p,è=@»¨¦ª½$)ìæ¼úH &0D;øÁ’÷ÞŒy“=íÏ3éjØ=!Ã-ä/Cóî<Ì“à— @¨2¾XmÍã ”4™¯Çxhêöªöa’ÜÒ³µ,'!–.âAÃ1¬ÈË5-$/± ›V›H5P<àBQ!Ù4‡f¿ÁÞ‘´ñI K:>»äÒléÑ ¬#øÚÎb3 MfÆÈÔE¾ì,…Ih¸wk: %‚cªüM[£k q,²ªs5tqId.eÄâm Y/Õ¤&m÷~¬€¢I•cp×Q\MçbïÂrM‰±?îî‘òm Õºô쎻½ 8¬ñ;lÒFkz‡L –§qKòUʵ#+¬§‚ÜrJì¶«î±Àʘ§7u\€áK_óK[» ³-i–T§ :¾ç€¤r~š~!šjÓ"T[6¨"Iü&S€þ`yBFBès®öÇÙS\e*ˆÐz:DìEƒ:J¿Œ€çªò‰°ÒäD7%• Gã&›5V:S`¾ÅÔuÿ¸ow´HÚ3ròýó+¡î+tÁ:<‡Á“ˆdøÎ$·ê(hh¶7t›6?‚,”%‹ÅÏb{ÜÒd *Î[i(»˜wÂ3#ÉQ¯2ùKÉúµ&¿å€f€ÃAÄŠ×ÖlPVS_㤥$.6¢8ŽëJÐ2XZûÄHô+Xpl–êè¼îìb½Óu?U®÷Uæqª¦ãˆ¿°©0gP—×õó)B &áxFVûÒNÏø¬ìŸ"²hkz@04úé_ã±ê¡¢ÈSÅ~’“o&X‰~cÔ>€+_4øXJ²}üŒÈÆòE™$»›iÒìwÐXH:{Ó×Ç9¤! @ 8Nyãɉ¦ó 7žœXNÄKO;óg©#aŸ®EÆCßÓÉkDhÞr¤»E‚§ >(ÿ!n&¬ #Š‚óòIô3&”aÔùMªÄÏ^²(«Kå’(Ý!jAø*{âh.ÃÓ+$ÒÒÿÚ6õçÎwœ`Õ…^^À(„—¤³›îàCsQj šp¤,ÅY[9B½ÉãBÌHR"6Ðb`¹×i±¸?˜4OŠ( mô‡KÁ™S ÞA|¢>DYÌ !Ö̸ÇöKtå`þV‚Éx,=Öô²,(„Z=éû ûíŒài‰±ò•¾»mܱ-ªÃÁö[xÉ…"³É\˜Yõw™R½"ˆ”%‘…¿“.„  ýÇoN`ý°,­Áº€'€óth_ýÃû÷ïSДD¿á.S¬ ?ý½vÊK:¶z5ÁJ6õêé¼n_¬óúߟ‡Õ6?J.W‰ÏØ Èòâm8qG¥jé2º>Œ—?TE[e—˜k­ìo¯–CÀÏù§yD‚_q@6 Å%8p_”»àÁìüñ?®þB‘¤f&VDÇmì\Eh†Ì¥Xz=K%‹ƒÊòœÚ_¶”e@'RA¥rH½à*ÈrÙM£Nqå †­éŒ®Ú¤8ÜØø`WAËp1ð"ª‰/ãad©x®:+)ŸÏ#o<ýx€¹ç™ãô܇P®q*Ó?ûë's¢@î ¨_ý<óOГzß{È–v\24Ô6.c™œ1SR¬páB•T ?üôó{,†’S»ˆ=¢š.-}ê’„ÇX9É£l;8ˆ¢œX|é©O1¥³Ç/Pׄ6ɲã¬f„³?¡xÖ_À×»hvCt|üÑÇÍj™¾¡å¦úƒ©K!í#]v#˺Œ˜9u~R‡#6ÜùšÆK?¬ VjŨ¦Óç1Š¥hN>¬å™Ñ9HW´ ø‹#h–âíþ7ß5K%}ꀾÜ~Àš¥5'Æ]µ‰ÏÍR|07½ö-uÐÛNˆÊ·èÖ 5ÏÙnhçù¢{c!?æláÇÏãÔÌ È<×ÁIÒ)ŒIC9•:è¦^ji¨—Šgp:„š2*%>&JÅÔ@Lœ´¶7©d$»o©êVç`{Â^%ÿíû‰ð–ÄV…ô ¨ç‚“—‡A‡?@ÝäkßT:ã~—zF~ Vw«Ã»¼VK²{R´ù¸¸Rg2î&^\º• ™\»Šó¦Û¥ ÙS='4äÂã#hÛ9™¯òâÄ3D(å|wA°°(Eõº`õ³„‚Ô¾wG  ô86©=%([ ½ò€”ÍDÚcåœ[p@æèJÂe0{ÌØB5Ôë™,K;?I\~½®ÍìÒ¿˜kzÔW»w¯èbyµÌNˆöÿ¯õÐüY“\€ê£v+‹eåi<*P¬6YF@¸ß:Æ-í©=•׋r„,¡Aòú%2+U̯S_P9& >Ó³‰O*>D#õŸÎŒ‘¯8.}©~é©ö²í\¼6]d\“Þ»PKVï#¤ IÖâMéV"£¢iãzߞ˅¸üfd៽‘÷bBù+Á(Ä+Rq(uÐPM P$é—ûü©ÎHõºútΘýÆ¡é*×(u‡«Ïóæà*ô4ôG<ù‰»âCã¹£ÑËÕÆv×,“)ÚfØ‹"™4ù Ï'g8 ˜½¦¨¤opnGþåîæŸ×öïÿtªvæendstream endobj 378 0 obj 3616 endobj 381 0 obj <> stream xœ¥[YoÜF¼oþz°6 Ñì“Ýû’E¼G8»^ÛX`¿PJØCNHŽeå×o5»»º9lÑ’<8àð¨®ã«¯ý~‘gä"7ÿ¹«Ãóߟÿ~AækþŸêpñÓ‡ç¯ÞÂ/t¦%•üâÃÍsû¹ ªÈˆ¼(˜Èüpxþâõ¾wy¼»Ï™-–=ÖUoõ $È ÐF‘sèGo ÈþÈV«Lfr´b(ßp°ŠÿÎsít-<\b˜g#G$ Ç¡ßÕCçÏÎxÉA–̤Zøøw¾açÉSæ,D2]äèèXaH-¾L?®õò0ä+Áú¼°P3 VþM[¯£¥!\C!Eó˜@Ò?öŒk×KAÌP{t1 °@ÖòÛÉ: šÎýÅdº1fíOSð^ïù!Ûr.¼nò“à\Ý4ô­ÃT©Ð3fCs µ¹òý¹w¯GÿJ ~*­ V@u$Ï—ö6 *Å,:ÙÛ4ÑtdWL‚)u6u9zbI° ˆ±çö¥U ¥A))!o°Ø7€/©oinöÇ$ÿ¢!h×ù:ä_¹¥•ÉeA0'õdÙÒ‘Z ®D9úïã’Äpïò¿VDlùQŠ=‡úÙ—虂ìÇ7ùgy„€£´âqÀ ‚±´øh±v> &4D¢pr ¼0Zõ_ÿŸq¸;èêäÄg<"?÷kêZ¶£U x¡½t]í Xz¾•[]ÖUµÓÆs j ;´7_G¯£)JÜ‘5E@IÉø9׈’¯ß9 Á•–±E8nxðêÍ?’j“vy e7¶sñd¡Á`&f½_n<ÊñÂ+òÞY¢^#¾<%¯ ŠÌ {Šœ#•ɛñ­}B$ùS¹Ú1ÿËŒ NTAáXQŸtº»õ÷KKÅ–ôT[>}8U6ÃCm.ƒw&p‰‚nyTe»Iøã¤r’ö˜ôetBzÛ=k½6!+pí%ºú²Y,tþY ²PE*›þÍÛw”Î?oxaüm׌ÓÐ\»£SèuƒŒ©©—Àr`· [Dûi:þåÕ«»»Ù‚P(¦=bfíqèn3`g_:š ©b’T'*Þÿ®Ák.µ< (æûˆ˜‚I)ê(ljw¿ „3Yy®£äv°–g@8t(S¬FA#@C×,0CPQ)×yJ8/ €d:¼w>Oò¨¹`’K=¹Œ°™ ÓËv!=:#‚io¬ÊÇr¡Ÿ(˃­@*ê¨r '©êô JöXÔp)dºá€– < 8‰Eà´Täâì‰5a|°Yåú~kŠXº”šÂØßjÎAl7C8«wðßúëÑ5ê^¦¼ëÚ“Kà–á$µ­€jWO™®¨”Ëš7EkÆþfºsÎŒ»zCS‡S×yd!ó±]¹½«é–‡L¶¿—±JÓçcb%MÁQP¹óæ¨ñ¸«Ûoe[=¡ÁêΠ:N²=±·ýgP1'ˆ'ß[‘Ê®ÃüÌ l£Y’:Ç[-bB.Â1™¶¿¾z×_öžÒAàÒdFÐm@^®C8)é]ã¢ø¡ö ˆø+ÛìâÜÖ Ú‘0ÁPŽ Tó‡óý¹÷EOêo‡ÒΖuIr–·ïN®CcÊÉWí*šKê? u59ÌÉ•ˆH/„|æPJÐÜ¿ëõ¾®>!q•JB cí)¥!{Î&SaxóO¼ï«¡9Î’@Eƒ”Î΀²œå(šëÍŽA/*áåjiy‡Ñ„b5¹ó­Žf4èM»¾Æ¤z?O௕K?44~ÉqÐUý0÷•±åÎtvNÑ$1"lB‡«/j§G01¶Ë—æ0Ó0¹eèM½ÿÙãˆB=7âlèµsÑM–"O¼‚l ÇâWÛ”ægæd2GÚþkR{Q˜”ß7Xªh3M½Ø2ZH]"Ǩ¾í=§[°ÊÍô ™B`t»8ó¡Úrpoˆ:ó·‰7ÄýfJ°ßœÎú½©”*‚Ö„3/™˜P×ÈühAsÆh:“Bq¾ã¾©|+Ê„IìýäÂ5æ.ƒŸI þËübËæÏ Õœ]ÈB3û›Ç®Bó-*³«í×–†O÷¥}þ mD½þ÷_}§4Ÿ#úí›Û½3Œ6×cË õØ·Xùq8YŽ'~SŽÎA2Â×ý± tC!^—¾Ã>G–\šÔSk-æ– ZÈs¯3ï¡éšÃiN®â†1½¡~" Û^µ»Fr úÛòú~ª‘ô3Ôc¨‚rм£Ü¼€¯1œ„Ī<Öà ~]UÛ4‰”ç›ÔÖg×xæö(;F *Ç™äcËÊlœšKDaèto%ú¼ýÛ?<ø„6鮯N‡º›|A)”ßÔ JKñ27+H˜‚µui=®4©â±a}’;øª‘b»àu߆NDñdÏŽÇalM)(@.b" FàÂXT%縒»Äsí¯úxADj¶‹ ßÔÆ©³£6›Ó!ãe2çq?‡'rúkxäÔ5•]ô™oÃh…Ãéþá-{ðU•L…h$Í|À¿ñºžîjKØfÆ¥¯°ÈEÓ2©Ì'”¨vIÆm-• zzÅrÈ¡’Æê)í®Õ®Ö&Ñî“S¿":8ßB' R« ÝŒÆS(KxËR&èºì[£ÉÁêuoymáä:YÈ•î" óÙÅŒò1 VMå‚TÇ÷Þ1¨‡Óµt5ñJ$‹‡;Ö‰—ÖnÂLÚýÔñ’í!sj{²[Z7Ël+¿z®ÙqU‚šï"ÉN>¢)”Ïf’úÈ*p4<áá”2iŠÉ–Ÿcã mV+¢¢<Á×§vj\V”ÒPY \Vðë`VIþZÛW¾[µ+‘˜Uº[ê@¾0ð[Ë´µMêuâZš[õe@œá¡£·‘­!؉¸·um©,ÌÊet#‡RGáLxÞí1ƒñ0°-pˆzæ|f3ƒáfÆÛ~@À‘øõ‡w4b}:ÉÙ=`T¡°µœÝï~xŒ¤\‚ÀÑK© twÙcÌ)­R´&±³‘²ÄèW2˜ÂÈÇæwD-a C}XéÐL8N¦ˆnN™Îã€6+ɶª¼Ò ýºÐ¾‘¸Æ–^…êÒ÷”£GøªcðáK-“¾‡ŠÑZÉLIÒÊ·¾+·¬¿“SQÒ ‡“ÿ‹C)äšÔFià+š“KÍ™ÒRqp%lŒYÊp‹œ>=DZSs8–•ßeŒZ-©1[q€…Ü…š¶o´hNl­EŸøZs-±$´ˆÆ°F±H?O¬àæx¼tôI„þÁbñÂ,,0\7SiHqœã-Ò9°…Tîê;Èßá.±,©™î†òþKªHòeM1õǵƒ|_^:R¥ˆÚ\àþS¤Zìzz¢:"n0êißïû÷éI*Õ¦{ËCb¸—\2x°÷ËÆ"äÌtŽJiR3rwß C¸®ÚíüêÁ¼ƒl¦cúµ2• ºjþF²›j0›¦7ÐîñGïzkTÍC#êsce7Ѭˆ 0wðUÕD3SsŸrsG9^Qy¤£Ïî{#þеo F$í§þËÚ¯uŠ^<`n}»s¾è{=Ü_Cÿ‹(\šÏ4ÕåÆÅ+VÜvc¿sÝ8xV +¾[#5"ûVë[2M"G«…ÏM}ªMýä굡Ÿ®œ:«È•‹®&æ^tð±ÏÎHEÆ9¶ ®­áW+o )§©¬öѸp«ÑP7þ¯‚–õËë2c LiÅÙÆûr0°]Õº¥ZSÀãi{qó»V%¶‚?J~Í%(ülxö2÷÷N&õ«W\|¬]z[—NÍ:Œ¿ž0,OÒ„q WAö—nA¶Í'wŠhFYÛ0^*ªïÚhÉý›mPÚ­*[Z°Ì ¿ªlç—@°…Ïdœw©êtnÛ §‡¿Ð±Tƃ$öœ&”« ²ÊrQF+퉉fçËKqÅ]6­oöšN¢Î·)xr}j»ÂYáQ¨šéé<ö›ï¤ÌÜú÷ÿynþû?¹“¾ëendstream endobj 382 0 obj 4210 endobj 386 0 obj <> stream xœµZKoÛHrô¯Ðm ¢Ù/’m Àn23˜,&³Þć=äBK”Å E*$Åÿ~«Ù]Õ¤Õ”•Ù]ø`€Mv×󫯪õuGl›?÷µ»úzõuÁ†gøoµ[¼½»ºþȘ\èH'<‘‹»Í•ý‚-x–F,Y¤BE,ì®^¾Ûæû¾h_Ýýy%d¤u*àÅ»õÕK™g°‡dIêžÝ¶e/³ˆkÎÜ»|Ÿß—UÙ—E÷Ú,+%:Mp¹©_<ìw*’I‚ y_6µý‚gpz–áB½6Y‰TÈññ«|ß™%Б/`35¨¸”Üè–.–æ?w:ðA !"É5îýGÑÍSGYŠ4í§èKj5»ÓF$Å8ÔåjÜ,e,Š'а/mÜ7«¦r"ƒÁF^YrGœk™EÉðöݶp[èŒ)·Å®éúÁD,ÊI¼-¶ÃSØC¡×º}Q –ã Œ!“'æL¢4Uø°-ª2¿¯† É_«¦®‹ª(“ˆ …ÇöͰD¡Ž1.ë\%1Úyë(Ž5¾^v6´S¼µÈàƒD=pÙ)‚_¦oaÀÌUqç åŠ^®¾¸ÄP±d­µ¼Hk”gÈnÑ,Jå—€³á•÷ÆÄ"ñðú,µ9 æÓ\àmar­¨×65Ue”?ý6ï±Feô@áiá‚ÔvI•ñóùaÀ—*ßlZ"ú@*Å ¡±‡S\‡ÄÏ>˜>óM.™(3ŸË±>1Ål¨DISLºPYÊʪ˜ïȦ*>oÓ5&˜L8Z©nzgg“ºEEL§èݼ¶a ¤$ɆH­Få{ëÔQÌxJúŽ¢R$Q©µ5s*×%6cž Øb±+¤ï7´2MÏ™e›Û9÷j…pÇÖƒLGذÄœ_c ¢£‚´.7.(tœáÃMÑ.yÁ‚yìúb×9v ¹N‘Õ>bºƒ4'ìIŒò•ìXººh©)Ó*_¶¥ðÝÃ+œ$ËxCYyz—?žîÑ_¥DÄ` Ú€÷‹cÎ)]2sž¬Œóu!Îˆæ„ ÓÔ·)ÐcqÆ­Í"øöI†TDóÿܬPizWiy†>(ìëL þK½*NbÓ´Î_1Wù[[õLy¦X¾/,X’KÔë[龇2£4ªPÖ«ê°.:‚»'ö‘=Š! ´aæ'ü°hmêÀ‘B‘2V—žÒÐ\Ÿø­´ÖRÇøÁ¦mv$aÛo6®<’çX}¿¼uÅ"I¨ÁÍW_ =^;,4±‰ß Rгïòö ¾+ã­øþí'†ú,qš©:s ÞY$b0†óŸÖŽÕ@9bÒGCgèÈ}Þ…ÊhþlîÝCÎ=€è6n”ˆ,Õ hKÏ÷Së²[:'$D4× J€èøLÐ1¡ºË=›–Ð2Bª_-P ­É .A&л.ú¼´2‚Æ8Exm]“K&\g¦Âx×›BuB8BµHvî⸀¡ùHëîPõ.NÒs0}{Ô˜º·¯?‚QÆ3%õR C¿ýhµy:ä0ÞUÊsömßïo®¯G;ƒÉÀ9xPTíÛú!þúù•[L)ž8)§~þddºœä^ªÔ¾’‘Œ€Fmk Ž! >¿|ûéçáhHG"_ ú#&ðÀÎc€?¨£¥ü‡vƒX¾ »sœL ¹!þÑ•)žT ML¸ï?íЈÔ… rs Â;ãú¥îqz—(*Ð!W0¼Xe£qÓ´}炌ÑœPŒ“lšÝ:e·oò _ÃèŒèœÄЬq Sµ³gÊN‹ñ€UU";èÄÇHÝZ?¤žRÀL«d~ç±ÄP~Qânß4Gh®ðýQÓLâg sºX¸ŸmYþ âžHd9Žâiåd³UAdÆé‰ÏÎù+Ï¢BÀŠNl´BÙ÷S‘¼#•ôÔvc*æ¸Ä’àÌõE忯`d•Òã`m ‚Wƒ…n< -k C;ÕJ(&1³ãT‚yNõ}µ54+‰Ô[ëCëÛoŽ·B²Œ£)R3(ϦԦY]‡¥VÑØ5”tá^æ°šì±3‘6˜[@r§D9Êê`=nŠz*ÏyæY ¹šì„Z×útצ]¿‘žL…°äÁÅl*½  :§?*¿ožÕuÈWý!š˜¡¥Ì ÒœVZR—˜TœLV¡òèHÄ8ጙ ÿ}Þº!-$9 -Fæ×CÑ>zVÅCj1ÂÁÏ/Cõ,}¾Sí¿Î@~ª©Qµ8p£RÊÑPÐuK¡ P©>™MèTÀ´@fe)A&Žï Sb9¦¯ìÄ_LJ›4.`O0wu¶OùYŸŽ‡F®Í«êµSAgbR§BOùéÿc¾>œµñøGåh…sC•ÑÜ0<#ëû}Óö P¦ùÙiÈ ÛŸk¹ý=hñéöK`·fr:ºYv1Œï^™T#vpê· ßlè2p±Ÿaú¿3Ý;ôw©žÆÛ¸ÆƒJšñI ÖY³gG§úÏ`Å8Q…é•ô(ô®¬Ë]ŽnHq—™@šÔ®º©—8FK=p}/»û§áêM.\­™ãTø~¯@…¯Ì4“Þ’£qh„8G`TÌ»gSâµçl¨Ç\{w A=¡ÆSV32ì)ßÝ¿œ©þ@2!K¹ü/îHï«bçÆ@­´†ÆqôžæBÔôðÂgq¶¼˜;J¥ýUä§a íÂ<Ž© +kšñx»ÚÛjÀr \Sh/ÊzÓ΃Núâ4Ò’FRó}1ÌQ_¨Ìë¦èN£:xDZkÖåf”àü2ë=‡1Ç­íP€¥AK5Âè£s|æËh‹9ÒÌ×¥Òv)€ˆ—“êL»šÆ—@YùÅ>PŠi ¸s“Ó"øò®ÈíÙpñ'}U›¹Ü›»Ç¹Ô¢ãÁ¹w©~H}™’û¼Ã¾º5 ŒÑöƒ26RÓ†Á˜ÁçtgVíÛÐFø,Šå“Vè¡Íwž´œtÏ]묋®ô¿U‘êYÈ“¸:p¥h[B×JŠúiU8žV޲‚)ñ…¿~)·.»¼ëÛÆVzÉ=ðõ¶0óºÀ̹¯¹õfçŒçBôôçbfRBwàƒê•~?ÜÆøD Çá_9 m~˜5™P¼¨Ð-“Y¸ëŒ!X±%°«K–]@&Æ¿FÿòjgsãM ŽÐøí…ãÍÿÁ°è,ÙEzï»R ‰2ÌÜpdÀF˜¢˜§*˜+”,8ù£æb_¬Êv0"̯ÛìþѧŒxV¤%ðcÕ!Ìáí›jÿf°ôćâo[÷[·S4gÓüÉþ†$u±7íxç›v÷fvsÇzÒ¾º‰ëжÓ4(n[" W;¸rá5Ahè”ï€àÝÌØ+~mµXò$J¬½Úüxã6N 5g¸` ‹dA·ò;¬tÛ›ns³ûþ&~õ“yÆ>_¿¹þ–·×ƒ•®þºZžì»jš/ÅzæL0±[™wîäà/o6¥Aƒ7ׇ®½®šU å}ñ½X]Û•îºÜlÍ«'8%Ò$â‹¥ÎP.Íù¿Ü-þueþþˆn€‘endstream endobj 387 0 obj 3187 endobj 390 0 obj <> stream xœµZmoÛÈÒoþúá ¢¹ï\£î‡¦w@í]êó¡-`à@K”Í E*¤'ÿ¾³ÜÝáR\QvÚ€ óe_fžyæ™Y~Z¤ Y¤æÇý]m/>]|Zþšÿ³Ú.þr{qyC_èDK*ùâvsaß š©„È…b"ÉàÆöâõ»Ç|·/Ú7·¿_0žh­•UåGkoÃ{ëW’èŒ tB³*ºÎ!–$*E¼ÿêÜÀø±Æk…1Ú¼G1“°UꃸÛ«ò•›©$SRGÆfç #ao¾Mé cÞ0ÍÎ`µw!KÁÜ/ꇞÐvAÀõã-™†Ë< …"_=NIqïó) ½ª O• ÷TÖ'0¶!PÛ[ç0I¨˜˜„âȰñ¬Xí¢8xs–‚Íñ %™F5M…)¨…Ϩٵ窹ʑºŒá‹í®ió¶÷2g ËŸ3S,N›j=ÄÙÄv7…)„RdÇæ°ßöo§ˆæ¹vŒhœíaÕÚ¡v«Îˆ–ß°˜qŒ–Cï=ÄGmPî;«RÝÅ_nÿúþ'ï*¥=Mu…e–žÉc‹NÓßx½¼ïÜÖ„ÂåvÖ§” ¡^ŽúèÅÁêJ‰© uʃ}þüë­'$Fų6°09‡˜y¬ž ‚V8È+N}„8Ñeâ #1ÑB•ÿ¿¹éž&-7OÆ™D2n‹UÓ®‘/Y–ÍñH^OG(Ú¶ñ äDÕ<ØdFSÐÊ€èØæ³:à›"Ò#¥5 eªËÎjABõ.YµE¾w» ÐÉ SDÝ4í6ßO…Á6ÿê(…ð†sT6‚=RΧ › ¡ Xêöçhv…¢½Ì$*çŽÎÑ~–ަ9“;‚Zh¢¯Ø°7ᨽ£1€ ÁžT=ÆpY†üÑ“$ †{ø’owUaÓ(LäŸüÚ0]ÒFÁÚ[bóÕyfÇœ–„ërãVPõ^0e•S0Â?È5Ñ|5ÍœôVX·Ö1u“!ÈOTÞ¡IqãKZ0\j·81d½û¢j-¥Ï“5°F@b}¤tŠxŸ ŠïËÓ ¨ù·ûã}fP¢ €ápÃuß©ÐPÏž+!Û¢æ-ëGND ¢þ„=½¡|K½8ü¸Žr~ˆ*×Å„pPr2g7¨íf0¬8ƒLŠ+îÊmYå­©–ãz ‘ªyAöëOïÿu&¸@¨@¬‰¨~¢™GÏÝkr÷ÆM‘R´ #ËÁàp”ï½Ì2;ªA Ð$£òè[ ôʽMŠ)Óô9Ê, ÇÜgh1iÔZVäOÚx Èí%œ;ðG`·Ùþ‘üðG\ÖùÖeti¢õC\±ÀžŽ8ÓyÅ’D‡YR­ÁÖ AlõÌÞ7%®~]‹{¸ùá!J;‰D²éÉ6`i²ù„wßùïá(UÂÕ¬ˆZ·=Ô2'ƒ!f«mÙõæ²"Ü-ÓùÞx¡¹5Ârg1Í€SüñÆnʸ9f,:;¯¬Á7ÒÎèà¤Ú­»oõÊ¿2Nº&*Õ9Æ]å^‚R£Ä;Áß.~r׃¢à=:Û(ëQçè™ ê)Òh‹é·¢£6Q½÷ÅMÐF‹ôƒN±Ø+'*MœbsîT'÷ù¦ É*€B=°¬·ßÊþ³"68\³,›AÄÊáßÖJÙXÚÚ{|4-»óªkÜrÅÐ1>tžýÊ™·jðø§™âQ@Å>ÌrRTD€4iÌ:óX>¿Xô·\kiê!zVõzáU½Gb7ÁÿÕË_¬y¯®Š.aˆ¨Ôƒc5—­L)­0ÕVS½|÷º*aʼ²õ'¬V±ÁO­C*Zv÷¶¤… Îñp!K’™––íñx]ŨgMg ?¢¨vít‡Ëèè +c-­Ç*âøè÷çGÿCþðß(ñgÝlZèŸÎ«èdcŽÀy>¶'ðÉÎsCÙGõXcC8OSÎÉ>óîéQŽ+<ƒ|é—.GíÝh§Q¢ºŠCÖ4Z4=J:ÑvÁXUüö/tšÚŽ7ª¬¢xØ:²ëOšöáŠv¬²oÜÙ/¤I̓CPÓ¤srj‰ iÏyM]øá†³eüN`ú)ȉ6Ži{S=ê•^Þ@€c)ޏL$,y ‹XCâN| A‘¨~iVÞ¸ÃÉÝÇ»‚gˆŸ­CO¦ð¼¶Ù7«¦÷1h¿áøùîõí»—ï?XfTÀeØûÌ‡ßØd”ºÏ-Ö¿ÃIpšïë½ÿàM îWí.Yi D¨ibØÿÝÉc62z" ³¸ªÆ uƒÌ¡E=ÁŽh»ºØ?91‘‡´]ðJGëý\‡1å+¯\D–½ßþ"3^ò“}.×¾†äD°Ó«²ÎpÛbøÉÞ®iƒz‚E¤„{fïe •ôÊaÅñ¼´©kSÕY·6 “¶qÐAˆ@o±Ú³îÑÉ×’)eþ I%ü"$à¢~(ëhcNņFäâýÆ›+õbƒÏY!fàmn> stream xœµ[MsÔH`oþ¾l Dвê[Å80ƒ{b/¾Èݲ[¸[j$5àùõ›¥ªÊ’ZÕ¢™ ŽÔ¥ÊÌ—/_f‰/çiBÎSóÏý]nϾœ}9'ý5ÿg¹=ÿ÷õÙÅ'Bø¹N´¤’Ÿ_ßÙ_sš©„ÈsÅD’ÁíÙÓ×ë|×ͳëÏgŒ'Z+^¯ÎžòÄ\ƒ58‘Ê]»lÊÊ?Lª)q7^ç»ü¶Ü”]Y´ÏÍmÁ©•ô·ëêÉýÞþN$\J#ïʺ²¿ ¼=Ëüje.•0ÅøðõË|ך[ŸàíLé„§ê|Ay³þ;óƒ~q’0–i·NQÝ—UÑ_÷—¾•›{¡ÖÔ]Ü5õ²hû·1š0ötëþׄ'’rïƒ'›"qKHŠ ¨û&ž¤:ó ”Û]ÝtyÕmÍM.¹÷rïXZ¥bö…˺ªŠ¥ñ _ƒ ¯lmôÔ/r[®ÊÆþ ߨ(‰„ŠTø\&™žó.à€ê$Ãܸ`š%"åç B!Dý½¦06÷¿‘æµ~±¢iê¦ß.‰R”M¶£n§íònï&JW¬ÊK½+X¢3æR[wjBˆ_úëô’µ†¤IªÒì4¯÷ÑæY"¹ÀùõýEQ;.ë¶»Z6å®s橤ó66Å—}Ñv>ù2"qGÛ-¼Äš.Á0‡—yOÍÔ0·Ö4’d°}ÿâÂf É¡0¦]í-¢¬ÕsŠ‹Aê—¥ ²º·ñgŠ€§M¸@À?÷ÄüXï§‚0Jm!ó`i•R‚[]êÑÔ{çÅf÷r EøŸžw¤(ì(¥ HO'a ‘þÔ̦‡¥à?ê½Ú®}I¨¥ÞI•ƒ4H#¿‘ÛbS;ËÒ[ßDZæ&!«ýSG V_ïU:üf·Š–. Îh4bDÊCÊœa ÊÊç@Š9ÞœNׯ//Þ]F$ ¤î÷z,ÎP’´Æ²XÙGÛ'ÀzÃ æˆ É3[–vyÛºBÉœò©eŠ£e7cÁ~óÌÖ,Ó¥x¡=ÉŒÊÚXi"ËÿIëØ¯A'Ú#—«”Ñê`Y“C“•"ÛKiœ‘à‘‚—Xê®®ß|üãÚú†ƒg¤þùn&º³Q3ëŒ*+xi"3ä&ôã¸èOû uõ Ü@Å0æÞLh||ñî·›g=O0¨Tùˆ¿ -ð'“s.:"³âÙI –QokÞDÜjÅ–s0ØÂFô1¸†þ”ºz(…@ † d\ÿ­¡s Ä|þ!*!¤Ð°ŒÉ&_ZgQh¿‚ÉÕ‡QÑG¹©ï½á”èø Òv†,2ì3ÿ¦â†g SÛõh) ©‘üqæCÑÉÈ`p”·ù g0Y6AáiÖ*ü'YÛÍW—\Ð ’‹æpÊpœ¢OlŽË6Zµ ¹XÿÜ»YB2ÔJmÙv®éŸÔEh"úo¢À;K73¨DfÅþ¯ils§2 TІÒcí&¯Ú»¢ñº^fþ®¥ì/#£ÁTt‡m¾µûc§Œ„ýMÓ&Ê~ˆ92û?͢⛜P]»&ÿ`4⌲_ê{h¬òéØ"Ö`îœch"2ôVÌÞª³ fÐÞâÜ©“´Ž†Ñ,€fÀÕ8#ÄΚzMÓP$•·ÿëòs¾ì7£ÍXÃ-òPÆÛSxÂ4'*ãŽgí©Ì¾-W+ vP4ÅPƺæ#£‚ˆúŽC96Ò¹/ºÎÙ?ÞôdÃ’bˆÔ°0Iqázßíö6ÊÐBËs4î»{šKœhÚ:B üˆó€öáÑO‹¤_Û s¤Lx?qž©wõÆu[:Œ ­u:àXN8?fŒ1Ü×ã®\º™h㛽Ÿn÷­ßǨNÅ3ß7í&eB"Ešv?ÀK~Ç=ÔWP3Ðx/(*j…[þí…C–4s’°¯=34æ©‹¹õnµëíÝ‹í÷—é³_úÈIw}õòâkÞ\ôeþb³³wý¯îJ£Õ^^ìÛæbSƒ/6åmñ½X^Ø;íE/ù~1ÙKÏ!–”›¼°#[7ØxCSm•/H1Š$òj·WõQ£æ(˳ƒuDŒIŒØeã“)”wÖyæºfüƒªÏ6žVã)b”¿»õq8*œœRQ`³Ì$¨<T7âŠÂOñÐ5uU.mA êïËuÞŠ!8ä¸*šÒõ›Z‘©!4}• r1=t´¿¸r°$©þáѹ «ÃÎÚè{,ÿ!Z`e(lÍÎÄ‹¨hÎ&,åÐwg¶k7£è3 µrQ­<ÑŠ#“´÷KûÑ"Ó™QÛ#9ñWôœ4ç%þéÁ¤ñ-ÛZ¬½›3˜v] awß,?dŒÊ‘²u4¦ì·/¦â,RD†Ó—ƒÈ2£Öp"°é…æ‘* B-HR?§±‡P8[—˵󔢘kùrYì†eEO6fj2oF­ Ÿ0£üQøâóߩ鼉ÛMÍI±7æê·ýS¦¥ã˜®_ö…åÿ‰æKô÷ÀÐ\‘ûbE™À>0°r˜‘a,ƒg}ÛåVŽ˜ù=}àz40§Ù{4›Þ­ƒÏ|ÝâØQGv¬,ß<½¢ûÇãͳ¶ mx¨j渰ÿ9ƒ ¤Ýäè^T[R£æý­°Ù¼ ÑÀòÐ<8²9á·ó!¯òûbë+ÁNÂ' »$ˆ)Ë7=Xl=1w(²O,¶!â øãTú1qEƒ¤x|÷Ê®ªHÐ W`d¿{¸Zp`¢æ(A²t|l°` èK ) Æpnä3Ì®ña7‘Ä߈ ΧbîœtÃ*ê05¢Š|ªé#Å/îÁW÷î}cöŠSÝ ^OrÀ 7Ïì§2,¡RQÍ\ÊÃiùÎ~mÑe‘²SÃ-^.@–a8d •ôh4D:‰Æ0}›¢Û7U±r^4-t.6¡±äµ )r6(e¦¢; T )p¶4-±’Cgrp5¬ä‘Ì+–M‹U¿Ê¿ï1/nÜ ÍŸš2þég)£}Äa…]´©\å]î´ôŽ"bAÂÕù£yÀx6bÕÆ7M~}ܦ² >>$ŽnÎ}"fPÀéÇ䑎+¯®tƒš‘|[XC;ÀfÌyûñW¯ä¤8mx0 *0ú¹+r’ ÿ•I‘,|íSØw¿¾þô~ñÆ• ®ÅÁð VN)’îÜ'LµŸ` Fo¯^ûTøÆ·æôâL¥‡“:P7 `cË×ï§KD!—¹kC@á )ÿÚ\5š8E³-«¼+ï֦ȱ}è?<AùügSð¹3]z‰kÕ;o ¸)t¼Q†s_8zÚ‡fL ŠYçN#+h»ùèã±'UÙ®‹Õs§U€p'”9pÙrS·‘1åÏØ?;Ò|åâ?š—Õnß9ºÌXŽ8'º—hâmóGQˆp†?å‹ò¾ªGǰÆc§,ÓÉá)¸ô‡HLe‰Æ¥ª»)ùûòj¤¼™ÆÊ+‹”×ÿ¬KäPÅ“ƒ)`f¿ØðbúÑå¤wêʺ£?þ…Ã;ÛˆÛ:IÈv‚â|ü}Ù !Žö@Uê0cøê«7 b«Üä·Î1£QK4] G!·~Aƒn®Ì²þ»©Áèá´™òôû[eŠˆkTV(‹³g£Ö/ˆ—¯Ïʽ}Õ•›i¾EOtNþ ìÈIb”ᆃƒŒ£ôŽ! Dkð5QS,‹Ò(EÆÐbø¡5ìTÌ-ÀA–2{œŒˆã# ŸÂø¾Ýƒç½D̰« Ä1pÝ“Hw‘“ÓUqç.ª°B¾ßÄ>n‹)Çí¾õ!ÕáCбþx[ƒþ#3õH{ÔîŠe™oÊ? G®ðV6îaó”þ²í»îa,ÔHÊ;g…ßÐæK?aÎK¥¥ýay‘È4ðkSüÉÌIöí¶„Ä¶£z*̓o¯Ï?3ÿþ °€+²endstream endobj 398 0 obj 3475 endobj 401 0 obj <> stream xœÕZmoܸ¢¸+àeÄwñ€|Hs)šCquSŠ~:È»²Ww»’"iãúßw(’CiMÉN›)üÁ%ñeæyfžîÇËŒÐËÌþùÿÛãÅÇ‹—t ÿ¶ÇË?Þ\¼ú@©¸4Ä(¦ÄåÍÝ…û‚^²\ª.5—$‡Ç‹ïÞî‹v(»?ÜüzÁ1Fsxñfwñ v æTi?vÝUux™fõÞmq[ª¡*û+ûXr¢ŒVáqSsrßI"” Š¡jj÷Ëaõ<ꤚpÍÅtùmÑööÑ«°ú䈮)á°Õ Däó3¨, [ý¹¾kºáTCyx·*‰Ê óǽ"e&Ã&ûæXŽ;äD˜ÌøÑÖÙbÜ g`N,÷P~óç-}3æDH º=4}˜;£<ìq؃TÅDÜ6u]n­ÁÆ-*B¹ Ïöå8 GÏò\­Móî¯?Žƒ†(%Ã>öÅx*‰Ž–º-ý¤àj#Îà2#@|0¸#‡LãÝèGJ ˜2Lé cpÞ°ÛcãÂÀK†…ãuÝxhˆL_ i3 ñpÜÞ-N©d«p½-÷…çÊ zÞ[v$S˜³¹óÖÖy´ögrw؃ç®ÌxŽÎé«~ðóÈx ç«ÑØŒ­¢.‡of4CxüæY§Œ V˜Ó|Ã)€:¡IW‹ªöV Ž‹¶i‘²y†0<ÕCuð.Ђ®î4HÆ@1<äl=<´]³âyî à>ExÜøõ ,æ48hW: 0&d$ö¶ôî5Ò—õΚƒ79zŽ #ã9h†ç@>sŠ|NZ¡‰Ž’e& áxò8°<Çè·k"0d¹$u–ˆ7Ü@äÑÞ`ËñdûÓ°kêTZ<˜bŸ ¸Ecíª.¢‹kØ NñçË¡Ù%V`±1^¸$¯ˆÖrê $ò²+‹] KÎbi&_KïºæèPN4›% äiÏ2CbX£œ/XŽ6õ, 'à}?kÙ++]ÆC îkEóo~ÉÐü/WB?óhšÏwÛ'oÑGqÿŽ(žgDL _7C ü€%."{ÃáÇA6áù õôð{¹‘«(9£‹˜À´˜ŒQäÙlùù"/ìø.@b (x8[ª†âöPö ެŽ%H /TF$7àN¨„&€°í“=ÀC²UI6Q¹R›@Ó-Ï¿‚t;WÕ·eà8Ìž£ìý9¢‡A*c‚ãëwAA£z[dŠp‹#á4DfŠ©pV7 ê!Æuƒp°„š+æ1Ý-`ƒ Á|y,Ü|`D£Í$1öăTª|âå¯(9Ÿ›n=9Üÿ·É@˜)9ss**ÍiܰÉî)?Ú‰>Œƒ 0f^ÿm!UÜãšß®+ìÉ·¡Ç%á[Áx‡tdVÙÒ`Ègèèùh—t¦ýL‚òØ9縩ûii=ÉýØàežaZŒ´çÿמ”²Ò¶»ûu@Zª3Ho¸É@’›gëàudÏ ó¢Aý¬ š©/ƒh– 02T•ön#_Ö´oÚ¶o¶c%0¿‹p}]â‹Ç%†fÛü»šŠðî®q¸U UBtÓÄü'gúyïlIfíÛú “šÇÌ …QY'‹e°ÕbÖ³ÊÒxyçŽ ëk$ëƒË9‹ýë'¬-›Ö L³†ØÅTiË—L"ˆVsc³€2‘¸(x*9ûêx: E EnïñJ±À¼Ñp9˜ÙàUAªýRjªßü¾!ÌûfÊy!Uè.G %Å`¼‹˜,5šæXýËÛ>·"¾+»a )Ô¼ð÷TL˜ ²S 6i;0(¡mÊ$ô$D‰%KÓ†Ð6—øÛ¸Ð#½Ï« ˜”Ïš?`ŽÁªºÛ·©¥mÜÑìo ±Þ ¤JËt«<ÇnéÉñæíõ«÷c~ãßð6s­lùzÒÊŠü0»#¸¯2 ½÷—¶Ù¬ø”:M·Ãœ$ ‚6e¡®DÙ¨¨W«À¥VÁUʵ`sM‘m+®•P—峫 |µo1£U]KâM Uw Ö{(×h" ›ãåìwØ»ˆ‰ÅCè1ÏõðÄ1è×ÞÿtóöÍõ/ï~ºùðÏ”]6<ãdÖ*}ñL3!cºkê£Ï VXìl| €±ù'ñ*t ­³sÔLûj»÷ÊE•¼ú|_ÌzH]tåÅÁ¤÷®R'—©íÔÇžÝsWá l-v».\øŒ·k/½ ©jЉÅÁ£U)”~¥ /‘òYèÅ“Ÿeö ¬ ,™>'ší—Õ˜žƒî` ÍÿåbºÀ+‹/Óÿ·ö—”ÿaÓIÉšÂp‹Ý]ˆÕœ©ç ±²ÖÓ;—09ùPe^»7Aÿ0.Ñ{` @á$ 6®à(ªaÿt’³¿QÏtø“j&Yå`û{þƒ•qÁè j±í À˜uUµÐîKôsú“sƬýf[ù ¬€zíw:ÞúŸI1$ÆvçP`?ZÏmq_&²Ûs¿Ëá¨Â—n)JÖ«À\û#ÐñKKwÍá.tb§é!„X¨Þ .%¤©/޾‚˜7XZÿã®ñ âHÀľã0+£ï<ÀÍLÆžL"{t~ŸŒ‰6aZj2dOûÁï<ï”Æòè\á]ªˆè꿗éu^ÍmóÚŠ-P×b2"YœçÍ4ænÂ3ûvH8´ßÃBŸJüéP>1œœÛ]ë¿I â¡} ߨ?ú{C³,}d9Þ¾ÆIûÝk÷¢€Riò" ×6ÍaWué ǧ3B<]ìÈ_`Äû×ÇfW^·ýUL=ß‚™Ú‚Ê·–,Lá…ð˜M¼Ù÷ʼ๫B†ØhIil¶÷øõ+ØÒ«¥Œ³±Kƒ¡E¡düìO£!ÂÓZø~lN˜)x6ÑûšTÖŠÊâ‡×ÈóÙ™\IIE-ä­‰È> stream xœÍZËrÛÊ­rvú îbW™“y?Rå…¯$ß(åו雫\ ‰pH€&ÀëøCò¿éÁ<#ˆRIi!{f0èÇéîÓ }ŸaDfØþøßËíÙ÷³ï3Ò®…_Ëíì—ÅÙ_® á3ƒŒ¤’Ï·gî 2£Z!"gŠ ¤ac{öü|íš|ÿbñíŒqdŒbpp±:{Α]ƒ;8‘ʯ}Üe8L5”øól—Ý›¢)òú¥Ý I£dØ®Êgw÷œ@\ʰ‘5EUº'¨†·k6Ê•]$ 1ÅxÿõËlWÛ-БÎ`ŸѪ8çÔê¦fsû›zd«cˆSîþ\å]+$E ¿úéý»í"GBá`…7•“ÚžÄAÛOMÖZ!ȇuX¿*o[M0RT¿Xí·­–NfŽõL!£0!­Ð3D5Í™F`.ûÀ¿ÝIë90‰”LÛ“àaL¸´.·»¯Ûª,''}K…°`A®7o_·ÆÔ`zŒù«7â(I¦D°É¡ÎÛ-4joßݪ F58Htë!a{•? 5ÖœG€»ˆ~œÚ»}u·Ï¶¯’ò+Šxðó.kÖÞ„‡6U+&FŒ`=¼¶Åö×I™ Eg¸ÓOûëòö.-ºaðïi‰4‡pˆA·ìEòATµšS$ Ñûl“ßBÎåæñ®ØV«|“ÖFÄÇ€¡"¦}¶]–‹tðOQÞNG !p³0OòAý³\zsÞã‚"(àl ƒ´a"Š·*–™:&‘4lMàœbù$yór5)®–ÑȹO˜ ÕíìߪÓótµGZ’ÇcæÿH§aÎì©=µXû¡lPNË‹Ûõ.u€F*Ñž/šŠ&5êˬôêQ£‚Ô7.ãd4Ã@Ï[k@¬fÈD:ë²¶êjVã4ü,)…Ì×< âÒ‚ë|³óòBy£Áð>%ýlÍ+9}(Ÿ C©5êXbpX«nš¬hõ‘ ,58‡Ú4y¿ôî}È‹/uÎb]Ô¡ðÈ)zZÄаáDˆˆ&¨»Ý¦p~p§#_©½ô*þ]¶o<‡1šˆcø*­ÅÐ7#”9£‚Úª¨›}ÑF€«è“ƒÍ¨­Uæ2ÔÃ9TC`>t+TÈ“ùÆŸ²»@Þ4Óö¤®cb„N`:/³W¾€'rL§Pd-Óv?R OùoÐìaåØ'P;LM„aú¥s¦@cîr3‡‡í^ïòeñ,¯=<5&|ÊN÷B?' -ÈšG”\"¥bP-«íÖopj’`€MQæG¤‚ܸBœá˜ÿh/DʨBõÏÐЈŸö лX ä_!¸yÈæÀˆ‰ivHÓ*GæGU‚ÁC”÷óÐcÍž´nÊ2ÉÇ}1ˆ I$± :Ç{™V²ã÷1ÞÚ¦ÌûT&¶1äA'ä\ÞŠIÇ›w˜èrr ®ç¢Ö)ô?²oNxÐfýÚw‹ŠtÜk@ ¹dEÌf7Õ¡M·ÂPÊITPÞºk0t,Á.YâÄØI‚ùf.£ÑQ£?Ü|Ë—_Ç$&Ä«U^6Æ}{;§BA·/Ï?\]Ô_^x»CÇÈïÙ½ëàˆå×"uIj Q ÿ¸B# £áb@¨>å2nR2ȶ*‚á ÖA—Û|Êø×@âí[Ü:€@CÆEØÙf?Ç‘UV/”Frh+yåê3\Á„ŠYÎû úH;§ )°P¼o™r•í¡7:ñŽð½»úÅSCÆcsþ¡Xù©Cq"s_¹š3 = hÐÏIã¢5ß 3zŠ•-¬n[ëÚa g“¼²Úµsö4Tõr!g+i´¸KâF0«§3œ:ºl¾ëMŸ kp^×µ’}¾z“Õ…7"䯸œ,c^‹9“€@²ž%³Ä:¼:kÚ# L☪*óÀ){fšØkÙUœ|Qìù$1ÝäÅϨ@v¬µ|–±°áô åØÝÄ1h«<1„Vœ{ºÓháiÔH‘#j4Nû¼9ì=j )ë˜*Î7ãz‘ÆxDZÑÆ»F˜uqùiqñáóÂóݵˆI˜äû}µ‚(3RÿeqÑÔ>Ó6Œ4.‹‹ËëkWH™Yv-J¢>Eûµ¯.·€î’¿¦ fSØÀ®Uøx}õ~qyýþõ»ËWk è'qDèÛ¬Î÷Ï[Ks;p ƧãÖ ÄV,e«A°wqùûÕùåÕ…¿QrÛð³Äó°eVÁš¯Ÿ?½ºÎ³ÕOböÚ·áZ¿¿?”¥©?GüF±.bW_ÿzyþáóûÅ+†áÿ#âZö›¦sÈp‡MӥĂTÉ;£¶"A;\S´¯Çž^€¯Õ¾´b©RCßHV9зMí{5Áè°õ3c  ªÕºrÜ^Skî·$ 5O"#‰vÓò•ËvÈ?m3²“¬s77µ)rñȺÔr%ÓïR–„nƛϋ27xq‹ÌQåm>à¨yº7+WE÷…CrïæS•¤cöÇSÓ”zœÜ¹£Ë›Ú—×dDàø­åh<˜î¾˜-ñ}ì$ZÅlsðe™ÚÙmmŸ8<Øé4•íê6À‡«Év¬-Z¾‚C"Ôlüíc€KH¶ËušB"»ó4H³®—}–oÂx„ÊÞzŒ )oj%ŸìÍMQ7/=‰¥òñueG´4°DŽŽÜõˆ\ÛÚ5lW¡¬Ywëîã@"¨³º>l½li"ÿ×>ìSÙž{SÇGùPa¡òô ÖŽ^žäÂrLR“¹ÅçrŽ ´ïrÓÍâ{íÖ‘K©¹”²÷º×¥oì’@PBh÷}5‘]N`„EÌý+Ûî6ù=<*’¶}§å9ž’«ØwôB#=>Ë=V3úäÔÝÉFÆöeWý°å8û#oI{2ïçàz M£“jÕ°oH¦GîƒfÊiðÒ¯÷¦ê)NlÃSýOjܲ)šÆOza]D×ßäeþ,L<¸Žää/ @~ï3=&‘glóf]­Âð®×±ŸbHBÀË/]>ZÑ~J±Ëîòeu(]‚;·L—ò^M ’öÅñ&8ÉŽõ°hàÖ//\@ASmbvx½©«Ñ Á c´ýS€îŽqjƒ .·„ŒÇbzIÒ¯G,`Ë©ï>÷ŒÜúBMïtHe½¶á´;Æí]á&Ø›h—7=ݶA±Ü9ú9·©Ñ²¹´âš m^.f¿ÙŸÿܩ͈endstream endobj 407 0 obj 2509 endobj 411 0 obj <> stream xœÍ[[oÛF^ôÑ¿BoM±Ñ˜sÈÃÆqÛ¬k«X£ÛEAË´ÍF"e‘Šœ?µ¿qÏ\5´HÙR¥´CræœoÎùÎe&ƒáA¢ÿ¸ßñôèáèa€Í˜ÿOoGGdzAŠRAŒnìx@”DX $åHÁƒéÑ«“ûlÖäóïF¿Q†ÒTRxqtsôŠ!=s0,¤;Ÿ¥#’ìœd³ìº˜M‘ׯõcN‘H¥ð«ò›»…ýŽ#&„5EUÚ/ˆ‚Õ•òÊ=ˆ%¢’²xùq6«õ£ã X=RqHeŠX"CÂS惢¼)ÆY“»÷áEXDªô nâ—+n&yפ„‚P^ÉÊ(€$•ân¬¬ÊáL‹U”wFo‚ǯºÉšEm€$qÁ½Þ£ûÂ(ADõ“ÍæÕõ$Ÿ:˜xÊüëã¬4K À\¦nðÚHŒ1R‚ù2=ÄN)õª}¶C2Õ&á)nr/ %àk?á3!A”âÆµSŒh´”¨¹ïƃ ìËf³ºÊ›.hy‚OÕJõ¦WƒUˆîE8»ÕcC–°Y>‚€©0O¾T g$, F²¨-.É$ÁAÞÂZNB©QºQÁ«i#Û«ï«ÅÄ‚–"ŒƒàÙ¤®ÌÛ 1ž†·:cŠ8{ hŠR¿zý¥wš"‹ðú¼îœÀ'*H¶ÌŠ&·nôt.*Á†'ƒoqÂyÛýÖE…=ûö›–ÝåãjQ¾`#+ ¾?YäÖ R) [Uu¯œÀnøOër:{Ö]³:¸«w™e>±K&\xÈßÏE4M‰ß@ëë`t Ù2ºÜjBñÊųél’ß-·DDÁ ‰@ZHxý?N.!¥ 戕Q”ˆ°7ÿ5b›JF@ ìçÐü6­Ê¢q¬dŸü3vºo­1½1h}«_õ+Î2¢îÛ°¡þÑÉ‚j] ²È–Ådâ\0 $æ\¨„ ¡Ö¼‚¶"ÓÄãSÜÞwn¸v\ÉeËtYœ&Ù|~[ͧ.¾qüÔõ:„Ї×mLr[‘*ê?¸^'ÒE³¾`Y5ŽÁéÉj眤˜ϳa—2üÌð2 Ìú°Èçf”pˆç,pGvtW;–JpB6¬ß @dˆ`°˜F~S[4æÖ˜Iè`ÞŽ…ˤ%qŠØêó“j Öjô–hLH7ÀzL/Ýê`:,ð÷g—t$ˆK¯ÓÛÊy2§Ò¿÷hÁcB¥zÇ1àAt%Lù?HGÌFÿ"2ÑqË6³vVÞúÍ!?ÀÂGkÜ#Q¢7H»ˆK?FaPEa¯ñm5™øˆ!‚”Kf Â’ùQë[:ÞphS 1‚»MŠºñ[IC.PÝ®§+37IpЫÎçŸ]‚`ú—sŸï$2$JÓ¬\Ü:Ãã$ š›Å<ŸÛKÁpÒ`úÓê&Ÿ¸J²²ô·¦JCb´,š{‡;f!øÞƒÔµX!xké&ˆ'ÌûÊB¦ d¾tVrÛ.wÈÆã¼®½é¹‰£-¦¼ô×Õ£ƒRfÚ²5ˆ`XÅQ#Ò+âÉŽÜ,›Õ¢vþ¦GÃÎÙ©F]l9ä@ƒ!)õÙ¨«‘°M×6ÍmKÁ†9ƒ¤4PÆÇ¼Y®B¥ ðÉ™4a÷ƒ³Ë$¼ë< "!ãúìs Œhs£îéhð”3Œ$™re¨ÿ©×y:ÒÐ~UÏÛ³£ã³Í|‘ÿ{€Ž?è¿ÞžŸÀÏÙ»ÁߎNÏö?—Ÿˆ(O„5ÜÛLÔS¯É®r “dÀLNmjµ3Ÿ­Ê”{ø·Îùbca a_EXXGûBK`íû}rQòu@„u`Çr]¼?ÁX¦Æ!ïc‰óÜ’+‰|&T}x•6Öµtµìiîc65®5R‡óØ÷}5Ÿ½¹ººúõ»>(€é¾ Œ¶`¸ôˆD8Y%F•cU %O£“sÇBË›9h¢IÚ‚¦KGNwßî>G†Œëß?m®0‘Ρ£©”Ü–_º·ñI¶ÑUÙλâ®h²‰ËÇxZ®nc8¡â#RùM:+ÇÈ+•Lµ­õ¾ifß/—†ÿ™Ë÷¢›â"Ñ WÓãn{¶PxÒ94„ðЧ£UB‰¦¡Ž:EBqéÝq9x7—ZÅ)øeº*ø—÷ù<ïž\·]BÒ9{«4éÊY)3—©ŸË%ß)…báÈ7å£ÝÛâôÐö¦tµ#C  yáÏå§²r¤šÈбX–.¢*ÔZ…I¤¡  2:õb¦Á²í90axâ}oد½çÖ]´ïåCIÒ¾xz—¹º.˜ˆ r`f…¨§7÷t’›yUcÛ ¥!MZF«âp½Þ:›fw®² (ˆ!‡ˆíÜó0¤ÓÿÑfοÙ@¾q¾wh¬ õ:¬Þ¾AOBµxqv¾Ö*,r˜§¡ÿî^äuŸ>q÷§ÏÆ…ºÏ+UêròÐÅx,‰›tvç×]Z¦`?€Xᮣ*›‡çÒÄCï,¬ƒdòˆˆæ¼îHs¡»%ÍÅ ä.ÚS 2YøHª ¶ï\ B€ƒ8¨i‡©¶¦&Ý,ÙÖá®~0C­£ˆ~³JÙŸRÝ>gŠF*"ÍMªnÙpCðh%Úþü œ*méÀ; Ðë ˜¦;—?­½ÃD[ûAYÏŽðw×>I„|rÒÕîB^ž™ˆ-!™âüifº!T·90&ô®00ó[wöNQºÊ.C?f­yÍ!ÑÇ®>2 ˆäèÎVŒœÙu„‰]þ]5^œT“ª·üöÀàPÚ2?ßi[¡{åû\–(®¶ „.»ËDÛº,‘‰MkÏ L¯*w ýåŠà$yíOÒ:Žýå öÛ>¦''áÿмv €ihæ_‘ü9ßÝ#}!Ghô»Øe½A&Ô©4ë¯å5;YzO-J¸Ü[¼Ó\Ý=C¢³Zq`ÔhÚÎÅétᎂJBãËiI}zÚ9'Õ|f™ŸRD’§í•j´†¢á°ññÅÍÃCcb> stream xœÅ\[oÛF^ôÑ¿BoM€h<÷á؇ÄÉn³h\7v·y0PÐ2³‘D…¤Ö›¿g®$eR¶¸b›q0¢†çúÛŒ¿Î0"3lþúŸ‹ÕÉד¯3b×ÂÅjöæêäô#!|¦‘–TòÙÕ݉û™ÑD!"gŠ ”À«“g÷é¦ÎÊ—Wœ0Ž´V ¼º=yÁ‘Yƒ=8‘ʯ]”ù:§˜£Ä²77ÿ!D „“™¢„™Ÿ ¥7ïONߘÕå6;9ýmFNN4ÿ¼¹8ƒïßÎþvòîýñ÷ Ñ„¶6ÂñÃ6ЯêS/¡x¦p‚µºý®­5RZ½nïÒE½-ƒÛÄRÊÿbá=Ș[›àâ6[ÑÅèŸ#Dx,Š6]ÿqFˆÒ†2 ã8óÂ,ID™ Ár +X^ªið›Úº„õ.í—ÎÓUfVçR!ÅÈlN(¼Õ~tý¢ÜüýÓ§O×/‡DÁÙŸ£"Î:b¸ÌœWRœ® Ë0E€9¯]YÉPФŒ–·ñ¢‘ˆaÝM‚W÷#KÍ(¢Gpd©®ä1:àÈ2ÁH8Á¿Ÿ¿MëÔ‹Ù÷OÆJîëzóÃééÃÃÃËïOx„Šòù-|-ŠÕé°GŸšJE›™wiõ ³Á0_Ðï{¹¤´ ùUVþÇÇ-y`rÁR‘1àh•’%»P‘è6s›´$†¬]YPÞ¢åµy,].ÖWDZA$”žCž†‚©•ïA $-^çÕ”P<¨ë×õ—uá!+¸zpqˆ#–ð „üάÍLá%ÕvcY”á)L‚¶çOáÄ â„äò/Ý+lDxC{«ñyˆÛ*úüˆ­öyx#¼â ŸÇyÞ!Nïx‹n<Þö¸}BÚ þtñöâã&.úéÄ‚·~*;Âoü”1>ÃOƒK·ý4øî¡~êD=uŒy×tñ×í7"ÉÖVPhM¨e›0iò"›¼ùàC§I!ŸJ6®Š«P~³Ú“"8Ž"`LÌ‘Œ†£ó¬~°öI1påË'DL­CÐh¥à—òô€-ô•7ç¤Iω²‹ó˜£š·ónÊ{ž…¨„@/Â+)¿¸YÄ¡‰EÆXÇlÆÍ‘1mx}¹‡ÊHSÉm[´)ýëɉ Ò ‚VÇKÆì6’ w·š4ì@îU6¦ëº,Öù€¥eøÎLrLELš˜)ƒI-¦Þ]\’WÁF›F,ÓaZ#Öᤥ‚ÿ~¿´‰ F˜‰$IT·Ù‰Vž.¼A#,:Z¨E(`Ÿ žæ$0WQÂÚÅ—]]¥‡jÞñý‰Ðˆ0µ[ïtÞAû*(˜n€ÁQñšcÙ!#«hXô&¶Ó8i)‚aL|?„ãØ$¹n¸‡¼£é²BµçCÌ‚P`ºo¹‚¤¶#ZïNûEAq„ˆ†€LpÌŽÕõW_¼‡#*¤k´ÿòáò0üºªžÙ½™š ‚ ÿvOBåZZæÅ¶ò^¬h€Ñvs«!ú0NM¿ÅEªÛ<||4Á#±¿=Õ`™šN›'Ú¦“‰Ç ±ë¯7›ªX|ñµtBcK9«‡­%xõ.=‘@Ù~¤ÚkÔ^ý©lÅmòê×\käš`W.—…Ø{xÙ—&÷™‡:!·åø.è¶<¿Î¾XÏ_Ë¢ü}cëE¿i¨>\õæ¡al#¶ÒÏ _&1N·Ü8ǼåSVŽFj[{ò }ªf7à€4Îô妀 6ÂË€%»NˆˆV×/Ÿ“æM­PƒpÏV(HhxÝtjOÜŒ5Ö¾~åP­‚óúúuž˜Õ¤c‹´¼íÅÊn9µ,LMÙÈÂU¹=Ç=×/.Šª¾\”ù¦öé… èŠõøÙOn°%¡’ôkUð¡ÿ’é¡ ã Ñ­µ¾ñÚ…¨ic¸ùõ*¤4:Ö?,nëb^eËlafÊÎ54RIw¶vzɲuÔdPñÅå+_æc©iÉ#•!Ú °§U\áµ6ÿñâŸÀò³tª#ÉçEºœ …2[æéÍ2{Fº:µÖMºÚh]û¦ìn¦¹'ð8la‚ÅɨSA7vU…Ÿy&Yò.h­l²°b!Œ¡°ÃáϱÂᨽúSΙ>4ÀAJºl¨¨2¯n™`²ïŒ#Ô[TÎ5ý§NeàxOG‰6^šXöt;5Ëâ–?ä Cœ0pŒ´Á+³8¬Ó` eUê¥ÿ>I¥$Ø8Dæ§2Þ©™µ/æm†—›§ÒÛ©‰²s ÝÑBÀ™}ùê²”}¬ŠvÔ^½ÎN„8ÎŽ=Î3sØ“¾gÖ¡öY…8%Í®Ø×¡ëxõļY¯nxkêMsʃÇÓg\`á⸩°böÉÁýËaD@M+ºÓPႚlt¶)ZÃuoÛÿêÇV‚«Øb&&ÜV¸R·‰§¢¿1¶›j„¨Ôd?÷dALƒ@õÿÌL£=#ÄÁÀŽmà<ÁÂKÔø¦U÷À˜­ ¦TtÝ#y4A—éjeŠ~³ì!Cû a*:þDÜŽaŽØê`ÔxUžõ £œ˜Lk“\ERŸÝlÜ1ЉɴÊ"•C¹ØŽå jÐò„"ÿça¦hy#¶:Øò ¸K’½yÆ9å¾å#…6Ù{~àœ=='æÊj¢y›³±¶:1¥ö¼ä1-J)~–½Ž lÐ^99¼sÞ—ñÙè`k5'aøþ¬XãÞôþß»LÅ`V|&ÄS¥ÀÔL›R Åtÿñœv–>5A_µn5d³í| YƒKØø™JÇbGlt°Åb‚„ë ¼-ÛUæZ.œ¡DÆN̬–.±´Ìðí¥ø”²A!Gc<?Cy©h34Ü}‰Ö8±„5vˆzúVœ=qz;gcNoG»c«½šˆ£ç³×A¦Ùä ÞB]d{½\úáe±ž]«»ÌÅȇÎû7WüsFHçdŒéà˜nÜ”…„“KRÅÃÔ½¹ T#·ÛEíFÂxx×:]e•ßDÓxJ(u æ!i4Ød“•æ6 ¥†š?aŸÂšÁH%I º¾Ïr7Eƒå&¡/³jcæ9–Œ‘Àun!Bdä;·Š°8b)ÜSÊ<Ùœ|5ë§á=äN„UÉܤLv.°¹$iÃJÜ8 ®¦ãp•¯²b[ûɬ¸¹­âÇ<‰Š/,n<_:‘am™­*nÑËÌåª|ýÙnj®MñØÎñ{.ÿr›îÕœR{Õ\Ëo´¤ÞgþIÖ1¿ÀJ~w¿éÛÊ$±*Žç¾[†!'M«ôÛã„w9€Gu‚~ ¯s¢qØ´Ü®½¡·ó¦N‰Z°ˆJ¾<¶jæV]ƒ7‹û`3,ÚLZy~v Ù( Þ0ø|_Tueg˜}ÜKb8b{ˆ¿ —ÞZã­»¢\¥u3 2^@ û ¸¬òb|YÛº ûÕLkÖBvh™†EÎâìú³óN0SÎyT§óË9Ç1Ù ¢õ}^yPÐñ^ÎÂ_$•f˜uš~ñ2 8¢w„1(øºÍë0`â$ÂI¦oò:Ô"F•^¸È]{4^Ï!õÁÙ f7$ÎnöŽç»NË{@ÔÍ}ÆûÔ5#MZAö¨µÁ%ÑæýÑ%m€"Þ`Xͺ™e›#,¾¥nh×t&qAr°ï~稆—ÇÓ”ë–5²oÃC°eŸtÆ1g Ð)Êl‘åþ DE™ö ä¶1ɰï7hŽ0ÑÂúl±¥{*Y+€ôE¡Ó¹²Éâ´±l¡‰fdßÎrœ„!â-ß| îÎe°ÍÛì΋²¢èÛe8@e Zƒ\{›¨ÌãœÖ=«íä(Lû,©èy¹üæ¥&›aeuùÚv]€Òâ±ÖsÓ{/Ð=OWˆÈha SF `<>ÜòQÍ¢åÄk*®ìP椯Mw 9ˆþ[±õåºÁ…¾ ¥j­ î,"kEc¼È›ìÅMõØAú‚EcBðõ's[yºÌQÙ\³Ž‘|'°s%I0)35ÉúØ—2ž».‹ºXáª"Q÷ Š*Q´a‹ƒÏY]Ô‰ðÈXYóÖ›ûÌ™bÊvÎÝn³ÇÞ'ÑÃBª¦DǦ–§Ðýæ 6¤IKÎá·&´²X-û‚XŸiÕþ¨]Âh<ÓmyP6QšZnío¿°þåe1åKÝ ËóÖ¡D§„â½èÔžžÙ_·²ùñWM‚,Á‰"`™~¸Ï}† áI\îCOÈ÷× „öZ{ó8¸õ±6‡{#G–ö¥†÷¼ò„+sÓ^ƒ/Ö/i4ß*üþQwmJÒº¹äͨ׉q÷Lcöµ5H ÀZ7\y»hŒ!,@]×R·%dÜIWL]=_šA”3s¿wéu3±›h©­E—?þ%4ú¦[0ÄÎÄb ±ó÷ÉÁ‰Sendstream endobj 417 0 obj 3583 endobj 420 0 obj <> stream xœ½YÛnÜF´oúŠ‚ElÀÓêûE€€Ýx$ Qœ ò²€Aq(‹Ñ 9"9vü÷[Íîj’Cz'›…$4›Ýu9uêõ´¢„­¨ÿ‰¿óýåÓåÓŠõkø+߯¾Ú\^½fL®qšk¹ÚÜ_†7ØŠ[C˜^¡ˆ…ûËg/²CW4Ï7¿^ Iœ36n¶—Ï$ñkp†dÚĵۦ¬p3#Üq¼ÌÙ]¹+»²h_øÇJíŒÆÇuuñöÞSDj²®¬«ð·p»µø ÚúEfˆ0BŽ¯Ï³Cë]½†ÛG.®…qDR³ZsI¤í_øP‡K9%FP<;¯«þlI˜PhÉ;¿`ŒaЦõÖõVS"¥pñÁEÓvÑ:çø‰ÅšX—NíŠp—#J(<¸=Ôõ®·Kjíhs´KsÉ>ÛØ®è àœ0#ÑÔ_ë»þuE8g¸ØÕýÉQLí]¸›«¥B;‹*øi‰2÷-›"ïvú¸pÀQòk|®=çÔaÀׄñt6AǨB#6ñˆµeƒe—ÞݵÐifWkÆ ýÓ}Ñ=ÔÛhŸPSÔOG0¾`W̱”¼)1© ŒÐ«Û×ÕÛ%äÁ%Î(tá®>VyK„)†—?‹cAâûð"À]ka{è2ÎøÐÕÄŸ Û¿ˆ¡ÔÆ ßn5„ÁÈþó<"¹¶m?}×¼.—â»Ãu[4ïBüEvüôzw¸EÿÃþé Z8·Ú¼‚ íöæù—à‹¤bì x¢Ç0´,ûÜoô7š´kBúè<».ï7ûz[ìn"P^dÉ›/!4‡¬{€? î\[3ß$þ¤2k0×÷å.bomBñ‰ãáñ͘s…ï¯c|¸ Ü~nzî–ÒóÕ€C”L›ô(‰Wr =¶í‹x.íÊvæá2ж.æ{c}B6”ˆU(®wýz.wÀ=fˆi²"y +$sÖSà8·ŸÄÚöÍP6=öš"ÛýcWçÙî¡nû¬ÿï‡×žÜ_3Dû9˜f|³?˜q—¸®k²ªÝ—-¦wíà$jÕø^þå”õõÿ1‚ø ’´ÑÿŸæzƒ{2XKJ@ø×¾é‹…@„8vÚÃg¬Eƒ>Ö€Æ{!}ÌÐÔ×ûg$÷¹ž t:(ɸCSwuäì5LâÞ#¨m¦8®Û("¼`bsicŒ:Q+³ž©/N‚<¯‡T:ê“áÛ t(÷Þ—»ÝLf-锲DZ!RPƒ‘É€FÂkêGT´œãÁ]ŸzžŽ»+îë&°"ÜÌvvCÛ2H!à²D—™_‚S"‰Ô]²“tWO7xÙò±`ù“ȹCä@{êÄï\BC‚£4”&FxcOR¿!UŠML{ºO(9ö6s€,“"ù3ðûL>ÍeR¬W.2”ÜŠ¦Œ$~›Àu±d ¥ûpw„R‡~~Þ0 “Öâú§d¿VŠðÓFÙ¯´>QÈk}“91ÆÅïVïƒËF&—=‰#lŠY`œ¸ŒJGœ+òi(GçŽrñéÄŒÈòî˜íâ Cø.Û=¶‘ Àgyê´`f´ò˜Â™Š$îÅ;•«µ¢~0ö!ïk|x}4ú*å]Á [„Oš¹~)¡5yùñ!Mw¯ê¼?•úvƒ/?‘˜A`±tU ô+\ @œ;«qmWì—'aNAg¯W}7õ[ÿRƒœ”\Š)5)¦;'PºFÒ4a4iEG‘®ïÐá|bè§më}†b¨nAÜý”7å¡ÇˆôòZÏ»ŽZÅíËW1Z$b9ß –\(w‚Щē?nc¾¾ç½¢žH8Ï3_öULjÔ,w±C•K–ªn­¹…V$ügc‰£ê›Žzl,«ßu¼iÞ¿éÊ}Q¬ÎF¨.Ã]0Sþû‡š¥BkÃü:ZÉÌÔì³ßÊýq+ÏØTy#û}Yëàû^HOÍ©*‚ò˜s—Ô|Ý<ÆJÓPC¹ G€dQÄKÍÍx«2Ï0(Z¨E VÑ„/í‚5ZªÕƒ^Ç|ŽÆ§¤òwQDLŠ2µh’Ø_ü˜¼ÛóZv$ë¦qÝR_8@— )sÚPFÀmEª#ã©l”¸! j‚ô)ã|\uÆV.‰]ÒðóIpúû¬dˆ¤¢Ãm‰MŒÕscÿ@×Ì‹b[l_Ä®)9ëÙwß|{ †%rìœ;ÄÙbCY2¡ìbHèɳ’"[ä’uøïÒ¿7ß}ÿõ?o–XC*¢’(š&–¡×ÁiÔÅÉ`:¾YÊü˜NAË…\ æ·~½Yýxéþ #;¯½endstream endobj 421 0 obj 2204 endobj 424 0 obj <> stream xœÝX[kG†>êWJiÒxn;ƒ!­Û‡ÔIJ–VѦ{óî*Nþ}Ï\µ’Ö²]\ E‚³sÎù¾sÝÛ)FdŠÍÏÿ/ËÉíävJì³ð·,§¿^OÎ>§iAŸ^¯'î 2¥J""¦’%HÁA9yq¹I›>k_^™0Ž´– ¯W“™gp'Búg‹6¯‚0ATSâ.Ó&½É‹¼Ï³nfކ„–"×ÕŸ·î½q!ÂAÚçuåÞ  ´+ª•yH$b’ñ¡úeÚtæ|¤S8§$±.Î95¾ÉéÜüSïÁÖ Î&*ºñÑjd%—ïìSµ½}g¥bLÓc¡Xxý.ï7V\#¢…öO¯—gW‹cé÷Yg•a¤$Òuû—‡0¢WFß:]fÎi€|ÀëL†8Mp*7™GN+’øKʺë-È)"ÃÕ˺,ëʪœ• Ô__.¼Õ‹œ4mÝ×˺輟œá˶Ë,_#ÉHxº®-PhàIp²oÓª[g-ùÙB¼c¨ùRߨë‰F8‘Áü¾¶ÏBƒdå!Iª%݇$~ZDÃ-i÷H‹$xš¶™ǘñ¯/=VŒëà0V¾|çadÐyšðyˆ#¬vŸ¬ãçãó° •uj`qïBüÌc¥›Œ`H’=8ý Ñ ?Ä.“Áþ¯•ná5FÜï×Ó?&æ÷7—®rendstream endobj 425 0 obj 1763 endobj 431 0 obj <> stream xœÝY[‹Ü6†<î¯èCˆµºËZ„†RMÓ}Ì‹3ã͸xlÇölØß#YG–ÇÞmS ¥Í> X·sùÎ÷)_v”°uáwºúrõeÇü7üÙŸv?Ü^]`Lî,±šk¹»½»šV°Ï azg„"9 œ®ž¿9ÝXö/n¿’XkL¼=\=—Ä}ƒ=$Ó&|{ßW Nf„[ÎÂÀ›¢+>Uu5VåðÒ +A´5‡ÛæÙçó´N©5cÕ6Ó žÃéyŽÍÁ}d†#dzü¾è7>òŒs¦¼‹™äÎ7³ËÜ/>0æÝ‚P–G7~ó' N¥èÂû7ïüWOûùŸ¥‰–¯# !¹Àå_«ñè§[¬¶8Ý;Á'}Q×eíƒ$‰°³U~.%ÆÆ¹m‚ 9Îìx0Ķ)÷.ŽST 'Iâ3§k™CTà×/x{7% bpׇvʇãÅ$t³³ÜJ-N¯ÜBqLå~²£ôy“œä6î>¶Áhf)~+B—8…ÌQF‚ŸªC5ENWs0y[Ô[þ R‹±é’`C¶…ŽˆìÚ~ŠdN”±bÃu§â!Ø •B>•!³¹– ]úT—³µê çû²8Ì{âéÃXŒgY®‹ÜõíÉ„ÃæRþ¬L0V±]Æ8Da•6 ¥`1ŸS)˨ÂͪúaœêO&9úw(a‡SÕ”!›‚ZÄtåñ“- •kühö~À4þXx7™"f.@Ÿí4·Š##Þþâ—@!ÏÇî‘v|†$#†EJBÑ€D¥/lWlÓöûmWöÀNÍg¿3%” Àð0Œ¥O‰ „SÍ—^eÂJ"Mš‘áÜ!à g(ß… ¢’*x$2’ǨoUm5NÞPà'´ûЖCô†á9M;%mW3†š5´`Áΰ>$Œs†&‡2|ÌyÌbÀ%Ô%$PºÖ"÷ $Aq"oú¯[ÕëªÑ <ô£KBƒõ %~ß/OÄ]Ì••}í«±üø"Œjwl;\a¹@sb k4ž eG×eBJ©y¬ìly(§Ôq.£÷Õ~ƒ+ªæÏ¸=ñ.ú£à|ÅàÔJ²ÿ,ω”ï @äñ»pš6R‰N3µŒäTŽçλÒn ŸÑÉ>*3îÀž¼s5n_We3ëí?>¯»þåzAÝ}yˆ,²ÒåŒDÀÙJ4”ý}ÙOHÈDÀ7óŠv¿©»Wu÷zšxl‡1к›ðÎyöýE€¦™ÞPe­çÔ˧ñ•ÉêÜ[ž6¯v»æé(&Ã̺yØð³i¿®ýŒXM£„ÀY|Œ¸É…@Ó`h&Öåk7úüf8¼߯?8N`仈‰®më Ðk¸ù‰ FnñÀÄ&n¦*íÆn!gf x:¥4\.qׇòþºîÆiß®€ìû üD¨0CXÝ»U`îª:à>3 :>ŧMï®Á‹k\¿îµàh0Ô"œýáÄÊÍ„  ©#½VŽÔ\Ææ¾ö¡ÄsËgílSI@«ÃLÒºücG"Fs=£ÆE}ˆjf¾b ¢èÌœ[–ÿ¥¶ ômßj'·º\Çn`VwcfuOö‰ŸhÊ@©Ëæi›n·Ý|Œð ×AeDô(aˆéŠÂCH±êÉ~t_4Áuh¨P‹Çþ!´GJæ)-„ÜC_¬hn¾!k\þI³ÃòbÒ>ÌI2iÏ“´Þ<¢¼Ðȹ$¹ û¿­¼‹}þ?Êû nМoÜ¿££*KX³P‹©»ýE7þoŠ(¶Û"zñŒÕW³ÌH'…»ÿWq~+û*h`\ÒåãΣ6±f6{÷çá:¿ËŒ3 ¢ù[Ê8Œ}Û|®=ß `"¦#ëî«az€°Mâ6‰v‹cX™™YÉû¢îÊ~ 1q WÜ™ƒ»^ÎpÁ©˜nYK纾…Fábªlt¦Â;=#îa*Ñ\”3PE/8Ò_&1Ôûé´ måIÿtZ[³uÎûã:ªá!¾å¸ØsÜN¡ Œ³ÖYzºŸãàm¤‡iGÁàßòj²èb7R·á•Àw|QŽ@W{¨ÁI8˜ŸÇ­ÏåºwØzEK‘´v~¢{äb u¿þTöý¹B/©¾(`Ïwj /L™0<–) `§6 ç„iŽž¿{ÿ!ô^ > stream xœíYIoäÆœ[ÿŠr˜1 –j_pbûc g”›.I©9f“’­%¿>¯X I‘jr ÐA@±–·|ï{KÝcDöØþùÿÙq÷u÷uOƵð/;îÿ~³»üDßd$•|s¿s'Èžj…ˆÜ+&†ÇÝûi;Ý÷7_vŒ#cƒ7ùî=Gv îàD*¿ö±+ë°™ j(ñ~LÛô®¬Ê¡,ú ûY0$’ásS÷prçâR†éP6µ;A5¼®uøPçv‘(Äãóç³´íí§ËOðúLÅ„)ƒ8Vû„rÄõxàæPø­laðʇŸê‡­ËEZˆ°­µïŽ2‚ÒD¿Ü·MSEkHf‚œOeUyé¡~±i‹Úß!u´hÐS"¥D°J_Œ¯†×aqpºŽ$å$îìÊt|‹2d” ëUYÁ~š=²CÚ¥8°ì‡2sf—):ù#Š£M§MûÑâÄ Á„ZÉ#p”g¦¤ÆQɬ©ë"³®¶ß¸D„‰pbhìZ F ë}B(xaþÀÊy`€`èòþÐn¹$•*Jú]å1K4¢4ziÄ·@˜á¸s Üx”l7aÊÃÁaxÙ|T#aý§>ÀIEÖf–"Š”z(QÄ ‹Ú.)Ä ‡ïÊ¡÷ž3XF‡ñ  £¨nÂ…’ÒøvW:­($Ò°w„GÊ`!Î"öМªqDˆ ‚žzÆAV@aþ4î¡2,§Ý PA°¿8aÇðà h\6C Ø|èšÑ^ C”± 'vMCŒªxK:8~†sÎØmÓ÷å]UŒxa ÂO…ýÿ¬ï›n8ÕéPT£õ„@Ç÷Ö‹³Qü¬lY;£lNý&)¸XáHBo Ñò™ÂräYÏTJĨ‹"/ò`0H ‹¨tfvÈn¸åv3u"¯t/“ ú}×cD²è_ú¡8z‘(–t!RÂ1C\ïvÀÔtÆ9ˆ‚Gãe«úæÂÓ£ʽ4§un9¦/Sð…7ó²ÏA3›{A?²¥#°¿ÀjòµÃ<$p$ax½óW*Ëxç‰üäMÑÇ›H¹nojJ£©ûSÛR½€ÄÃîo‰Å°øf,º š±½Bç †HÛ?î}àjÄXRýŒÜ’¥AφO–öÅ…ç.Q2í­§´ÅVÎç†M؇ԽO)äŒçÇ,Ša›Ñ¼É„}s?ÊÌeHî\³3VîR°)ð™ aï©îŠªL G3p|ˆÐËŒ©‹‡ò!$ =з…£Gár„Û÷£j*u<ñf¼5°Š&:À·ß±ùþ)¶@:³(’úXÖE˜æ§b]E—ƒ×âÑMCy,]M -QYAЍ³Ò½IrHøTÖ!›cõŠaæ¡©=ÿª‰B‹m戄baŰ´å’ÝûW¯T*¦¶©žç aÉ£Šá4VV ò ²qBÈò –÷€ó³Â“ 8.2AUµ«K–×ß¾¯Úîb} j¿^ˆªe…8>‹Mà¸YÉ~~,:‡€„hm:¼j¯ªöºjp«Âü†V³w¯ äv†Ä/¥ˆ>•iàå„kÈŠ Þòµé´½UÏ¿^õùµó$´Ev‡-óþ"/»7;Ï.n·ºÞ¸½|Në—õíÙ]W¤l¬wCŸ¹°Hˆë.÷46#¬M]á¾|'11B´ó¾ O¢‚¼´ˆß+÷ùús9uP@UþÀ®›Ö@­|Ÿ(†èxŠCåB$“(ÓGn@[,6ûásÖ•í-èÉ!……O¿Õ•gFËëÏ¡TR›MVM>³Ø€½FhÙÝo÷l¡²kò¢ºÞp„ü\Õ…H›( ¯s[ãÓpóÇ…ª`>•«Mí:‚Eêó|Û¿AÚÂö‰­|ÿOÚçHû”«Ã«¯lü]G„¾Ûy>ÿHàÝ•^OÔài°ÇHÏ x[+òhõÍzú?/SOFËñ¥‚¢’ÆþíT—ÞÒ¶žÓ±”u}’Kt«GlÖw›Ï€çµŠUðSW…§ƒ£„!°·fNSçxÆ,z[Q2¤ƒëê©-Ï6êAØñ£‰c»0rS ìY ˜ö•ã¬2u¦Öl2u›viU•h&cãê;ÑRæUçU;¦4óª}>þ™‚ýj;”õ„Z”¦Ë0¸pfúa“.”"$Mk/)t»AÿWP3€ZðøŠª¡Û‰Ã/ÏÊÞšG¾îЬy¨Ë¹~‡ ‚YÐo³ø?—~þí—ñÀDÆéÞ1íþðþãSÆÙjnníÝvvÉO’Em¶yâÚ©ØÁ˜oÙt$ä ‚ RBñsxª}é¬%[ÃãÆ7ý RQsМ3Ö—æÎGÏlˆQÖy™E_¶Ÿ›ƒëͶ¾-:m£³¡þ$zs?„üD㨧ø‘çWÙ4áß‚6±k¶%Ò¬~(‡Ð33Ð’³8ƒºŸMJ‚)¿m°Èg£ë~èÊlp›ÇŸB˜X„hšeM—ûÖ ¬¬7^õ¶³qÅ9çäMv:B]!-€ä4£ÙæÄŸF]£"Θ·&³ê ’C0WU51æâ<íÉ  ®À£z•6ÛõÙTåó4ÌëYiç)®•*ˆúS:¤"ÓÀàóuþñÂ{‘bþ %«endstream endobj 436 0 obj 2207 endobj 439 0 obj <> stream xœµZmÔÈ–ø¸¿b¤|8NÚiÜîw$$B.Ý%l>…y=Þƒgìµ=ìm~}ªßÊöLïA=vwWÕSO=Uæn•ºÊìŸðw¹»¸»¸[Q·ÿ*w«?]]<{K)_bd.ùêêæÂ¿AW¹V„Ê•b‚høawñôÕ¶èÆªÿñêããÄÅàÁ«ÍÅSNììÁ©TaíM_ïãÔä&§á‡WEW\×M=ÖÕpiŒH£dü¹Ý?¹=ø÷áRÆбn÷þ\ÃéZÇö»HaŠñùñeÑ ö§goáô™‰k¦ á™Z­sN¸v/ŒÛª¯Üæ9á”›¸¹_¤œÈœG†vçe„›,>Úy‹Ý‰,§‰èŸq[ŒáŠ"cñÞc_ùåÂÄñæµ[Ó$c&Gݦ4#JãÅön‰-¹kUß·ÎsÄ0.:œ(“‰øäÏ{ÜPǵb³©­‹™ƒG^€H}Û¬¯Üö9aÔÄû–Û¢/Ê~¸ŒÈѼÁc…R‘GÿôUÙÞîëÿT.\Ê=cº]Y3#À$¾ZÓ";€ó©!Yf¢†±n£\ªƱ©Ëz,Ðjn@$?–$J ù-±7c¿iÝ*™Ç÷­‡Ü%£0z–\’\dôüÝC D?:[ ëò¨äwJÏAµf²ŽæŸE?ßÄèrÿÐút˜+–é¥ÇNcµi«§§.ËstÙ"ÔøhÄ¥7í0¾+ûºssR&ã¯ÿñ7·‡!RŠxÜ{ÄñŸßÿ0`L6±Ž7HQ†)šæ2¤ƒÑ,z¨ÆÀ5@2à*)!Ó-Ÿ2Åw»áCÕ~|™b%ž‘LräŒ6D‡Ñ a|躾<Ê$‘*îz[í«ÞÁØY¤&iܨu!Yƒˆ±”7¥‹‡ À“~û"0•Ñ4B=| ©w’éC`€c¼ÕõC0“-êKNd†q­o¶]Êp*ă:c°ïGZ_ÝêÞ£ šd#l—¤û ¤0’dÌ E$Ÿe"'ßþØ^Ÿ¦ÀuävJãs‡1lH "ÇÁHÎÒ‹º| kÜÆ °¿Þo«}`9#µ<ºV¼…,é‚lY`ºA[–!œ)ù‘Ÿ„É9g)P^?†TQ€ž’ò‹žº (–4G¶J Œµ’qÿ„ jcØ ¥0•T#ÿEÎÞOù q¡d)©cO0Ké¡«Go¨Ijø¹cš&*]•Ç÷S£ØuM 6†âû©â¸iËîÚ[eãp.ÀŠ˜þçP¡X9b·€Àª!pó~¡l¾Ì@frÒ\–!“e¶£Úßá!Œ:‘/@dVß?}=”áÙ\bxíÕ«Õî@9Qµ»]ð+´*£SCÔǛ٦iÍ›aàÿ€¿¤µ”ÐØAµX”¥'ME’AT‚p~Ɇ |nåä‹]»©šÝpyFl¯ý« ¹=í¿«ª€¾Iû§ &:›Ñ égొk©D¨‰}ž„.o‚D’‡p50ÓqýÀ­õÎe1”]7¡Oã„NW¸÷|ž©ICÈ~O59yWß0û±yFXîù{Ô³¼HöÏ­´ò†6 õ$PÀ)“êħ@ÔìNñðsMß\aY½c 쳷Љ@tr*<,¸V ¬$—G†õ& ûfTÇ ÿ´]zÒÌ„¸×… ÓO¡IóyÇÁ+-H¨º¾â½€ïzWÜVÁ•#*núvB¥§)\*÷Î8+5THæê“€k( #“* ‰ Œõ®BÅc²90Õ>LŒ àÅÝWHáÈwÛúv©µØÐU^¼­™J&oÑêt}[y{Ó ‚§ YI×@~P’ Wï¸Àb­.vía?ÆJ@§ ^ŠwÕ®í¢xdH‰†â×0™Ñ¶`Ÿë¼¾¶™lZÿ²v(÷§Ú£°„ƒ…2GuB÷†XMìxv‚xªþ‡õ§ ƒ+Sÿ?<@.ì®™–KÒWDa »”x³±[ò‹4 Ó¬ ÜÃí02†áX:‰oºA:ÇfãÓÙ®ûSá=öÅ~¸©@ºnNW'Ó¥/Õùóô¹É\m'9†Ñœ¬ ­€Jµ ³oc7U ë4‚äÒÒ§ …î‹.¨b-MN],d¨o}K…#ÓÄüØ-L2µ=uÞ FsâEŽ*Áö¶/vSÚ£+fµ~;Æ Ù“3üöqŽšgŠ9AÙ¬ÄÂþ›CYE¾Ì°f—,³‡±;D‡éé ERP$ý¾ÞÄ&AS5áz Õb æ‘vì¤jÜïaìÔ§ÿŸkð :•gxâÕ#*x*±[±*)™|Òÿ6ùq\¦4bæÑáaé¿Sù¯RÀaÓÅSyzˆC„Ådû¾±fMr’qˆŸ£´aGéè]ídŒKP°kÆÝ»™cÀÅ‚ñfaŸÓ´!ûM5Ú¹aZ:Qh1„–GÚI$´Ó•÷ Ð’OõiÄo…ØËµûºôse`¶Èo¶Åà/ Í WèÇK¿)˜çüöë;?»ÐÕt™3Ö{ ãõÇ®Z×VYÀq×OU¤)6ÉÒ7}à9=ߎmÙ6)@ùˆ€jñ=Ç£Lé¼—2P÷g^A',¿£MnðŸ‹nXò2¸!nƒáý{5Þ‡”…ð¢|è?²†ûÊ%Dü§W𚙦hIúIÄMõUjÃõC°Is¬¥‡!Ö•%†ˆ†aÑóaünÊ%æq+ §Üž‚O+Š lSYÖ¸•s¡ ½È]s(#|Yvvw}˜ ²õs݆ïỷºÒ7–>³~¶®~ZÞ?MÒ%d¨²BߌÀ:²fT˜F~Þª‚*6MHŠîW’'<Õ~ôr×q¶~Ûb8ÝÙ5¨Ë˜¾Â`ÀÚyD œTƒrcl«ìâ¥ùÅZr:¡ØçI­!_àY¶ZƒÍýFÿвBᗨɉöCúûݳNaó÷owCilñ´‘ÆqFáÑì± Ë ®~±Óî¸OÙ~l^‚-ið×—I0Ý´o ~NÍÌ}H18<¶þIbñ~k<×gx`|èêÒ÷MÀ¨\Ï$‘ÿï!²”¢ v y, ¶€øf ?:ʦP‚3$Ö†²©«Ð©Ùâ4}x}ÿ´éúËÓšîî2R“:ššØ‘n[ß…aÓwŒþsÕûœYS­í4uê¦{Þt/šî¥pú®“ÿce“›O¨8V`Â>øújõÛ…ýó_;·´êendstream endobj 440 0 obj 2770 endobj 447 0 obj <> stream xœmRËnÛ0zÔW0‚Ø@´¹|)€. zË!5ôªe× ô eµßß%%¶Zð°ÂÌÎî ©++€³"œµûìš]X*Çž½ÔÙþÀ¹d%”ZhÉês¶(8Ö×Ì KDŸm_/ŸOÓ®þÈPBY¤ÆºÍ¶F3$×fÅÞ'7¤f¢|%^ß|w›Ýéöh… K£=_~ü\t ¤Ö‰hf7‹BXÚnm"†6€Ü”÷ë¿jÙH¤5Ú1GeÀ†åB‚´Q±‰C ÐÆ¤ ·Óôk`€œ¨wÃyœúh(¹´€R"Ë9 Z:ÿüW¦ÚȆ+&öùÖV‹1Yà½1A-i¹Ç®uÓÿÄÆû‰¯h çUܺoDÀ;_|Õí©«ü¥!ƒÝøf¾Ð Ú¦ìóghà¥ú“›äñþ5X“Þóìºõs£Q‰O¾ºÚ“…}ÒÿóÏ!)KÊ£Œ…b¢_kö- ç7,­¦endstream endobj 448 0 obj 385 endobj 451 0 obj <> stream xœ¥XÛnÛFòè¯܇¦…¹Ùû%@€¦AŠHÑ4ÕCš"hжØP¤LRuò!ýßÎ^I‰´ã ðƒåˆ;—3gÎðf…Yaûþ»³›³›qgñ_±[ý¸>{ò†ÅH -Vë«3ÿ²R)¹RX"ºZïÎ¿Øæû¡ì¾[ÿ}¦’ši0[oÎ dÏ(EZ›xöÛ~¨Ú¦ÆJ3äÍÆrŠ8ÕÑúyÞ ¦áìú°+›Á½áÉŽõJ!£0¸ .f+$À»L`Äù¿ÞJ¾ÒÈH Þ¡AFcÂ+wí¦¬ŸyCBø žJû0dàO°úÕZ9Ò„G~i®Ún—Û°–}Rkæßé¯sêÃU×î>´.iË…èQn‡i.T8¿­†­=%‰ñt—‘`¬Y8®Nádz]F lbñ¬·e°bS+ X]m÷K¯W¤J®<ª~(A”šäŠ+²A” *ÂÙ¦ì«ë¦tXaO)ã“¡u1B² N‘Û#…°b >m÷ÑÙ $‘'´SÉÒïŽþetòÕë7ÍõRˆ€-DLľ«š!„ȘŽEî÷m[ûØ´•0ü¸Ôƈè¦s‡#FXê±Oû²ðÍ`Q‰*S6ÁÑöÒýžÈ1îó¾÷Ù¤æ8lSRÛ³À£¼s–S6 P@!^ÿ¼tÑÓÑßö*8¡´ µf<Åë!Þ;Æ`ÑXAX_”Rã[¶y€å"ºøÏŽ!„°iÂ$R01‹Nñ…üÓÅž„« ®ÔÙ>A=‰¸Àa,‘Û_Yñ>v”"éðm—+FÂ}ÿ½sY#.ー(ÚC3TÍõUU;O3\&8pqÄk­^~Êwûº|êi÷jêÙ·'ŽeMV"&¢kÛ!8kLt6ûyn¸mû¡ÉwåÌ×ìõÜØáܘ3„%¥Èú¹1€j8ô1PaaJŒ‰pîeÔØVU.|é9ý›+©TÄI‘fÒÑÛùQµàDÞ|ž×§.‡ŒI¦üT”ûa~¾^æJ ؃‹2Ž‘çËçu؇Êîi“¦'˜¶#ÁÛfO$à½íC5ÓjŠÿˆÌ N9ÂÆÐû"R.™Ñï¼[ð±ƒ~í\+ÂûMsÅ“Œ­!Mäsé2$Â8¥Ç/‘.MbáÁ¤Û^wùΕËÖœF¶Yš– ã”di4ŒCnÓô¾‘³X¸DzDÛÝ@‘±pBãO®3fä ÷KÀÕdJº›rÈ«Ú×]ƒ×)¾ü²= ¡BJ>ómÂìy/N™ø%Ô«  êê!Œ,ª‰úbåô8ðQ©r›¶p2Ï%áCW  (¾¹¨ «€¹@”ÁIü‰Bù½hw»0NµžÎ¾WUã (c:&uÞÏ6súÈBNõøe4‰ïÝaJìÄW»}ÛÁu8dŽ1s\‚¹ ¶ù°˜S ®¿²ì¤JÁPË6* ¥’Ò¸ïbœü~˜º;„k Èã©çw ©œAèBNf…±sOÌŠG~T@ËÒŸ*êÅBDkKl{»-»E ÚAˆÓp»'6!Rž¼W.©¾4¼æ¬ûK,j”µ„*S³åE¹A~ÞƒÂfV{ñš#{•ˆ–1­Ý8anýšçdFôI×û¨Ä&£Ïß5 |"‰¥î삜L$Âá„ä‰ÈHMJåÅœ#;£‰®ÛT}qˆA› ,e*Ñ\ n-wf´ëAsG^ØÚá>-Öz^¬ÅB¥*-)Ü1ž£òºþ<çÞ; ÒÃ~P=÷%%̓0¹ÔIº"wÝÀ¬p‘Ѻóâ ˜ÆÐ9£Lv—ÅxNëh›Õfë©{a,¾¦DŠ—hTÙ‘"Œ}ôÿøäx¯p±Á¬biSY§ô0Ýzo» ^„³E2ûv˜„&2hXzG±ÃNp´–œgkÿÙcß_xûáÜãj™ºï<{—ó‹*ÚÊó;d®]åäDæþQ5Eõ‡Jx)ì$îޏúÔ*À§SÅ…K½Ï»|(ƒ€1& Ôi“êx»­†²ßçÞG¨¤ìxE€ôAùÃ|™¨¿¹/Ñzš©Ú{Aô25zX[ì­©WêC˜Ô(ŽM¶Tw#ƒ9•àïa(,c#wCUê¼ à7ð”Nu£Ï‹—Jq–hêOÿ2X qb®Ãœ¾o«°ÆXB!Ñ“¦ Y4Œ’tsh‡ˆ©'ê4­gjü„Ð̯!ÁRÕŠQã´R8c …×&:ÊìäiHîѶ´?›÷¼)Ü¢`û²Ÿ ®uÄió]µÍð¬¬+Ÿ ”2ÒðuW–I ìÉ–¹6¹Ì‡Ð…')·óê,UèB¦¬áËõê÷3û÷ºFRendstream endobj 452 0 obj 1835 endobj 457 0 obj <> stream xœµZmŽÛÈæçœBÿ¼$û»ÛÀñÚÞE'v&Ê8Gb–"e’³^¹F®±gL5»»HŠ-Yãd1?hQÝÕU¯^½*êó"MÈ"µþÿæpûùöó‚ôkáßæ°øq}{÷@_˜ÄH*ùbýtë¾AÌèV‰†·?¼ÝgÇ.oþ´þ×-,¢<¸ÞÞþ »{p¢üÒÇcWÔUÛ?ËCIx6«¶v‘¨„Æýâ›Æm •Ú¯ížyÕõ;Ü=P26qÅ4œ¯åbÅiÂuÿøzŸûGÙä6*1š¿gñ´?Æ6$&‘JÛM½k²Co»Lˆ¡ÁÌ›¦í¼ñÆP¿¸Ùç›_z3©½@0¿«û'!& ·yo# ¥”¡MvM'‚¨4ìٹ˞(“†Ó?=üåoë·o>ÙODšÈÔHÿI^9÷‘”‹°Å¯ESWÖƒö#ÎpYØè×~ ¶¶‘÷QiŠì±Ìý-¸V&X×ú­‰@‹·ùM•oû˜3žÐp»¿z›SëUò‹„ 9=ŽGT€—e,‚lQ‹¡°Ú?þáÓCµ‹’Á#J„|)Êr¯c™mÜE@053—KÊ "¡¨<âÁ-ijÔøƒMvÄ\@ØÂMšÞ”&Ú sŠj‡nï¼KdbRùÁù²w‘§às­ÃEç•2CƒUm—5.—àÖ"E¿wg²¢Ã(bબ¹)½§ˆx›`|Ƥø¤OUˆŠ–˜šcÂAp‚†“$ÓR'šM0ðÚšu_–œX¿ Ë¢ )bvÍ!}#NɎǼÚ:Lpˆ?— ǨpÜ¢,|5‚ÇP>Ž@’”Ëÿ$†äÕÕÐà J&T¤a½ 8­˜!‡Iÿ±.ÛÚ³‘PÓC¶ Üo$2fæÒ›˜!½ctQ”#NÉP­ÏG,B¬Z©`ã‹äHë¡Bx°ÙC!y´{g K¤ÊD¨Á"åÁæÇ¼¬½‹S"B9øòú ý¦"af±‚è‚À‹‘ûòèˆøPoóòÞ–´%›î¹ýóëÄ‘«UEá.I¿¶ ‹+[ƒ'®€4úgUy"MⲩënþàÞ?8pYo²r_» hQ°Zk³n¹ÍŸw÷ÄÙÅ ‹õvQ§+ßÖÕ&ëò*ó\/ ›’ëô`Ó×á\ôùÜEËêÞÞg¹¿Gk—‡Úq¢H0€îk=ðiB¥DÜöÖÏ×ñ>ÊM ¹‚ô—ÎÑy eów™‘[^p™‹79wvôö\Õ+Õ£¨?9õ'l659ÂdŒœ\¡·ÇÀ'#þT‚OË¿¼ÁŸí&«ª¡Ô§X[ã¬ÌŸ:¯ó5KÉ–hŠÝ¾[zBR+ã !´ÁâZf¡[ÀÞir=C/2žµ)‚¸žëñ˜DošÂ‡S$‚a7gMYxÃÀ†©«Ü•¸¡²ó1ŠQã ­@O@£ò¿ß~Ÿ¹€Sʹpý>_  Œ$kÝÝ×€\½Ô£©ú–LØmóË38tHXbµ°~ì²"XÚžR^pTÆA+w³{n²ào!l |qSbk;@#ª„m.y ·Y†ìóèdS€¥'1¾ŸÛ¼J¼44{a€\+‡>6ê«6wò?¥ÚèK§eåÜûg%Ê(X#Eó2è)2@¯8ë¦Ë|wOÀé,ð«ëà‘ªpÐS¾ñÝìœbcéäf¯A´˜n1Ó>Ð vö‘«óMåÝôQàP¨.Ž8³õC,V ã}õ8:<€Î ÏŸó*ÄÏö•˜|PëCœXc° ´ n*EQxnÌ,¿ïzb—VI ùÙ¦1÷1cª¥Ã—Ç¡°§ÐÄ"8žýЃƒÉ€pÌÄñ¢kHÐ-L'*ôJÿ‰Ò,¸Z˜±OÅîÞ»s:oŽcs¿7H€™#Ø—ÚÌf‘̲!<>¿ª©yÇê«/àÔ[Ü~š¼¼sÎ"â}çÌ)ú'ÍᩉŠ8¾Z‘ëíÀŸâÈiöÓ‡7å\"ÊŽ^ËB’à»Æ‘Wƒ÷ý‰î¶f–ëZ†µ¬ß½xˆVZèn@Œ£$ÚFZ¼)åiu¹+‹AbÒÙ5ués@jvÒçO÷Ý•õ£Kh …Û)o ½ÓKx˲1ûþaØ(¢Ë@K½QŒWñªüê}G±cZW~RA¬„Àýε®ë¤4B1®Í×ðkúüyu¢‚$>[Yu¦ÀE÷ǬÛWÙ!ÌïÌ)T/· Žöb–ƒ¾vûVëÐóMqãT³.!stB³c¾é¬a(e†³A–2ȼ‡‰½Gì"·»ÀƉw³¤XÎÖ~ú|ÒM¼ /=˜TóáåhÖpqxi ¸z2ï)|ÅSƒVá-:~ƒÁŠ!ŠÙ bÓg5Cê¶ÈKlû²¹¼JZ{ÌÒ³ ^*\šÅMIvµ{„iŽdÑ6?fM38‘¢òøÕ;K,Uíx¾]z‚4›º™êogc×Œë§ õS¯ö¡93Œ^8#6#ÏÇ2?7S1N•*‘DN¨u2ÚyµZ{‘r÷Ü6wý”á.ï6w˜¯z¬ø/&ߨîߣý‹ên›öŸ¼ŠDD®&DŸ„æ°ÉÖ% ÂYïÌ{¨‘­§5)Ä·8Ù²Â0•ÁKœa…Ñxûì[N¬ÆŒ 2v䬾^î ‹ê©nC> bûס's9n¹jÚÓ_½kïSTƒ¶Ç¦7Mžm½?ÃÂ9ª|†]î|½§^yW©¡1l]j#p|šêã?û¢Z\*Î'Ö™¶ôl`bïb]PTÂYª/€ú÷UR_jm= B£LúR¸9£+ aµª]¨´Í-þ‡Œðc¯X0Y$äÅf×¼§òŠWâá' œ³á-Wlòò%ÓJ)E‡`öÂiß×ÿZø7?”þršx3ùi_õc%8+?¡õÈ—Oer4Ou“Ù¿~|÷þÃ÷ §~ƒØùÓvæÜT®ÍKœDô:ôâ‹C;⪉Ø.ËϋĻÒì[Λh÷ýpm"Á;úKƒ6ï|ìב÷û¨ÎG>¥ØLŽnyjÛ Ê è¯ }ZqÈ¡º; …K 6«¾i” $¬mÑnžC²Y¥Bíù1Ã6‡ QzP …¿‡ˆÿð!2cr|0âÃ0ì·Îy4!… ‹eþã%cÝeZr mû<ÓöÉ÷ëÅßoíß[uö‰endstream endobj 458 0 obj 2652 endobj 461 0 obj <> stream xœ¥YÛŽÇô¸_ÁG ÛÓ÷î‘c'd#‰¼‚!9܃3CÍE²üùßTßjf–M®ÖÁ>,ÐlvWª:uªùiSº)Ü_ü¿oî>Ý}ÚP¿–þí›Í÷wß Tl,±Š)±¹?Þ…oÐ ·†ÀŠæ’ø ¹ûî¯åy¬ú×÷¿ÝÁ"¥šÃÆûÃÝw’¸58CP—þyë®ü^N,£ioÙÜ"ÕDX.ââ»> -S&®=LMÕŽþ„ï?0º4qË ÜoÔfËÆoûr_ù“a#ÛliX~—à+9‘*ÞSϹKà¥eòçÜwûj*œ(ˆ,T:`| ÷ ¢˜ ¸¿nG·Ì(áÜØ¸ü[·{ÝW”Éd‚ßiHÁ-3ó…‡iîã†p!‚ÎÓº}ð¤0hc‚Vcѽªï»>¢¬J{p¦|ð†sE¨å,ÙÒ»¾)]ô|T%#ÑÓÂÖÕÑ/2¢‹tH9Æè&SÜ Põ ´Âï—¶ÜRˆ¤€¸1ÿäK_cÕF?•å ıó§„ÓÂÜ Â0–ãäÏg/:ÁýêöJÂ8K® çj_¿ª<‚\-Uºn÷5ú'cëë g;/]Ò¢H o³Ù ÉÇ©LÆì»¦‰ Ä :Õm1ä1ìÎE@ZÄî¯YdeB-r§ÊÅ,ÜbÖ·xà4TÞþ¥>¢MÖÒоœ(T£Têi¸¡Z)1š.c»È2ï9”~ÁÄÓøR[$4v J¬ ºoH¤C½ÿñ§bõ*¬™˜ âk5&õ°ïëóJG08ɦÓÙÇ׈#ÿà-³[X³@–’¥LÃTžN>©8%Ì`ÄÅCû˜K)Su 8 ìI!.Ë’B«´©Í•‚$Üj$‹7é²KöËcÕÇ"zÒ;™"Zc<³§>`7½‘eS] Luh& I3êChÆ@d´Àjl§f›4tôƒ?”.óŸ«™GÅ·`Ël:­pKÁ|êC¿‡”TØ?íî!F&‹Žobƒ`Äñï‚D^˜ .°†i°_p:7ìU¿ “¸ ·ÎyrhÊ@„ÀxÅÌeÓM¡ës` ©ÙÊ-Z#oÚﺡ3ÈÂùà\g¯Û}_•CR@W12eÆ7C3D&̨5Ñ YàMÒž·P¦Ÿq¤ acòØ\á~«ˆmœR 2¨;⾡ TÔ—œD%)˜M>þŠÝ]jÇô ¬_œ´‰ÒE1\~ˆ1PHUlÏxô^êï§…"LÛ 4.¢UAýæÿféÄe¯Å¬ zãXŸª·YzPD«­±÷\š  +±/»û?Mù{þ~ÄvÔÍÔÄnh4æúJ1ij45ɵ¼ªÿ¸b>Õ ´]¶“—úP·ÏùP·Éh1T”+”üó>€Êð¢ L æú¯×3@'RˆòNXÓyÑÔd%³k—.æ#*œ‚²Šøc½=—ãc[6þ›ÆÅ e{P;kžÚ—ì¹üBÕ­`b-UEFªþ˽#e¯¯iØw‘.´X fÐ÷°÷—õ©ÜÅ„†²VþRã ¶¨KñDj]Q>0j™‚EýûBõ–Ëbî^ÅT âß~~MÊ&÷þž•KöjN,´iùÙC0¤Äz<ÈWí°k.ÓíPt¡±È´ö¹Î¿”m)D›‰œàÉ<¾½›kou{¨焚‚{µZðmJÚ…dÓÅzϾ7Œ–óí®>Ô}µw¶”§8J…“$4ë6|êK ðå[îñîú y,\ÓKFeÛïÚqË’™9ö±)Ádgõº+oEáZâJÃt»±ù(^9[¦TH ¯#ÔMg˜Âã‹û=œúù(_ Ûz¬ËSýÇ,…{ýË‹_4`°˜ßo¿í7W§„?u¼’¢»’5Ȧª" ©›ï{ËÀZRØ‹´a¨Cb€ý;®ËP*8¬‰Z|ý›T1p5j’ÐÅÁt:wña:Ÿ»>> stream xœíZMÜ6|œ_ÑÇ,àfÄoò` ‰`$°w={É"4ÝšyÕR[RÛèŸ?JÒˆ­¶g1Às€¢¨bÕ«WÅþ´ÉÝdÃ_ø¿;Ü|ºù´¡n,þÛ6?ÝÞ|ÿOJÅÆ«˜›ÛûÿÝpkŒh.‰‡›ïÞ>æÇ¾hÿvûñ)Õ&Þîo¾“dƒ5Õaèݱ/›ºss9±ŒÆ¹y½©&ÂrlýÒ2eÂØÃéPÔ½[ldxƒQéLÜ Îàcj³ešÀ#oƒ·¾&˜‹üÖÔeß´eýà>À‰âœ-MT–hÍhx°ufÃ:6 uçz÷z†h#ãð—¼ì‹zïžhæóøä˜c,#Ãuº WìšSÝû-´I¶œ2" ìåæÞ>a"Ì00Sqãâe&6¦–‚¤6¼N®! Bv•Z‹kؾàÓÅÑ6“rÞ¥• &)zçáòÖeFÀÃјf$J´´3yëüAáûBąˇºi g@ÄpãQÞc†Hª³€ºq 0"‹c]Ÿ÷'÷5×q[eçJ©d*àwO-çÑØÏÑ!”F‹ò²Êï*g*³$£øõû¶9¸QJ U1oúǸ+ÅpWGpH<¦ðèâ¿gé€K0Ùr !“·°a«Ö‹ˆñpßÖÜkw,vå«ÂGF“Q±¶‡CÑ?610\ê膾 YAmpêüÀ<,£+÷¸åPÖnº€u3»ðѰ d¦Î…eV¯Ä¼-òýÙMD*%æ¨+:®hóÁwyåã$Ãéõ8)9f§qZIHþò+c¥L"V—\ŠÄehMQºˆ §™¹˜/…·@¦Ì,™€#$çz˜!ŒšøþÇæ.€˜Õ&bñª.»ÇbO¦¥ÄÙ—©”ð‘œWIjË%,ɦQzáD™8`´–>Í]Ÿ—Ñ!Tj?‚&e4¤iÃ*Ú˜ÐKLXß7íÁáÚyvË×Ìò T,øòʯÇ-D ¾¸:I2Í1%=²ÃdC„ú©¹?¸ÏHð©‘ð¨w>†>æà¦x´n°mIªÍýr{Iß÷ùÃr°¬÷å.ïC51ZY\$ឦ™¼íËݩʫ!m%Uñ™3Â5Ê®¬Êþc(ÕZ!Ú—ÝPbö!’ (åÈd7Ç•³Ê£[°ØxG¾ÿå×°kÙÊW®ào%ù!wŸ²²â:[Í‚g²2ˆ%ƒ¬L–òd‚*P~îò:Ð7³:šzç­ )_ß7~S¼2„×Ý9¡#ÕAuŠtT ¢›F9ê—w?†ÆÁTž†·¡n€Ø„˜Néç·<¨ JÄÝ6‡C(XU†š=Ëo N²¦³>8Çq RÔ}Ø ÙŒ"»-úS[ñÃ$ OPô D-@ß%1ÿ£Ç¦|\íWU¨ìÙ¨~Þ7]ÿa×–ÇÈš"SqÉJôå±Ü=c53!ù㡚„19‡ƒáœ_!Þ¶86m¿tC*j)ìz7m §%‹^O¥à×3X«Qo¦ªÍ3+`•™6 ×ÅÚ0—?hH8‘ºŠ*7¿óßÐKÁ®ŒäÞËCxšCNYµæêþ’–Xsî+•vŒ¯qJŽY~¹Œ¢z8õË`$ËC’´|ášç@2”ERÛ&*jÊi­V^Ä ÝîZ ÃìXž¯ùŸT€œ&²™¬¾Zc—l-'~>-àzHÑ¡œ¹Xˆ UÈ ÎŠ˜>{˜ ŽʱZ>ÝåÇxÊZ#£² {ìÂ#dd¤îtŒ„2šžhbñH˱Ø÷yµ,ŸÃÖÀ8³èœ8 $¦k°VrµòPäþ€ït³`+ƒÍ“`€ÌXºªÇÑKz|¤bwÖ2€† (®ÔçhÜõ":,Ò1œ¿‘åG‚‘ןNE寮æH~¢X_&$WOÊ)RÏ$ö»úÿâÿÁB¼l¬Â’ÈÍ­27‚šh¬þ«ó‹B 2Dèö÷€D‹î~‡I¨†Nv}pìÆM†ÀM¶Ï‰‚¤º¡|Ö¼Žö•÷ÇÔR€@X(ºìU}C:OþmƒÄŽ©ù¹ÜÜp§;ÇÍ”/@?S¿”d9/ñ1Š`*䘻Ä!¹ŒåkM±À!.f°-ƒÔ”€øâTª¸ºªò¯W9ÇãjêÀây™yœWYkË`¡:¶AÞÉázbÂÜÛßÿSœß|ΫS‘мèH¬~ùû?ô ©2‰Æ%›t 85lê×HÎûZݱiªp»2kt§b|Ì»H¨°)½°q¡E5Ǧ…ÏÒ…€j*ç1JtÝ}.û³.¿îšŒÚl-!Õµ°T øB™±XWOtý 2Ëd¼‡v8—NÔ²ïSÏSò¢ëRm‚WmH£¶ˆ 7¨ ZGãé}­ƒÂÍÄåÂq¼‹hªmƒµEÒ—Âßj±¡©‡‡®äù¾ ]ű]Oø®Ï;è!øLP¼ñß P‚ú† ­Ä¢*vý¢§X·èiKaÖÎ)]?ÜvK~Nwó’N{Ѫ‰‚ëDúßöd-¤ëœ ¾¾eºþ[Ì­K¿…hêê>D9j¯¹ÁO6s|÷,‰ç¿‡bÙs8{*È7]dÃÄŸo7ÿ¸þþž yendstream endobj 466 0 obj 2381 endobj 469 0 obj <> stream xœíYKoÛF|Ô¯Ð1¢ ÷½‹"‡6hEº‰{*Š€¦ÖJdH*®ÿ}g¹’EKAê6@áƒñpwfö›oþ´L^&öÇÿζ‹O‹OKÜɯl»üñjñâ-Æl©‘D°åÕÍÂ}—T+I9Rð‡íâÙ«MZµ¦þîêÄK ŠWëÅ3ެ Î`XzѯU›—»¦Ó¥HtÓÝÚ ±DLSæ…?ÔP^v»ßš]Ûðâ-ÁCWTÁýJ,W„!¦:õ*+ÞïS¿/«¶yù‡ýL$¹ !¬¤Xb/üÓŠV…æËvg]mòî^’ "(÷ºmzÛYÎ ,ÐT&Ë/ŒsT •ààS»1‡êEÞ´AJY8¹¼éd ’J™õ¥“j”p5aÅàîoK[WžÐôž°!ßV…±±5ÝKpa4úú¾Ó'ˆ B‚‹f·Îw·þ)¥á—¯^û(IŽEÐnkPváÓq´ÛÒ;‰u"b$Y´¯‚<̈@˜èàM÷~+ª€³X©ÅÌ{9™ r¬K­ˆ 4Æè³IcÒ¼H¯ sèC¹+îýE˜DçÝë)ıì}Ì186ÑrÆÒÉàfie sÀ bE ÄÝÐä¼X’Ðr1¨J¤þÏ‚s² lÚwYWÝÍÌÆ[s’ACµ¢¬Ð>Ÿ iœðœÁ³aö©“AP™Ìbà¼d˜‰ñ('ü S½\Ùªå`üs÷¼ˆjMt°¼>DšI³MH8ŠÉiÏ»WOàÕÙ¬OiÖîÓ¿á Á “CÝ’LÌØÑ‡`Š8SQq"5Žbk*€>A;¨SÈp(wÁæ&D7eQ8|Â;ê ½k|ˆ%ƒÛ ÄDFx~(Þ»:ý°—à(XðÑ!‹âlæ÷SåžÙt£/­ \• {Z[a¸}ü!‡ÏZa>òbo&xf"ì“ùËëpFÍQ—÷ÜSà¦÷ÁM¢P"b»òÑLÆ\´ñ:7ýOv9K;ãà¢exúk§ˆ‘=[ïŒW”’Ïz[:ú%`C‚{E¾3Í÷^7áƒð g§ÜébDpdûI^Ï6&ûèÏ%Œ]}pŽåçµ#\è&%ÓCÂÍʺ6Yëóž@€^ZIÜ'L½u…2Ø9(‡^w#($­O..#‘ÏwG§ðæµ¹ ‘’¾úíwñpȽË!Fq qº»Ý§·Ý÷TYå€1GY÷£ç;ç7àÙwf ó僆dšìLð”ÌÀâÿ 3ÌT®/b;±o‡!”>d!Ž0DÐ0¢0ilÄFÍŸÏ6(ýÝléÓ9ÁîqjècúψŽ=õÝ&oMS¥™ä*£s½Hm¶¥Ó‘Ï>‡8ã8éFÊáIŒIσ˜é‘{Σtžóª¬ï„°Øc„Éû.ê&´Î} ;bÄú»fÜ¢zЇ†ƒ?”×ÝÐ%‘F/BGµ5‚Žˆ$;ÖbHD‚cOÂ$ JÒƒ]ÁÓðÈÔ8øe-† g~;òU[Œ¹„ŸÌOg†F„ôôÎUBç0ÕÎÉÛó©>>¤’At&Û§l“Ö0š˜º³‹:8‘T†y"Ö³ !l",E¸™P†…ÑDÒ{ÂäF®,HÏÜKLG¹6ks±sf@@"&N¾ó± øáz`|ÆÚ¸¨Á›ö<šî‹v2ýíZ„ð~TßT(+w7S$À›2ªe kLnrG¹rçY¹ÝšÝÚïZ¼¨ŒQ¯ý˜ñAxC%°+">6SúÜ@càS6!ãÝ ö.èßïMÿø˜§:Å>î¢1uUiå²RÐy'@ƒZ–•Unš—o<€4‰ÅäÒ6÷ž<4‹º7ޏ&–‹Œ<žEš÷®ò­¾¨’¹µˆO- 8;ÙŒ–ë}å×BÐö °ûW§ÙÂ{4îsgH@?Æ£¹rÑíb„]â.f¿õ *˜Õg5?—Àj{„Ë£uÄ"Ö3Û뻼( ¬ÜšÐ’ª~=³où§)=,ˆýD÷“TMð瀴·iíÏ^6ÝæŽ]€¡îZO|ï.² ¡ýÆ®ªÊŠŸ!Ö1*›!Ãí×10ÁÈlÛÚñŽÂè[$‡éÇ‘ÒlʺýïÀů.1S<èÞ '#BÆAû+!zq"‚¨:AÖ!H"HÓ  ·™A÷´3yQ“nã(÷âçCŠ!õù4H¿ÕÀ0[…³§§¢¬Œ{/0Úÿ‹ï)ü~‡@ýâJF«Ï;žQõ{Ú­YçÎpF°Ñ“ï|wÐaýôéÊC\*6ú÷Ë1 ãVÌT°è¦.·žÑŽpqWBÙç‰Tã+íà$h¿Ì©Ç=ôuî8ô`ì"‚w•c%’îßà˰ÕüéjùÛÂþü =?äendstream endobj 470 0 obj 1863 endobj 473 0 obj <> stream xœ­VKsÓ0¾çWøØ"´zëÀ¡0ܘRJ¸õâ&Nc&v\Û–_ÏZ²»nh <³Zí~ûíK÷ %ÐîëÿËbv?»OÀÉÂoY$³w×"±Ä*¦D²XÏü H¸5%šKbð ˜}ܤU›Õç‹3hŽŠ‹ÕìL’N†6è^ô¥jó]Ù8]N,ƒ ›–«NšËE/¼¨½i™2½ìn_deë,¼»f0„8çý•Ì™ Â8õ¼ÜW•¨Ê’9øƒoÙ6[¶œ)b¤ ‹l•§A,LÀ·®w…“1 ‚r´Íб¬çeµ÷¦1–íÛ¼tŒÌAp") NÖAêζH@³L«lˆTãÁ~o²žk‚“ÏÃB*­ìvuŽ¥ÕΟA7 äÈßj_mÝUä é…þꃻ€Ö¨¢&’u±ÍSG9sÀ#);O¬ ¤í…à 9QbdX[¢9W#$Ùênœ ö±®0M8S½¸ÉOiº9xé*Ž‹3/—›¬¹9w@˜IÌA BÅ8O΃&Ts\Ü¥[ç“-ôiøH°€¿Gdˆ !q,x®^%†òqLmûš9èw6(?-¼ˆÔ³h–¢¢-Òrßsuj½¼ª§ö”–6ð:ËV3è4ÎûûËÿž5徸íç)–¡³.½{ªˆPlè~·o·;g‡®ã¼ùåÌ)’i2uåçàç4äÍ„¹…dÜÄD9]Ü–ÆØù–’j3ö‡^¸‰—Û:}ŒE‡ Õ›ÔÆÙ­÷ãø•Ê> p2Æß.–#Süßk;Fî¦3±qjþœŠ²:ö%Ôjýbé¼Ö.†&93“ÃÕœë!äjWcèy{ò&º\ÀŠåZ[Dš¦íh5‡}¡°ÕƒM¿.Pb\«½áj6×íaÖ½,TGWu^¶atíÒ‡Pö³{.€sÔ)beÇ\˜}å] ƒI*£|å 3Ø„6fo=-¢v“õAh€K”40lnS#îòâÀ°ò¤¦lÜöƒ­˜ÆÈEŒñY8o¥bÏE ÜâZE‰µU6UZgåÒU8EÜžÕ5Í)›àE[6ÐÓ>™<‡95ÝK5™+ëÞÁ¨,X§ùi‘|uß\ÁÆendstream endobj 474 0 obj 875 endobj 477 0 obj <> stream xœÝZ[ÛÆöq…^ 8¨5žû¥ˆ8® ¸(âÔÞ¾¸. Y¢¼4(J&©lâ ÿ=g®$¥µÞu¢ðóÙsýÎwÎì§Fd†í¿ðs¹¹ütùiFÜZü±Ü̾¿º|ôŠ>3ÈH*ùìj}é¿ 3f4‚ÅÒð‹Í僧׋]W4ß\}¼„EBƒW«ËÙ58ƒ–^îºr[·n/C†’¸wQ¯ì"QˆÆÃâ“Æ •:¬}ØoŠºs'€Œt_P"œˆsÎ(\&gsªüÊË P¸Syâ.£i%[•õ»È1ÒZ°úïÖ+ÆÂL+ñè%C+Í E\+ "$Ýî«ë"hf4áˆõ¶ª¶n¬iLX½ 2€`Ôð¸Ú^û I¡ÒÖ6¬qª£\~ŸAšRÕºIL·tþ8ƒã¶ÅÊ›_‚ED«â§rYäâ Àþ 8æ>zQŸL©qB^4mw„Œ…‡FXÅŸ›]åÖ7›O7ñÌd­Š‹º ¡¨f·Hi D¸‡z2> DÞ¾FbÄ·_ºF#,LÔ»Ú5!è¹JA?súv.ÐçJÇMYUÁšZÅÍË$Û hi¦ÜrqÎFBÒ!ô.·›M`Gºqð‰üªé|¨>TlFRšæJä{¯±¡÷íö>¸ö(I ]‡ÏGÌ"kŽí¾ Gœ/ÑýЧ˜ ÁHz&åøƒØƒÌ±ó˜õºÜ”Õ¢©|~K$Ž–}˜·=ð“ˆFWëÏß8Lx,Η©Aõù8Œ !åd…ýqÛv¯—M¹ëÿãX¦sF!4&|T©xô—ãà ¨¾Bhؘ@7nˆ œ)ðT¬dcµÙ.‹¶õôÆ&NŠ.ê ËÌZ¿)Ú}Õ:|lc:€…{šXœ0¬«§ŒM Œà·/0 3($ü9[¥N)Gsæn°†F‚ 3õuÖÐÓ‰}ÔaM‘À’ Û9>0Óa½¨Ë®\TåçD æ¶9‡4ŒL¥nëuÑíwŽkQ$hªÜO·uç»0`תµ*_Å71a\ƾ R„Ê(@Žú7‹ˆL'ŒÜZÖQÉ^4{îCàS  ŒD Vû&¶vˆÀ3¦]â(ö£Â–Ûäí®Ø9Q\‹(S(Ûå>å”!Ú7S‘ÁH†ãöçe}M¸Žåå®è;È1†“;ÿ^t‹²jKP:i–C…¥õ—÷l–:õó7׋Ηe£‘]$B}"qÓw&­w!‚F•VÛ@‹Ô²äÐõ¶ ¶ÄTL’ƒ3ÅŒ@»” (>2u%Dtj’]á׈[þÜ[@¤(eC(ŽBQQ ϼ™meŒ–Îë¨3?l.Få,g›¢^¼¯|Ø„d©v†$¤ˆË”Xݵ?°Î¤ê<¶“É:}ÆH…ûŽs”@>ùaÔˆE涪 ¼f Ô²©•cÓ;À‘ -xRÓ”›¹þ8ËlF•†Ùâ­ BF¤‘Hµ/bþi“ênVÞ12Ëèœih©,öpâe…ÉM>Y÷Y-ð÷ËÖùª=3Ϙ¿ Æ.²N>€÷ö’A rž ƒ«Ü ™sBÝ\—Ëë`.ÍSÓ”•Õ_€kÀA•šš½P=hñœ¹Q :îh)PE’êpZ#ìˆ-EÑ—µÙÑÊ/‘|á4ÀõÖûêØ ¹<ß6«†Ü¤IF.äÛÂçÄ+Ooã~¶0†Ö²^o›M?ñò†éà½Ø1ª8†<á“3öU±W¨^Å€[u#¥Á¨b'!¥Þ†ÃcôætÒýÔÄK·zÀ7‚¥+]Ê;ûÈŠ4òù¸}Ÿì’„ΠÀs_-™1é‘='æÉ¯¿Ù_džŒ1A˜B —éÕqPÃ_ÇŒ¹çekÙÊŽaÀPwÅÁórî¥îì?|ìŽ5Ú>›‹.þ…Ëh|¼lªuŒ_Õ§~]Ü4‹WùàÏh(Ã@/€¶Ø¿ð\‚3»óÙÕì_—ößïÌendstream endobj 478 0 obj 2326 endobj 482 0 obj <> stream xœ•VÉnÜF|œ¯à)O«÷†Žäb$¶0@.2 šêép‘œØùûT/ÕZBæ0@±Yõê½WÕ¼¯(a ¿üß »ûÝ}Åb ÿš¡úù°»¼fLVŽ8͵¬Ç]zƒUÂY#±ð`Ø]\µõiõóë÷3nwŠ„äÌäЧµ›Æ%žÄq†gëñ6™!Ò ™ƒïç”@9®mŽÝ?®1ÃåuÀf£6`Ü Å‰£ºÚsI¤çOÓ¼Îu·†¤%Róœ¨é}=õ|×%<€ ÁòÓc÷ÃGD‚(ŽøOÝÚ´ïÍÙ„,Ù¦óÜ%¤ TKlìsFÊ“¹çF¡ª½¤@B<÷gëÇp”kÂUXož¿,Ýx3+B•ÃguDMœá}¼úsPbÓ9ømúúf“. ÛHéò±q6úS}ç·«Ë`énIÂp cñ5èŠ Zý8¬™F ¤pöë?Qlä@£i±SJ 2>z5/kv‡s §y»-I8cÿ£+ý̃šX§0¸f]˜#Z)þ´6èTs[í¡§)K¢5ý—‡ºo³¹„5²äLB¥àÖÌi*³é(깞çã*‡–šýrîÓpK”(´n¦hcç@ ÐÏ^ÖjÙŒbgOÇœÕX«^ÊÚwY& ö“ê…×ÿNõ K&“ߟýW„Ûbé_CHáÇPâþiÆ­ŽêáÔûh}!‰R}š¹?æ-²g¾fLq<}^ÎußGÃî… ËåŽoý«1[œAÛ®ô³½¢µ•EsDòîæ† ñÓ_ü·-—:H¬‹íߤNµ¡Å£ßÛ®ióò°ÒŠnôKÂm®f†<вÃ×)Ó/E’`ÅŽK_¯>Ï:§G%¯)+ÊZÿ=A`0cßTÃÅЇnôK2Lws±É« š•- l2µÅ$g v}ó:YK ¸Ì°é¶žë&ßf{a, =>’;É ÍkmÝÓ{ÉsUÏs——С4½öa¦/À«PÏJ<ê? \(Œ!Õ‡¬ !V³2d kÄÌ9¬©2)pS­„›Â:Š,¶u^à\*„–‡f²ÜÊ>u«G -–nèú:ÕfMé, BWnwî·‚ymk\à\—…ËíöÜø< nÙ“**ò/Ý\&>|Sø8È&œL}ôÍš¶É?dÀÌvþ^?aดáè/‡êÓ.üþnu1?endstream endobj 483 0 obj 945 endobj 486 0 obj <> stream xœÕYËnÛF²ÔWÈBiŽ9ï™…‹¶©ŠÖUWqPÐe±¥HE¤lç§ú½ÃyˆG²Ónš‰ápîëœsï0§)ÂÓÔü¸ß‹Íäãäãwkþ×b3ýa>¹¸ÆxJR$¸âÓùjb_ÀS‰‘S™ D¦óÍäÕ›u¶móÝWó?'Š"¡¨‚móåä•@f¤”ökoêêÅÝ~—µE]™§˜a” îž¾-Êܬ^\<ÕH "˜1`­‘’zšmŒ›½óuÑt秈êOhò…?š¦Æí<eÙ”HkâµYÒˆ2Ʊ[»7K iŒ1uK68ð‡§`Ü®µkï)¸¨ÀUq›,1$)óo«õ-êj‹Š§HË™6tÌÆÄ¿ŸUËnQ ¥ù‘i°$;r[‚ßÌ¿¼+ê½Í‘@’(h½5)êPlÒÊFÖ¤ ÖGã‰Tû§›¼]×K{–@Xξɗ®<’bŸð¶KxBµð$˜@2RìÍ´»º<Ž‹¶Þ怙y»u—j V•â£ZÑ~þM©8×½RŪ„5’ËP%u 9dß„8_sZ€;aªµcîvSŠéóâï/ŒY¢xA¢:ðë 2VäMœ0Þ׃‘çK< êßÅçBüôPíγ™‡Í™Y@JýRSl¶6`rŠÓŒnM¢TÒ°öغRbú÷o3+à‰`g@ÊT)Pëµã¾d!©ûfŸ•å§(‹œ2¿óbßì.Êz‘•y»¸8Kj ¯2á-×»èñ@а³FžA~À—“nBƒt7Ýš2Ò¤C}6yÕežHD‰÷½Y×®‚ËàdãÖ A®]»R„äƒ]âšè dÕªÞmòOS2ÛØ0æ¶ù¢x‘/Q¬XI `… Ö—*BJj¹ñÑ1 ==ôÀ²¨r_zé‘x¬épÀªØ5Ýë”@GW~¹ª«ä¶Ìª¿º¼Sè&A4ël—-œ Ù0±iIœ÷‰0´ÙÅ‘eâ¦!Xz~™ÀŸ±;?^½ýþ÷wóߺ8L^­üöDAZpªºÓ¤oo‘„=äcOä`ÝSèº1“Ô{±ÌWÙ¾ŒT¡7%&09 7œŒÔ(‡±*³»‘ovÄè‘ÐÀ÷°®-/†ñÝÙ/ÇŠˆmÊ´_fC°¬«?¼+nñ‰jö%•ž jµê¢úÎløR¢‰xÐÀ¤bEwhì‚êÎÊçX5n¾²ô”0UÐczz_F\Óâ„ßþ:0HÉm„‘³ÖÝ3NÄÊsúbãžõÊ{¤ °©iJqê«'êÖºƒý =àEª”Wíî Ÿ-J/6ð. ½æ¿ Xÿ(UP&¹t_µ7û®æÓ_'æçªç]Kendstream endobj 487 0 obj 1797 endobj 490 0 obj <> stream xœ­ZËnÛHÒ;…€Y8ÁD•z?º'è403ÝžUÜ ¶D[œ‘(…¤ìø?æƒç«ê’K²ÝÝÈÂ@‰¬ºsÏ=·˜¯ JØ‚úñïjwõõêë‚õkéÏj·øÛÍÕ‡Ÿ“ GœæZ.nî®Âl!™#T.ŒPÄ»«·Ÿ6Å¡+›w7ÿ¹‚EÆŒ€oÖWo5ñk°‡d&.}Ú×oîéY©µŠ?]µ¯ý2çD+žžÿ»_RD CY\ª¶¥_üð³7Ì‚ZXoàRXMÀ¬Å’K"mÿìÿ$£D“v,ë®y⽆èÁ€_ýÒRZ"¤‹%cÄèþ‡nõ±‡…S_0C8S}T–Ú¡K#µÑiÞ»-‘ÜYô{·ƒ]Úh9›DV!(»ѳ§%x¯Ñú¢é‡W4—)"Ûª.ûga!œŒË›}Û?Í ±Tò¸ü¦i»~CœK‹õ¾^>nª®lŪIKâ”LÑYmЦX¥,CÔOÇTm6«t|æ/9¿Θt ™¦‚ªäì¿Û|¦ÁrëR··ÙÝ™ ‚©´{u矱D1C“ÏÝ&ÅÒHŒå(:ÖœÎRpȯug>£Ý1ì ²Ì¤³~‹îV'ÔPù\ècãÐÍɸ‚³ÅRA¹ëˆM‘Áæ?©ö4_lPc\q»€ª#6 ÿ—§º+¾…Šã„Ñ” ¿«‡b €îSìàEÌú;&Ó€\8Á—÷~Ù£U J€Ù´[XÿÈÂ{ñ§Ù{ß/Êé‹tôbæÀ`iÿn¨ÿŸpý˻뫞(z˜&Ì!Ìx̲4¸FÁEÁÇlã h &8øØBpÂ5ú»ÚCT«:pÊL[Ûí|ß”ri ®6ãæ—¸ß©?N+Ðöãaîc·ktð1–ÒÔ–ºü@¯{Ò“´‚÷J"ýölV–0ã‚͹Q`™€`é•ß¶EýßyÀ §ËE½ž›¸í’û‚áz¬1?6Rð‰¯ûTßÊábU¯¶Çu¹ˆ³@–w-GnœËå(d$ó{ˆ†·îzF K7äRRÊòó]èÂÀ2C©#Æ­FЇ^÷nÎ(KnôѶ°Hï¯Ë~S`*èË.mzÜ&êäž&"¬z ã<Ë%ä {%1PAè#ÞNÅõWÓvWîÝSìkm»&’¤‘™Öoßf L¥NJåÏ÷§Ûw$´®Kq¸Ù¤%& n e2m^ÝmÙå ü1¤‡fß»¸¾Þ°wÛgx\ |<Û¼þY6¼ømš5Ì6­ïÊn³_·¡4¸†ß„Wö¤ûœÌGÉË»m‘äû¤óÀì2(²e;´}űë—AA ‹#æ³úþ.Xs:ðP‚Ö|W;ÉÁYÀ,6Œ@ˆR`¦‹-r¨úYØ€¸Â±òš]g›¶‡‘HáxŸ2IGR»¡°b(Ì÷‘4èÛ˘ÍÓÒcÕm"´@1*Ñ)ª“ -MÍÄF zŸt¬´l âÜÈM-ãêû,°üÔ¬• ZÔóáD4äØ+$q~6pǬ^Óä%Ô‹D©i+y¶d&óÉèzècjAn>°=…q}IúÒúav°©¿Éy½´ÎUÇ9f=ÒV%bÔ|5{®®b „‰Á™Džÿ¡dZÿ­+ãHiÒ=X5û¶ä}:nÓEuØÆ¾ }(ÕPýØleÂMHÖdŠp.W¡U4é¶ÃŽÒd Æš“›Š4vƒCÚÃ=,oŠ6öyC‡K̘|¨ ƒ­öÅù„¾ ± ÝZzEªì…Lgiæ/9QÕÇCµ?¶1„NcoàÏqŒÙ”’äy`…€;¹DL=™1óÌŒ¨óìgÜ rnoë,+ø‚UÃE…ô÷­ZЦè‚ÄþjƒOî%—imD%?„  )1RífµBì?Öóð•ôÅ<å §ØAôä ÇO^ŸS Ê ïÿõc6Nb|ó?”C0¶ìwhã,åô°’›ËÏž£§9áœ)¼uºÛyöhŠ´_æ£ÁiW˜WÆRåGë1ª!¿þ^ùõÇ"ÝÊUu÷”BmÙ’œ:ùcª.gj&}Ûª #œÍø –ÓÇ Ë‘u³:þ„Œx{dWê¹ A¤êtæ Ùn㦓™³Zm¢x7Å{ì„ üÃÇÐWÿÓ1ñ»â>ó'7ö¿²b[yk1ã°»¡ÙmŠ9SçÆ•EÃrà¤Ëx. ·Ó[­s£#”ãÉüeºF>\…¯‡"͆Ö[=¤ÎáïXÏR§—l8¾–%tRŠZtœR+GóXQ'qÎ Ÿ’^\VU½®¢’aæªõ1 Ka‘LNµÍ¢Xw]¹ÃnmP«ða`ò}/‡·»cöÑŪ)4dmU¶±Ö$ ò´ùúˆÈól…öÃ_wI< ?¦"oâEàT%äHc]µ«#ž Ì‘h·Eü®Tî’¹Z—]QmcۦʃîU@¼µ?ƒ6hõ»€N.†+€Uµ­†»i¡/Q$¹)ënŠÃ¡NkÕ°—×aÀ„1I¢œÈÞ3슧HÌZ©“€4ÎQãåPyAá?„„Ð+Ùð¼R¹;vÇøT¾BUÛ”Û²h#ß À”¬ÏqÞSL£OHȃdfò1µ8¶ILÃt0/©ñLïÉþM°]øï¶¨½ß„yÁß±14%w£•‹JSëT%ð¾9þ ˆÁy®Ä8åéⰯ⵵ ”¡®{±T\…ÿ[1\O)(j§‡P¤ïÄSʵŠP?Ô.µè”Ú?öãÍâ_Wþßÿ·T&¶endstream endobj 491 0 obj 2518 endobj 494 0 obj <> stream xœ­ZÛŽÛÈœ·ù Á/ÙV§ï— Hâõ"Ùd=Ixƒ€#q,n4$MQ;v¾>Õì ›b‹Ò ôÍ®ªS§NUëã #²ÂöŸÿóxóñæãŠ ká¿Íãêw7¿ù¾2ÈH*ùêîáÆ½AVœ„ùJ14üáñæ«×»¢íËîWw?ÝÀ"!ŠÁƒwÛ›¯$²k°'Ê/½nêŽáY.¥ð(úª©í2¥H žÿÖ. $™ÂÄ/UûÒ.ÂéŠ(D‰ηæB"lÄjM‚?¹ðáŒ!Nö|߆oIp„faã¿üÆ”¤†ÃÆH ªac‚d²ÃaØšƒ7H°¸¨·v‘H¤~±ß•Õ`1ÅHq8š[þÙ.q¤Œu´},Þ JŃÝp0‘¤<,å6lÊâ¦}3<‰#8Ø»iê¾köÃi1’š…ϵ]UûÀQ*6ÁëM[vC@ïqŠÓ!Pw»Ò‡ (¶tÆþÉ@3*MØÛ.)$ÁásýçÖ› q28>ùàmQ:~½qžÿÚ»^ܸðM÷xªú]]3£«5¡YwâÈÆTtH¹-_Ôαœ>chšÎƒî$+0ÒR'ÜÏCz¬ö}Uçp8é±,êªþ0Ø%a,O#JÌè°]@*›>Mex¨zص¹ïBþJ%ÂS/ö1nø ÈJ%@ÎûxWm'S€=×Á»ÂŸR.ÈóàŸ˜2¥ ƒ"Œ‰Ñ¼ 3#ImbÂʺޝ‘PÕ©'õÔ“SØ&y±fŠ!¬'ÀyÚ•Ž© õµÎ)Ú¶kàÍ¢/‡¬Qýyç¿£ÑD\—)<š„qRb TÌ;Å£ûêÐ{v`ÈÀþ_@OGj"Â#÷\L T¦ä@8Œ…Ó~j÷EåÓhŠfgÛÍû"@–yDÁ¡Ü 6£,Û3 uh ~&Ò³½È°ý[ð…/7 ÀàWß|j‹úàËÀŒñ!0U*aü»3¾òüd£Ô„ظ¢èÌ!bšETåHê kß|K¶(3ahÜÂ]þ…’”dØ7Ï1º@agï¤ uóÏAzhºGoW@_fIfÅz ™µvð[3-ái&u,yo¤ƒáÁY¿¯çgm¢Š½ahÄþ¦¨}ŽQáöå\˜À/Н†O@a5<8ùЃóÜà@RÇïä|·÷IaMb\,‡p¤Fp¹†,ÔÚ¹ÅÇñö»ww½FrfcOц)ýt˜“N*6ô>á Ó`)!¶¬àÑ÷Áv£‚û~&>>X‰h9õkÄÄ5„OU®bÚü+—äÀ,°}|/ÄÇ­þ*€Bà…Ð>+.s÷åè9—|÷î]Ú…tûÿª™ÓÔ- /@z’X]Ì‚GÂLÊI¤f”j£]û*+ËÀýi¦ÑÜ>x’óÉ>knaAyJ e¿A2ùÕu*n,ƒÜuZ™Þ»Ú€ s©£˜G`ÓtPBÚ&¾ Gvüà…;Q\>\9y†‚)6‘/'21ue,ˆE×UÞoDVô{sì‘×Q“áß=„-¸K.}%ô®-ñc¤—<£'2ÅÏ'³f‰Œ-EMuU:U(÷¾Êrû‰3 ñÊ»€ŒÏš›g“§j¿ZÔ„Såá" ‰ž:-ñè@¡ ¡C-ü¡Ü»CåƒK±8©g "Ëu’|Ä0–¶Ãç ®{$9§Ä¦ò鸾Z_(©¬ueͱ­é:Ÿ:6b{–)c“ elšý¾ñ¯K3öµ>—)È n°ååÈÅÈ­¬Lµ[ëy\‹Ù_gÉ~ é ¬FAf·r‡rû>p„е%S±ÛLÅŠóh€r[ƒÉ~Ó–Üö;çaá|Ê=ë°˜¾Bsç`™sðkÎÁ pn‡Û‡Ã~è­}ÿ¶/Á¿Ìv! ·8È.z¤‡eè\ ÁƒJGž/¦,=xÀe‚^ÍIYËu çÞ÷ž•nf Ó¢pnó§ž|á\‰¬³û•+ßm³ÒàV”üv(¦ Làï³LMB±ƒ«4ôzç#ôë|c`×lףͶƒor3ôeȬ!õ(f^f?#:ê#l;c:£9ïÏ-‘È\ðò{—ì4ÚñÞ%âT™·<«Í§VdI×ùÄ ’ŠS‚/êk4Ûé q õ¹¬ÉÍl½7ò΀3á˜!/‹|ôÀc†¤H>H±¬½´L”Ý =³L½¸fTƒPiCø®y £áDaæ{ÂçM´’iwÒEädôÙFd_ԎŇrž‹‡¶ÜT/6>3Œéä¼ôPcÂ|ê]—ÊÁr>1}Öè?7ɼ4úp@¢x¬'ö`’“ã,r?P²  ¹œf€V4,ù{¨S4Žß3zÿ¬pxå%U$Ãö§ý¿«ºêoßC=d¦°óƒXKÏÉš{.zeï.x¸æ”‰ýbUì«ÿF™–+g™QÛƒ7˜Ã‰à„¿üéí\zˆœÑv®(§ X3 '¦v3s,GÜæ¸åú;žÁŸ}6IçlY7iÝT—å6¶_R1±è¢×oÃETÚƒ‹ Ä#_!È|*÷BóœÔNhÖÙBä³væY3½°šLñËšAŸrÀ/5hÛ¦<`’–\Ó“mĦԓ˜2¥Í/SòKèØ%]™¼#–AÒŽ÷fÎ^[ âø´+?+?žöIý®èý&³Å‰ôêíÑ5O“i®Õ|*}ûEtœ²ØŸ‡á€i:5² Šò$ª›æñ’Ð¥&‡%c¡Ì^iˆ†fzщåLGc n¤*^Z?í*¨¤máê7‡æ†²ÙèÍèh}W>6þƒÜÄ]ríð6ÌbH“–Þ¬"= "¬"l˶yâf€@Œ dÏ—èÚ\öx8m=]*¥Á}¹)üEc(¼@IôÕ£¿ñ=¶¾ÕpDmõ8]"Ϻ´E²èRäöÂ…/]Hl›ÈQùÏÊ…–±\Ü7áfYƒoä¤þ¡=Ÿ\¦Åd±yÉ0¦´”™”¾´ã»P@E<äÊ}UöÙßOh5›ü&U¦¬Gùo 7êºrÓûz‘Œëžõƒp¬oŽaH7ýµÂÇcDÕdvûL2® /_§»9ÞÈMUŽ?ݜҞ0±tqÚvå‹O^Óqøéò¶Vãtzùíäæ7˜œŒf Ö}öâR ó {³e"5*„$/YüµŽ-Gfvü쥄8KÈ4œùón#^P^#)ê Õqt–Î=|)jrìSóçÍrUã¢&€¥bi~hŽ.ö—6<©Ø¹†3ëÎcOËìÐ`—.ˆx¬ùÁh®†ÛÈ£àoÆq2½Í…òM‘=R*Ê21›ôqñmý¯Q¬BÁ9…’Ôé§àø` ”k/eÏL/‚nG³tz96=ƒÑãänÖ}çù.Bã¿»aÔh¢n„H,kªé`róŸð»a 8œNFýá­Ûßùbbˆ…ƒ¼yýÇïýéÆAè?ß¼s; ¹óÙü3öãW¿Æ·O†Þ~óýŸß\3ìÌ_™æêÝ¥f&—o÷åX …ŒˆHd¾Ærœìg j¦ñõá×nÊF Å8Ž‘xæꪫ¸ÌX +[G 0#õ‡{MMäÇ8–?^î¾ gÀñ*—;çæ[ùTagØéšŸbõ Üþ*“Ÿ\€æFW tÕIÍ~d§&cÛ»TE¥ˆw’ÖiÏPÓ¹–¬ê|VO4\æ–püÁ!4€³ÓÀ…„†ˆF§\}Uy=}ï›æ?þIÅ"ÐR1ÂgàÃt.23øi¥*"ù 9Qk£'æ#O8êœä–³ôk;:æ:ù®ª7¡PK#“®Ö‹ÝË—l.®éÌêú{õ0Í0ãíõ<ø4i±2 ÐÕ—º±JÏ/F@"o­¥E÷ð,WöÁ7w«¿ÞØÿHCiendstream endobj 495 0 obj 3060 endobj 498 0 obj <> stream xœ­ZmoÜÆüQ¿B_ 8…ÄìûK uUqaØŽ$¤EsAñ(“;ò|äEv‹þ÷Îrw‡äÝÞéŒþ xE.ggžyæ™Y}:'='î_øY¬Î>}:§ýZüQ¬Îÿz{öí5¥âÜfV1%ÎoïÏüô\P›q®¹Ì übuöâj‘¯»róÍí¯g°H©æðàíüì…ÊÜì!¨KWMýìaŸJÉð‹¼«šÚ-3–)Éâóß»%™)® KÕ²t‹ß^3:¶ïR“q.Ï/™È„齩VÕ2ß,¿ôß³™ÔD…]ûM¨È¨€÷ÃZµ\ö«:³–…ÅbQ¿õ†‚Ågï›MØ€ ­]ÿºüØ•m׎fZYWσÑð5V+nz¯ªÌp¿ßÝ=ã`P<ÿïî ‘iëv_nË6 F £=7U]ôç—()XÚLcÐÌyS¶ýó$S”Æç릔ʌ1jÃâ"÷ÁeLÈÓÀ21ÐÞÒ…&Xë—¬ähè¼|V—óè6iÅþYÕ謽5àE®ãžÝ¢Lú÷’[; ò’2Xý¿½ÜÀê臿½÷º7œÀª¢Ç tç_+ ß¶å¼Ü%%Ú¹ ,õàýÇ¢ô ¡2&I|þÃÕÛ -Ñ'U]uU¾¬þY$Yf4‰î­Z+J%ShLU?lH…90oj°’(=…¯C«•GSÈ-éŒèÔyÝ…çÑ?m·‰ŸÊÐB=îÀ Zó¸Ã€TH;…,Z.ââºX~tê£äP #8ß¾¹¹ ÞœÄ$¸ˆ6i†}ëz%%;â€Ò¿Ì)çñåÏëCÙÉʨact:KÁ;)€ €²ƒÞÖ,:‘Z­çÀD¡ê‰ÒôøäSoXJdÄà¦l·Ë.ÄëŒid@oÔ>̓>4›Îg/þD~Jž’;—D+CnXÈ9åü9ÒÛ*©Àü*ñD<â©Èë\6¤,ä\à3M°¬ ÐÁtYµ¼ZbΖu·ù’<'@ÔZ¤ÃŸC€´ÕñèÍÚeèËß#—(›Š˜þ%å`ª¢kö£Þ•«u³É7•/t "ã¿.‹êþKàVf°'<Ê¿¸4¦=‰v4÷ñpÆì;X‚¿q»M•ßùÎ,jŒÊã¢*ðŒ0ó>÷ÇUF ôcO&¥#ÔÈKØ|‹|c B"s.óúa›?ôæpøÂôêýö¬¤arÁ o!®=X!KDò †CˆK¸&®Kmš¯Ö˲O?*ã¹]¯`X–ÄλPr¸Á]Rõu¥[lJbæ¾Y.›P’Añ`<£Ãäú£-½‘<“¨ ˜|Œí„ 0¨\ʴߥŽf ŸÊ\®iãôeŸ{JÞ ³¾tõ?ØôKˆŠþÅs€Š$XAwwuoÿåÃßû l)à}ðæÝ›Û—³Ùóöù²ØÞý9<ü|ãþóÏ“z ‡ï8Àô›¼j÷]3¯ÚbÛLÓðúPõŽ8%Gä+ºÍ¸âý¹ //·eá\í!,lÅSò ¾c =pþÔé©KO{T-yài/PöO¨ÅI´5щÇTÃ~ËÓïh¦ðIÆ’k¨‚‘œÀ'(Hy”ÒSR±ÝÞp»mÀýˆÒCá Û€ •ûÎR õЀæ~¨ b ½^˜ù^Bƒß0?4Á"k°‘xô¸’Àmƒ/=aCŵØl¥ôgZh&ŸüR @;¨ e8’qí©Gi'mÇÔs3HT(H Òë¶È×åþN7å§m ýVÁ\„㯲/váaTÀÔÀ^’8ì¸ç€Æ²|‚aS6"¡³å¨C0–“G Cöi‡@G,&Å6ùÀIŸãÆ¢)__QŽ4ƒí—ºË?‡Z-Y<ÖA!›ÊŸ¯¯ßÆ)ž©Ê{•\+†%þöÝpÍfi¹æä^<ñìEÙGiöMo7(NÌÍb‘oò"N@ts.Tõ¼*òÎ{¶Ñû¢mÄ~m—oºÀ+ R§UuG¢¸èuÅí%‚‰ ¥Úã(ØgC&š„2óÛýÀîTðAo´Aov\oûÐê0ˆvj— [eLIè¤òÍ݂㣫±3£qd´ër½Ì‹rUÖ]2¨—N%¸îoÔ\Ìf÷ɪ劶AÉíñ@§1’,§l$3"„0¸Q}âFÓ^íØà‰òÁÌäD¤§ÃV›DÄ6Þ»>$ÐÌZ6ÔËD§²ÝÔ¡(;ÆÝõÝ `Q(Ìö$<^Ý\½yE<ÃtÁLŠÔ ÑŒ¯|ÿ=ZšêÂkr¢#~®/‚]Œ¡„x÷vX$GG!?Ü€kŠ\™)ˆ; UB—£´ tœ˜I¯*.BÂ#pQ^„äsº2.²ý'‡3@c©ðIÛ© ­þÚ•ÎÀº†ðIÍ„Þ}ÿÙs)ž74ð’߉]×!³þï‹._}G†ÁÛn&Cí99“A1ËŽÐ iêdÚ@í“øÅDÖ<.Jïöi/v›º(%Y¸[ÒP¬1Æ ž–:=Š}iõBì"À„}l×ù†ÄE"ƒF¥¢h6.¤ ˜ ) - 8,Ø­IV²a8Þ-º˜âûsÌâ}ëìí¼äC7´Aú€®ðH4h—c¤¬GÚ Iû“×@²§°'ªÿIà@aæ|:_‚fš…UÞýÇÏlþÛÇcÒô½¿YD Æ×~ö¯%G:ý¬W!LƒÜ˜J÷“Û‡T™O†¥A7öŒ4ŒNUÏK@ƪ “zP¯ ÇtIVü:¼&” ÷dìw\UÇŠu°OI:óÐÑÝ/Lœ§PÆ '=?‘v G‡Ÿœ•Ó Jb€B5*Š|ùÐl WíS±Dã›úòôM¡IuœëÚLÐáþj?8£Ù¨ââ Ø^êA³#S3K‡a`úØl¢Ž™d’"ç8«N"y½máëœíµüû×ÃýÙÓW?^4«»ªßÀ0‰ùÑ„öMˆ&4$ã _ï§Zµ<…Õ‘gñ{\¸!ã¨%(~óNŸÜ&ó4=H=æ"‹ujȬ]ï€AÚ¨SèlÂÕ©Âwªµ˜Qï”ã¤ÃùÒJ¡/PV¤Â‚~x&\@ãÐBmåç. ±•™¢z\EØÉéØ7q1÷€2”FFò¹7¾BmË|†åqÆ[©˜±á㊶wûânåÙ_¦˜`ê0.žvXØ—bG›|D!”hx'·‡y¸“ç®OR•ðI–ó~b²‰_$þ¶>elF™Ú¹›º­YÎõó4ì8¼M°â¼vÄL?©ÆÖMÐeÀt|œ ž~ ñønÌ’7VG\þ+e!åãÎôÁ*˜ RV:)@¨Üm:Áæ×¡#A`ÉùÁaîú*ꤢ”Èx;îæï-ã |çŠÅ°Lº’iLò ãž|}{þã™û÷?<ïF#endstream endobj 499 0 obj 2779 endobj 503 0 obj <> stream xœÕZ[oÇü¨_ÁÁˆ›¹_R´UR$€‚¤¶„bE®¤m—ï’–]Ãÿ¢?¸gvfÎî’CŠrT Œ†3çúïœÙw#’ÑqÿÂÿ“ÙÑ»£w#Ú®Åÿ&³Ñ_ϾyM©ÙÌ*¦ÄèüæÈÿ‚޵#Íefà³£§wùrUÔ/Ïÿu‹”jϧG/TæÖà AuX:]ÌŸÝ®ã^¡” ÈWåbî–Ë”dqÿßÜ’Ìׄ†¥²*Üâ7¯íË7æ†d\Ëј‰L˜v«ˆ(‚?ÿñÆ­™ÌZ¡MX›/æí™ŒfʨxwÙø_S*™ k7‹õ|zÒî5á,Š¿º+ZéÁ8’KÞ­QAF¸R)nZ[ŠLK;>OéCyF4î™,f³|>uÍÀQȪô¢S1wº_],Ñœ:³ ×ß·dÚ:çÃWë¢ †×šG3…˨‚Eµ÷WÙŒ !â‘VÁÆ’ =ƒÞ ¦b"ž¸¬Ëy°1V£nmL`H cã÷eU¹Õ1W 8ã£1e`¥=V¿ö—ÓÌí×y=¹+Z¸3•ÑèÑ:ÈJ9Û«|~ûÏΈ’dĶÏ4=Q””lxx*˜6vË[›AÀYÆ æH½G0.|4»Zc4·‚0H/™å«É]kzikx"ÄM*Äa]$5äû\]Ì–«Þi‚dFÙ¾ÓšÂm{> …›Ž†H¶–múÒ(!÷]YͺjCÒ_jµ)Cº;ÁwK`Î9ÆÇ¡Rpï–4d'ï…Ī6S™ìıE2mÌ^ñw$f»âÆáš_%þr))e*Jª;¼ŠVrŽa±ž]”f »°{b S±¯`æ]J {)xÔc¬Ü‰±Ã¨|”×7)»yI!ï,‰¾¨‹¯—­RÄáe*°Õn›Te³: AG…¤¬‰dNjàNˆ«CôàX.¼ß9åˆÑ–0©TF &`9F¡– Ò®ëùI(]ÄXƒîJCÔ¶ü¾“|UÌ}}ü9Å |Ê‚O(Æbá@×)•y-:H«Þ(䯕þXƒ®›§†Ô.P5T›!!éÅêÛàkH\&I‡y-â@Xé(€G[\°ÚŠCÐ_¡jþ¯Rø/GÚˆ¿ÔqJFî$PÜC&¸Ù ­«9l—V<Ö)Õ—Ï~V‡ôij‡á;æ0äèUÁtõ„: SÀöH òX=“,ƒk…Ø1d¦,ÃØ,ƒ?gT~)˰4Í2âšgPàAO€Èž‹ú\C³-®Á¸DÚ¼É5¢Ó0¹äG¬ÿÃ’ ¼Žd`‹ô„$i~$ÐÔÉM’!8îësŒ†@ËaÕÊAŽÀ4"SÃ%D³á¬á:á¯^½º+ª%üòHö‡ä"ÛLâwü”yÔ':æ ÒpP ÁX¯«À¨£±•FßåqÚ§O¹>?X E¼º¨ÝfMCÈ=”õýÍ´N‚É„§E3©Ëk_~ ï¡Ï¯X~P³÷è)B!¹(áXýb2žˆ@.¶#°múœU{>|D|T¢£ÛÉ2_wÖ3ض_vÕRPô ÷òeq½Ó¾¾k‰_@@œ@%ô¾€b»~Æ â18=üæ7¯ øìïþÂ8ŒƒXÖk0üŽ\¤£1ºÐn>¾_]«‹ª˜ß®î.²e]LJŸWW7íIWA#—^gðƒé'úùåó#g)dm÷!z÷9¹4Šú—4%iy^Øòœ>oõá@*y´éqãnt^yª+'7¯„æú%æBÔ«ê.æÓþÍȇžJÙ-ÔbyY¸ëæ‘jóæ©¥è¿KŠ1¬dŒ±EÈÐ$ˆ]Oe%C@ ®Ç㡞âÞa<Þ"û†3Â2E†aÍÚM”ÆôªÍ“ “âo×:Üþf šWÛ¦8Í›"–{<ët1_Ô.Ÿ¿õô ÈÕí¾:ͧs /oõ´UIA1娼?•Nñ ¯—qŒ€z½t¢_¿Š?üøæíϯ¿Û#Z㧯eû¤5¢g_CŒU_Œ­çÊ\Ï ùÏ h³öçwqЫ±7Xp …&[èÆEê3Ïõ¸r*ÆRv·ð¼ÄÝ÷~IB‹…ì÷ÍES${µ ƒSœ äË%0Õ9\âÄìÄ_¤4A~”¤ƒ©{šrVVþPÇü-6ø)v&nºÞCì0vMw&¯—/’ðÀ3Á(ÂÌS°0DO %Ð5nîy¯7ÁK½Á­ê"Žq-ºFÇlw¹fã ÚM)Î㟓$’Ax&ícmtçÀŽ2ûÃ'ñ}`™oì|=+êrÒƒ{Ç™Dò*6u²›~XÅ'°q;S1»ƒkZÜ„\Ö¤k•Âc8ÁÝ•Ì)0;ö1¤(c8Ú(}ÎÃ]ÐÆÅËËãOïƒqëºèêsÈÒnœžhÿë*Zúå=Y×LÃ=Ò}`»{²í|Nš*ø!ð(èZ‰µÓøªår§Íz¹\D  Ã1y^߆ì5`Á°"i¾ãE\„Ö?¤vþã$…ÃñJ Tÿøæ$h/…Ú†¸^É:¾ýS¸6ê}v:n‚ç´ÕûµçŸ"µÄ%KÉ®±çÁ©™žÀíá…‚(rßgôêâù®”º¿> 'ÉdFǺŸàOÖ_.4²‘ûŽJߨ 6æ56Ê}¸è6ch÷º¿0lªÎòùíÚ724c¡ä6j­iyf”ê4:x¨ìÆË4ô¾ÖlÔh „qãoáÁ±_ЉB-Vøïû/ [M<Àb@ÇîKÆšÇ$¹{º¼[&Y4x^£çŸUÀ2 ‘½6³éB ßùæåªÌ«ò?Ý{:T‰þNâÅþ'øðÉ‚Ï,GÑ©€zðñ_¹ÇÓ›a-~ŠÚuÊÁû½Ç3ŸCcA4€Kõq¾ ¿[ïsÇÕÄð7Cþ“x^n Np²è»HÔÇjtù¢ÌüÁÁ¿F(·¦4x¿,šÕ›I].Û³¤ Qûžž9=»|Ÿ©…EN˨†%ß‹:€•'÷|èïÀ½{Ÿ¨ ù:ä>~ŒâËM÷ÉZ²Á˜¡Ÿƒ8FHIiv=íD¨ëšAÿë­^ÕdF(:c¨•ákdë6~>úû‘û÷?iÞ½(endstream endobj 504 0 obj 2904 endobj 507 0 obj <> stream xœ­ZmoܸòÑ¿Â_ ä€,ÃwRÔɹhAœÆ{hѦ8Ȳënß²ÒÆÉ¿ïP$GÔŠ–í´É‡\._fžyž™á~9¥„R÷7ü[­O¾œ|9eýXü§ZŸ¾^ž¼üȘ<-H¡¹–§Ë›ÿ v*YA¨<5B ¬Ož¿¹-w]½ÿiùû 2fL\^Ÿ<×ÄÁ’™0ôf»yöùçJ­Uø ìšíÆ sN´âqþ_Ý"ZÊÂP³ªÝàËœ¥ç[Hj‰êtÁ%‘ÖO]ïVõºÞtî Rª‹¸ßusã%µ< ÞÔû0™+wŠx‘íήí¯#$9>( ^Ä©û°¬±6îÕŸWÁ„°aè[éŽö",ÈâÌn¾Í 7™¹Dé qä)C8·*ÞiUn®ÛªÜe&91ðgtÍþú†{.•ªH÷Ö¤PBÆ­>üò®Ÿgˆ5l4o|ù;7dE ”û:l ¹Œ~Þí›M€ÈÑ"~ýûöà¢0Äqº`nt´2‡ÚV×ý”p7ÜÔµd„ÓâØø‚ѸW[oâ·`qÍî6sÞáö‡0Vm×ëÒ¯¦›[8©C8Û3b­Ž›ÿ%|kg¼0xy¾ §”FÄ5/>¾=¿<[¾½xÿêÝÙûŸ/ßœ}8Ï9—1A^™x?(E•œÀÏÁ7çémÛ]VûfçA)ˆ¤šOý¶Ö]G¥. Þ3ÉBÈ "r~èLý&øÄoIÐäýnb…ã ?ôÕ›¥``­®ûïý‚ÀeaÜvûró¹w»ÐXd4ø Ù|œÁŒÔñJ·Mu=*­xâM¯ë]¸‚ÛÎà||‚9ÁS8‰p,«îP®Â8xý¡°Zo¯kâ½&]ø;¯y½ð„ím‘ª€W>Ê` T.‚6^RÚFC}ë‚›¨Áð*W­w,  d¼Mµ:\×mP U9ËŽñ"u4ÛC;µsu[W´á–ÒÌRÙÑU„Ä«´»ºjžUýÁÊŽÜSoª¦ö² œ l<Õò¶i#éhDy[W‘`BCÈ nn¾j§XÊ!|]‚ïa'»Ü p(»à/a‘tý …⃶աm}LI l¦5ú`º%\ºóÑZÎL]•c½ÔØmÐ=ÅеÛ(Ç ñtÁŠ È‡Æƒ]o«ƒSÃ^;%ˆ1C™L ÓQq>ŒÔ8ñÙ¾* ñ}]^‡Pg …]—ž ¢>½êáÒgb(a¸/š£é:Ÿ¶8BR,BåæÐ¦dz›¿y§3:äÝ»:Œ±ÊqPŒ̳ŒÔÄÛy{m(šÆ§@Ü`Œ²ôœÕçͶ 4ÉùãÔ7É®‡ÐÐn×Þj 0 u+u§R&úÔñó:©!—zøÒ&xV+ôìúPeP~Ϧ!˜@ާ h6@5kÌj%`‡ò¹ˆÉ’xåÓe\FAÎl‹xüg+Ï‘.#×èè­p'>B+póTéƒôåGŽ€c ¨>ñæ”Å!DA„¿=D a>]†„rœÀñ¼ïzöíoÆåèºÏœ áIò‰?†7ÀðpW™¸‰gžë ô‘édcPbDgÜ–m°ƒå¸B6ës^Φw ~…,â´lzwñáÍÅÏ}ê&  k!BH6ŸÓ€L^DïQ…‰ZŽÿfîí#ÂU:fÀ¾gF8=¤8l=m¨H@º•Á$"ØÍEÉQ¡&]W«mõG1=0ÙU Ö e°L)­n¼SAžU<Ø÷Ès Y¼ä…‡[`¥oìyÖNo7xd ìíþ:¬ÒO<`N‡Ë¶m‚Í$¡ Ú]´fKdR'i/BxJ¦õZàq1ò¸´ Å››Û]éFÅó<[Eå•EÜx·÷g„˜h}mB–×äj(„ò@_­b®¦‹or_ëÊbd“rSÕQ× ¶"ÄþH| +±Qq«”wà·(ËN¬Mµ ®p,ªŽ‰n”6®¾úvµ•´ñ’uYE§%eC²*$sXÕo:Ï–c¤Å<‹1Å£{³×‚TÈ'^0&°Ëa,’ŒãHï¿ÿ]½ZEò×*ýzÙ…Ý€è€ï£§RvH¿–P PíR`w –ê?g±¯£)’ãkŒ]—o[Œ.WˆEïîù¸p~kçL—ÅrZiÐ,„Ô‹ˆ”T]ëÿºiPÀÑÍYmC]Æ_DDžkºà:æJf?úf¸ë‚Û¾+“ÆË§çYíqu1úéâOð-Àî?s¢áÈu÷ÓO½»¬¯q_‘›{" IM—k®<Â7 íq6™ú&)³ŽÍU:å¡Ûºl¬*W«eJƒlax½ÝÄŠÕR 0ŸO¬ ÿ¥Cj¿û}•%eÅA¬S;!6åÕ*ÇÙSMEÕóƒä”PÛW(¾šç™è]OŒ+ü,í5]½¾ßæ²€¹¾ö}O§#³¥[È Rƒüz™Ç£c”÷‚»p2á7•™Œî탒ÉÌ6Fîm­äê»>‡¨£É±-œÕz(,šy°¿¿<ù×ùç`WUúIúPOWél£Hçú5ÜVd³rßþÖÖ]8¨KP=Äè4å¾Í6Àç\k#óÇ3ÉñâCdahŽWà.“Hœª0P–6œ÷2 I¸fØ\chô{8~„ì újlb'›üÀ ÅÊ#ÅžÒÛc•ó$ŠÌ–´¤²ú‘ï—Þ݆ß9ºWh£íÃÁnǃn‡4‰ÿZmåÿÙ0…MÒßÓ7Ž‚³i·ï¡‚Å'Ðѯ]àÒ•Ea‰òü£¨›y¾<ýû‰ûû__:Hendstream endobj 508 0 obj 3061 endobj 512 0 obj <> stream xœ½ZMÛÈ|œ_¡£qûû#·µã³ ‡L‰1+‘²He<ûëSÍî.’b‹ÒÀAàƒª»ºêÕ«WE~[Œ.ˆûþ_íï¾Ý}[Ðn-þ·Ú/><Üýü¥ba3«˜‹‡Íÿ]j3"šËÌÀöwï?nóC[zø÷,Rª9<ø°¾{¯2·{ªÃÒǺz÷|ŠÏ ¥døCÞ–uå–Ë”dñù¿¸%™)® Kå®p‹?ÿ&‰]P‘q¡˜3p)ˆÉ8—‹%“1Á±Î fH¶øòñ×n ŽbÜ„Å_óêù”wç‘L3Ï{vK&3šR–‚Œ´¤°ÕÎ'ÎCîÁl )•1Iâ]›¢Z—U·/ç™àœí‚ßkI£±eU¶e¾+ÿ@IÖ袦=ÂfM÷C %q·¶vk‚mñáî~ \Áy\:ÀÏCøÀL®ltȽ[™ÒW¶Þ„[+eÆ%‹7,¸£³º»£Ê”0YÅ)1‡„‹+J£ýUÝn£›˜,¢ûÛmÞÙAuÆ ÞcUŸv~‘I¥ây«üÔaYe‡ŽXr+2«K û«Þù“Ç×àh„èj›óUDº‹ØäRW?u[PšY#‘÷–›LHÛ?¹©ÞFÙ‘íÖo†3᜼_Ç zçM¦Á8úB[µML¦}(¿žVÛo‚¢këS{8µSSnp.,Ͼ«Wˆ`á¯ä£¿ä&$ð uSºˆ8nXo‚Óµ1Ñ mw°Îˆæ˜ßÛipff,ßA¼‹uH.EttTYM78UñÚ\£Ÿ¿ ÀÌ:$;§˜ì/SKóW)€£¸íƒç@¦5»ö¿œÒ!žXÃ1fÿñKÚRL¾º\G0Ú§SÙt¹Ì.¨RsAÜÔ»]LT6îðÂÃ:Œ«M[„˜Œ6äÇľmþ{·Ýá¹s—À¨ž9ÊÝÂ_|Œ>ø~È{®µ™äÈn wˆ -›6˜¦%ž˜Št‚F“ܽëjÊsÒ 1ÊÌî2ÇhÄj€%•"ºXB¢_Jh,¦Š`)üЄΠ8óÊ? çÉøìë2I‹}5éÖ¥ &2`yJ%Ãg“l–"ø$–ÞRxú ´³øäÉÄÛ½¢Š¿ÖOÝ"°¨EÏ=¾¥(^)@Ôvuɨ¸Ûã#áüSJÀ=¬1ñ?¡zAŒÝâ_>õ¯ÔèuÝà_Êp1Aý>^)±¼~Ùí¦%åe[¶EsÈW>Û”“P½÷ˆÿݳ @eTT¿±²šÄ½Švå}•\LÚ$C‹}v7GqÓu` I0‡7Çz’Ír5ëµKJ°i¾;Þ—L”B]ÂEŒw(O8ôoš†%ô{{˜O¼C<Ä©ñ®E³Ê¡’`øôÓ"÷jZ¶÷ì šÓSÓ–í ªTg³}'MÜü—vj‰«!w´‰:Ô¥‡+b¦øìk}ŠZMó^7T>}Λ •I‹2È-ø‹ $GR|ûgF’6-â.ªeGÈy…Æ’;ÕʆÕeøp\ni •søº¤°ž^£Ÿ‹6šEˆ·1gd8a)8È >>VU•ä(žY”^SÞai_€Ð­Êf  9#4E¢·Å š*Ž™x«Æ&°:ðD TdQåARI¨Dœ I@‘±ÃÒQu#¹ü¿pë´7¡îN_,(Xß›òDoêV ¨V£«›öëêX:ƒ•Éh#B~¼iÕî^zØ´>„ °üed„€¶•¨hÄ™Ê UÎáX¯ ŒêúriQW%EŠÎ¯[”à]ö¨û|wN„-âyƒ•¾×·EI£V'‰¯Mè¤$:†ôÅÛ)-CÁ ÷vÙ7QVJ¤‘˽ýŒ/vêP¤yæZýóõrY@kN:JõféxÑþ5åÌ-“ƒ -Ï>¨P#YB>ÕßÌQ?&Kp°Œ¯>ãòqQjÎ1W@q•zýöK®¡’tüŠþ¥èXï–öâÈ•š>©q‹#3}%3ÃŒ ‘”²ûÚWAN ‘ã³I1`P%%vg>W'ÝVP(@S ç#—ˆyzV¢ 5Å·SQ­|NϘ7é™%s·¤×ÔÙg{ pŠ«rç-:cDubBHló Ö'JŠ×:2Ï4íûÏDWé' ãÍ^ve…Cjé"4!‘tߺ$5K +¿ƒ¾5ùáPÄØ 7¦““š9î÷öq™Eƽ4çz*z™3.Ktjró†örZ¢)[˜LtÓc"¨ÚKm2&B…6Y$Âþç_ú}Xa°æ~‚¬-=J'eJŸ‘Pø—NM™a™ª8¬n¶‡ Ï&µ#”{#Ѧäð/U`=ÂÇõ ^$f{iM;ô*Àž`\Šþöã|ðÂvzMædax柑™­F Ÿ·pNrÞö““á ÓèÅF–eÿºÊº.wü9ÒŽ¡ËSÃÐÁIÀ’ÄH=ò,@†¸vHÝÏ;_P@M1Ôšû¼]m‘i?:ÏŸ¡ãð*ŠÛ1 S  &î[¯‹]òÆP¦ Δê¾[¥Ý)îûôn*5ÕÕºl–¯1Ý»1—ˆÝõCaæàÙœVN/nN»^ÞO]Ò:>) ü› $´´8ÿô;Œš¬°C7Pä]Ѽ:í[¬à:FñÄSÕ–»€-(›3;’ýPbáðšh¤»Ù| Ø´àÛ"_ÇÇçêü ­/jŪ|·ê<ïÜ(¯Ú¼òo{M( ­šÜˆ o&XÀwJ¦.^ƒMTôƒuXär®Ó¨œ ÷ÁDi±ÿ*";@9e7~3#çMsÚ#9h$ª”Ë›6?¶Q‰)¤£—²öQÁgs±‡Â„[i|?6`äÂu±ÉO»¨¶Ä›d]™q óX6 ªŒÛ5ahB–ÚÌŒÔrSx—€Ð8"Iiýa†rngßGœšb= y2&©ãÁUhtß´Fçù×–WX81¼‹ã0niç–ÚóXÖ§¨MøùÌZëžÕ·‡¤BÄi9.)Mוr…¢äü ß=×GÀi' P$Çb×ß‹0¼´Uƹ¬ÿR yãD2*bïF›6Da›÷îØÄxXÛ÷ïmƒAgU&9q³âõøBÄ£“ÆÃm:$m!ØjX“c]¹Ç˜Ýš‚©¾®u/¾=$ E¥>|ò_ÎÁ…(;çþÎò®Á:Ëò?%%ŒûTjïRñ Ðë•Ô=øéañ÷;÷ï¿kF9äendstream endobj 513 0 obj 2882 endobj 516 0 obj <> stream xœ­Xm‹ÛF†ûè_á’À¥%Zkߥ–Ú4¡PÚà)M):Y>«•%E’sÜ¿ïì«%¯|ñ‘ž?ŒV»óÌ<ó̬>-c„—±úÙÿù~ñiñi‰µÍýË÷ËŸÖ‹Õ{ŒÙ2E© ‚-×Û…y/NQÌ–’r”ÀƒýâÙ«]ÖE÷íúŸ1–®7‹g)ìÁ°´¦WM}u{pk™Ü>Ȇ²©•™$8qëß(G‚Ê[SYʸz¯KÀAAå`DÀ­eDb‰^ûDýéÃ""q»®we¯Ï(‘~_mÂÅ’;¯†>‹`ÄSJ¬±¨7ÖȤ76Û ßÞdÞ‚%ˆ2÷ ÜîZ”7µÞˆS”ð4±¶€YÇ2"qïÉ7«›²^õ;Ì>û² m›.„U†ô(ëéÓïÂÐþ`_Ò¿jØá$(IfÑ1í(qi‹® òõm‰n²‰ŠÐ³ë~æài.\…HŸ–¨éJ]ØŒ¢X0×8W·×3¡'zœDô¢RÝ4u¤êô•3¹î‹*F3 ò¡%è?_}øð!„÷úןÃ]a媽Uaš~JÆMJ𗳃§p„ÕÅ %('›§Ëáx<ÌÍ9˜V†”“îôr%ŒeB<’P”ò3ú£k¬óEÿÇ\_γ:4¶]s“ݘö9©hª4h_„>NMrGi¼™xpBP‚åyÏGbnO*Ù¦eê๴„eìO‰RX ª£%EÄŽ–¡üú"ì ÙfãºÕqx±Y™ú°)¶Ù¡B"}Ϊƒ%$âÌsfwlÂÇ­ge6«ª¹L•µå¦çÙÁÈðF¯ˆÇŸ3Â{Îõ¿ô&ªJ9Ia¸K_ aÆ[Oh££¢·—ÌéØÇ6¯þnZu§x¡–†8åîÍcJ‡¢×›Fî™ÊíY€û{µã(bp&¥q2 ÷8N&±šAyvH½)ÈŠöR¸·‘%–* úÚ‰úÄ2’@\½¸¢ ‹Zâ•ómëÐC,„³Uëd >G¯7LŠžáyY•ýU%<¾4F"ÆaÐVE=S8ëÝüý »sË:÷GOȤæ5VÏÄø(’ºW`*Yè#ÆIº«i nUn„ù¿¬2sɉ!’âdÂSèããÅÇ´>eâ£4¾äQ%lÄË›} 0:[͉ôž\™‘™)¡ãXôöjL!Zœ°‹@²1Hp†  zµY¦¤ vƾ-òòÊ49YUx›Œâ¼‹FoÔd“$n£ª4Å¥¢B™¿žmÕWö’©¾*™z%h³.Œ'À?hÏäÆ>AG$Ç î3#Igγ»] •ßf¹á—€¬Q—Ê»ÒȤ Jêö¾)lŸI„Ònú¡ÎA¸Ë y2çt˜²Ó‡XRÖ›2w(§É­ÊÚÜß‚zf0ÜbUÑ á~¤¸·¾áÖÍë#"ñsÖG ÀгÌcaÈ_¨–4»!Äž'×½¯.=–/—}œ^Xö’ù„êþgí,õmìx?7É9Eƒ)¢Ø×è#dìàFS ;Å~äªÏ:'ÓÉÉ$öÔy÷Û{óÁáÔA˜ SÉ]ûf;˜AÚÒ‘(Y7CöîìÚ$õøÚ JÑŒz$E õs“eð@†'24–)£¡Ž¶ž&DU‚?Ä s%ùƒ5‡ÀÅøx•8U©˜„*MiV¥xú(•’ìÿP)ξV¥ +p”ÆtœŽ±VM¿³8Aúbű>8Q _¯—¿/Ôï?¯¤P‚endstream endobj 517 0 obj 1635 endobj 520 0 obj <> stream xœÅZmoÛFòÑ¿BH>4F¢5÷}·‡|è%i H\[Åáz.´DYl)R!)¾Cÿ{g¹/$Å•œÜ]q0ÃËåìÌ33ÏÌ,ói– ”H ÁÁÃ: >HëúÁ‡±&~¹Ú·|‚õ(:ÀYlF‘VT¿ÚgM›uj2H*"ÈaìPb'ê˜ûî]€ã`w±·ÑêI°Ž9«Úù8"$dé@ªW6­óô¶paNcÁŒ]Ú4Ö¬.ª?g xŽçAÔÛ­ó"I°‡´p é“ ]UO-YW{+€p$X€?/§î‹âøh^5È¥>—áÐwåT‘²ª·iÑ¡”âc‡ðÒ¥§á¼ÜÙØ”ÏB9á!fÒÕ4×uµuï&ýÞëÅ›w:M0ˆ t{ãi’I9 =±ÊšeïZ 1hI“@ ÉÍùÔÜh’ÕY³/Zƒ 1L<Ÿë¼mmt4 ¤8ŠÂõ?þ´pA¡z‚þ@ôL„í§TÇ7çû0­½Ï¯Û´Ý[-’FPWÕV}Ð’$¡¤µABäLlR‡6 b¯gtæó¢éµà(á¼9ë#­‘¢tè¤XüÛLN‹âÁYgŠCEˆ€¸o¯®<ñ ‡ØruÛA½ 7ç/§Ø¶Õ]‰V»ª<âa1dÝY À0Ú“µuÊ÷2l%`û•¬®+_‚^½mÖ4éå&0'!*QªUžÞ•UÓæK›Ós(•ˆ “@ýêhf§«UîéalRÌÓò€S³ e‰®#MÇÒâiG´ôÆÖûÒ …uf@%ûvëûië°­VÝN:)1-¬R†œO—­“‰Y¿³ 0êq@HÓ£-CèËJ<-òÙ‡&R™8É<¿V·.kÒ@„ƒ¬± OêcƒC C¾Þõù·ØXú‡iŒ’Wy³ÜûhËø)ðW]ïêPåR¨Ç5i\Á¸ÞIï/¯lstؾB3©8-_µÜo³²í‚¯3X€¯’ÐlþÍuFÀ…„'ü‹ÂgP@ .BPDã¼ýlU”„´®\‘‚~>a£~a“ÖoŽ]Ði¨0é©Ê¥‡ …ÇB)@ ºúòøôæ&¡þIðÓ|fárÒºèÓÛÍ!š C žöåäs^®»é‡eºo }19PŽŠÑQ³ov™Í ‚“@ÔyÛdÅÚ5Œ„î96½4 Á*ÐRJbBÀB©KF ‡Î¦Ž§ßª¿†då4°plÖüšöæÔÔmÂmƒz¥¿¸‚­«¢¨q‹ÐÞ~Î}q5ö%C—\xwÒåH9¨$ƒL×npà¿Å·^ò ÖÆÚ?Ù¦õo.ÀX?0Zó!HÁ*~Š“b´ óÓã«”gÏžÅôHLVžtÁñ6¨H½—ÇÍTÔ3tu( ¾uqÛà‚àxƒ…âFc  sÍÛ¸¾¸¸xÜÞë,ûÖ‘”dÎÇnäj^ºìç<Ðù;ß·ö× 0a°ÈÐUüv"3W^êÆŽ?ã£RÏŒZÊ  Øwo›Û_®!nÎÿÝA$3×"C+š]a¯SÇotíÐ2ÝM49éx§šøà¨¨užö¢tN ¹>/×ÁæoM`¼ª\¾¸ß–ª G•;d>ð\ßáeÏ| )Æè8ó6”îïX”:F¿JW!Æv 4+SäM; üh¢íŠtñu°fbQC†&z¬|hâïÝ:ô Ò\>Àݧ›Å{èóV«óoôí•,ÎSì‡w¸ØØ;Ü6G‘t=ïHtT‡ úíà aèÆ '’â&þüÿ7ñçÿÄDHô,]n¦ÇöwýP/Dÿ…#–Hó!ºP»$Õý5‚-榦»3{„ZûjʃOWÙíþîU‘ÝgE7‘KˆÙ~ÚöIlª¡Œ‡IªÑ UÞi°Î H¨<<]Èpz·ó/öÜ}ŸŒ¥Šùó½³õ0W¾ÆTa–ÙÓ©—¼‘$'Øé¾böóÜX|¸SJ”~ºc§{«H ô7Äs,`@ât‚Çò*×ùÝ«]ÚnLPw€èn’Ò‡^7Ã×zÝJ|É‘?i’S‘ˆð{]PH ³û@0×dÅ«†øÎ~}(¥'«H÷ÆÔeiÊ¢(…‚hî!ôã¨90š1æ šá®Õ!ü»;±iz~e>m}3nC¢¼s1¥ÁÅëܦém5OÈŸúΞHÔ]…1âeùK·q–{†Iˆï«H¸IîL§°ÿcW«lî é0ôˆpú/Ó×7€½ÑæÆBƒæh–Ø!éÚ}nøÓ\>ê D=bÑÏ_¦{¡i¬ó¬±¡H(†îG}fÒ±*浇éò}ø¨> W4B¦ºJÎWÓ Kë"Ïê©þUé¾/On07ÿ¥”˜=»Íœšo³ÏÌÏÒȳ÷endstream endobj 521 0 obj 2651 endobj 525 0 obj <> stream xœ¥X[oÛ6~÷¯ðP MЊE‰[h×vC!ÍRÅ0ƒ*Ó±:YRtIûï;© MÆÉ0øÁ0EËw¾sóõÒGxéËþN÷‹ëÅõ÷gÃWº_þ°Zœ]b.9â4 árµ]¨7ð’pºd$B1œî'owIÕŠútõu‡3·V›Å Cò „˜FúìGy!JÆú(ËõÛ˜#3®?Vê4ðad¸œ´YYôÇb,`úøh“,o䃳Kin fSK³=Bâx ß(ûë—¢IÛ[ÌPŽÖµ;ÑËÆ(â$ЇMšÏû» h<¨üÒµúnÈÆ»í.ë(ŠÙ`s›í…u؈¤NwÚJG¶em›ð{(cƒú}¹¹mÕú&ã,ÖG¢hëLôfypÂ/=ŒUXì“6ÝeÅ•|Æ(¤ÆÌÁ¦i¶ÍĦ#AŒðxnQr“‘(ZzAAÜ?½pÃåP‘–û}Rô B‚||Ê³ÂÆ±¬$#û¶aÊöV=>aE  3JÈŠ¶´ô¥e±Í®ºz$¢D@ÅHAJ8ׯB÷ýž:²€Œ$Û­HÛìFäwýÃE$´–7¢®³ŽH9AØQ~ÎtÙÒ¶u¹· ©ÄxħˆúÑœ –{,B„øCŒ·Y.ã˜"Ãcõn¶]ŸØ'UÕ”é_¢µ³>Ø:ø[/¼ÇË7xú“8J  /òêBȨ̄;;gfqŽQóâòÃùê훋?ߟ¯.“ÏcHJ?¦£‚›¬.‹=(²Cq“ÔYò%×Ѓcql8膯(mÆøý r@)À†Î®qàçtýJ´•u‘ìÅZë0©Ñ†úl4ôjŒÙCâWo/Î>\Øå0ÙljÑ8’³ÜÚ¸¸ËIW×:^À¡ka~@øB&cY(ZË— ˆþéõ ¹ý³ŽÓÓG‡iˆ’™ÉoÎß=.Öq3’Ù¨oURC,të|l^ÐM#Îzÿõ±bm]—õw‡Þ¥¬÷ÿ$ÍK ÊӃ̙ÀsÔ*‡3U 5UYlFs*ÖóÆëÊxo%±‰§Y*¦ó!%U;5i©ˆfšöf"$'CFiÎÝÍ€gg€…)´¬DaUÚÄÄÅÌIê9+²­ín-®»¬V-Û |Ž(7C ÞX/uM—äª?™ÊB~nJGk¾Ý¹9hq4Ò¶ªË¶LË\O"$;\cÕK;ÅGÒC‚ ‚ŽL4]£»°ÉzEÁIžÙÜ×§*Õ0'Hf˜J5z™Dë¬òÓ‡‚¹Ýcæ5ÄÏû> stream xœ­XQSã6~ϯHa:À0‘eIVo˜)å “G(ä^Zn_`šØÆv¸koøï]Y²c!;-“‡ y÷Óî·ß®yŽŽÔÇ|σ‡ÁÃW¶úk¶þ2ìc ÌgÁpz3ÐOà!lÈ E!Xƒíû(+e¾3½€cNàÔôz°Í‘²ƒ3jlÇÊD#ccŠçæi,¹0æI¦­þNêÃQ§Ieöç>7æ÷²Œây¡~Ø;WpC€ÍH¨`{„ùpèù ÂêøS–#=ŒgÈÍåvå#*ˆo\gÑ­œ¥Ë¤¬ĉÍOûêâ‚×@²û¹qðÆE”\»Æ³ßNÜ`ãÓãIee(äÍánÑç¹t\î|SFÏÇB\ÝF ~*¤‰Úvµ ÚBÒôìà×£ÃÉÇÓ© Ò&è,],Ì•ªÔ/Ó*! aAë‚gyœ˜úB|4´òÉM¡œÒó&µ) ¼oàÕ )6²îü]¸.²<½Í£E•‚Fì»Ó)ø ™J„xUB4lÅaò6n𾈓¨”ná¾ÄåãHæyš¿ÓI€°dºõaÈo7JÆ/wñ\ê&4 Ÿt%¡¿l¹,²4Ñ÷ B0¿)”ƈCE9¿±›Q–éì/Ù¤.:§ˆÒv5›§:6ñ‘¯û¼[r™f2©•„57žžíÏÜLÌÒ$‘3¥_æ&¾P4r²íQäs!:Ê ÿ<lonnzž·³¥@ …_ÜÛÛ3"ˆ-éǤ&æ…”?Á¥Œq[0‡Nh¤!‰Ë8šÇÿ4ºÛ!¯b‹¡G =š €oàYÚ3žŽNÆLÇ“Óêú•¦0Ú£Ì/9”‰RÊk·뢳Ñg$ŸGÉí8iHG¿_D6@á¯6t`^»N7i.£Ù=ÍêÚ¤ˆ“Žö€1$~ÿO„Ð'õ;4&SJÑn}Ì0°×¢üš¦ÚŒ,ï¤Kß>DË"NnÝèôÑ›¸Çh¾”¦–[ƒiswwרkÓä¬&…}ŸƒCe¿pñl·V­¬Ý2a¥¡£)L[é¡0Q^\Šc Ãý¦0P.÷ŸLµ(%Ô[Aœ$-]ìk1ʯ3™Uyô~~U6~6•°«q4í+Ïþååß4ì'ÝNÕáL§Ë2[–n¸ŽÓÈL·9U”yÍLËG‹k’Nò_ö ³FéÙ8í–ž¾25XìôÅõæÑêòÈ c¼AÖwÃZºÔýp` ÎK‰my–ØÕh]›Øwk3ëAwPÁ‚Ùd_·è]T¸é]‰MËÚºpt£¦«UÌÃɇ§ï]}@¦CA•b¸oÆ´Z¬×UWIûú1Mæk½€‘áSNWpzõ‚ÂBJÄ‹z±Ò…–±o¨hIÐHl¤y­êGb÷NÃD5|öâ¾ÜWõf5¶öèÖj<‚þÁ.ß¶ÍÞcq@®½zÝ@ÙÔ€W['tE­g˜_-Òë®}UgJ­”’×/ /Ì"oªOï7’cÏ"wIX»K½v . ™_ÁCUT{ôèùv] aÆzFÿŠ#/ŽÎcçÛ±.ßÅjw§Ö{€^}m¬÷©¾E˜-uƒ-wõé\ó;µ¨wLG Ù× }#×BÓ²#WÂWa½®‰í5¶ëþ™ÌkÝ´¹ÖÙQõzR¸§£®ö9}4—…× "È‹•^SÔÿ»ä–¾¶ŸTz¡{¶ñwM5”©µ3T"õ64W«¶inoýNÞ¶:ÿ²#$DêiÊ‘¯ÏQªM‡¿Ôç_Îc¸_endstream endobj 531 0 obj 1373 endobj 535 0 obj <> stream xœ½XÛnÛ8}÷WèC´fDQ$Å-úÐM]À]#É&.ZÅ¡m¥²¥ê’6Xì¿ïPe)¤c§y02"ggÎ\È}á¾£þêßùº÷£÷£K™þ™¯ûN{Ç{}s™×Ÿ.zÕÜ'‚õ9¡Èéº78YI.Ó£é]„s«¦·½GJ <Ìh-û¤D1Â1®EaTïÆaŸ‹Z|–TR×A„½8ÈÃxSŠ]ĹËkñG™a”©Ç ®°ñì!Å”ö‡®‡<¿\¾ˆSÌWj¹GÃ< 9N´~Âc ì°”a†NµlxU­~D…Tß}q×gõ÷”hˆF„€uŒg•²ÅlP#÷7L'wÑu‘Éô6•‡æŒ8~ýyvTÛvŽ•¶UáÓñ±E›LÁ!kÓ_.G%P†|®#pþyRƒ§¢ÌøŠçBÀAVÛâ±ÜÄ÷²vCÜóÚ_½yóưy8³óéøìô²Ô^:…ºíÃáð…´ Xµv"D¹àßúX¨cµ’*õ¾EŒ+[ô(Å.A.pu_• _+ZP¯¡…ßøt<˜Œ¯>(œ¥zÅI"À$Œpk׉‚;éí#މÜ¥”ÔIIÓyö)ŒÊÈaŽ„ÐVObMQWpï¾äc­R¦™N^†˜ã7¦Š$‰ÓÜž¼¾ îñE²€ìäpl–E°,Áy>ò˜fæâLæfþå±ÉÔ|%- iÐ%^˜»ïâswèÐu<ðÝ— %e1RpˆóË·¦îó“É[ÙtômZJ‰‹\æk¾šk¿œþuzöµ"&"”wù]¡+­>í¤E˜f¹i5 ª8ïõUéÖ¡-Î/jJvTÚ¢%ÿÖXlnM•;N¤ûT·>çÁwYZ†b$lF³ë¯ÀŒælð3\'³#³€. ™e¦#ƒüÙ>ëžEûL튛 “·¦¥x=˜!³4¥­ùNt¬<˜ÇERA(LL°v´y­!IËâ|¤Ðy ®¼S3BµãöT„®öiº*¬™!Ö¼‹Ss÷Ž´k–¶Ž©XyÂaˆ:d¦«úVÂïãC¬Ít ¢eœ†ùªœ(©:ÆînUüåtüÍPüi<D+ò0 ó‡ªRaUeê†gŽxÚÂ{3qnå"(¢üº½G,ÇÓÆfƒE¯m Ü,Âe‘–åìè]Uó Ûø¸û°6×ëºttG¦(ܘîÎÍ Ï7á&Huη ºkLR™ÉMnÖ=﹘‚‰G%û9î&¾ÓSÜV`9ãÍre–Ò»uX« ¯4Ž÷¿~ýª‡e˜Ø3ÎÜqt3ã ˜q»E÷±¥#ÖoŸ†å¹þÜobë0Í:_4€=¸$yù°ÈÍ'kánåS—¶‘fiÃfí¡zΩ§ñrd8¸eŸ_š°nÞÞx`¢V6TÊŒáü³Æ—Ì$éO(–NažgtöÙ45œL/&ÃU%bªÜÚFhQ’ìZÆw×A~]¢2IhëóH©Y ïQ¦R¬m;•ëú²öhê±5û'Ž\_ƈ- [ÈJ¢ \ißï8*ƒžè¶Ù˜Ô´Ñh ÛÔZÁí©º®Qärñ’•ñðd8±ÜøödÔFNìÙPiûÿÒ¡Aßò÷Ž|]žûG:= E "öçÇ<2¤;Ø|¼/AÔcN·v?/AžpBuS7d7ãª'uÌ^RÓ»]‹ „ ß^dnªݳg‰œ‡‹°ºÀlèÓf6„3nv’O #î£ÆÇßÍax²uE_DÚUnß!ëa»±üOéKÒx™–·³ÇnkÔÛrKÕ…¥Ã¦bc$Ü$…啯ҸXZ1Ä P/JžXŠ€“jy}H)°ÆÆ6~ÄE®ÓyÎj†Î³C ”ñM Ý©^iC«w-ÊÔÂÑ´ÿwOýýŸþsiendstream endobj 536 0 obj 1509 endobj 540 0 obj <> stream xœÍX]oÛ6öè_a´m‘šEŠô!KÂ…›dµ ]‡@–éD­,)’ܤ-ößw%‘²Ò[½vXá—4yï9ç~Ð7Cá¡S}Ôw¸Ü n†¸¶é¯p=üe>8|1 $˜Ëèp¾4¿ÀC"Øù`]Ÿ\Y)ó'ó÷0bÌ ìš/9ªlpÅÌS¶ÓÊä!F8ÆÊÅê×X ìs¡ÌçYcuD8Ñ›ƒ2J“Úì"Î]®ÌÏeDqQ-¾®ÜõÁmFüÊía <¹Q¿¹rõîq}F”WÉÕ&¸’Õ õ¡záY탸àúÂùø·y}C>oK–êTO´§^œLÍ«‚8Noe½›ä0ª1{÷äKeaî"L¼ácÄÙÞîÁ¥Gõ9¾ƒ~}NÅ"¬ýY»C XL¾Š$-Ís¦WIô¹ È ׄ/>ÕÞ1äpOÛ²~]‹ÜE.ó5ÒÅ&ËÒ¼T¡ä{€ö½hà6.¼®›BZ”²Çµaº^+¹õ!,SïBÆ2¬±#1Ö&£fùh+9ÚêJÑ ¡ÑM6qœÍÕ.$w{õÙ›étfºÚz„EëÑ*ÍCin]ÁÑ›‹Íj¥ÊKÏû0M–‘.#êõ™Áôà+” áÖÖÃÃCU&p¯¸ùˆc¢C™Iù³*IcÚ½i7+ /¬Wf™ £ŸÂÚI ÷ íä$ƒ8úÜ.³> `ž€˜rÒdqz|öâÍñ‹±ÊIÊ´Dfã“ÉéäÄHÖÉÙd>9žNÞÏ'çg³†eì"ßïgÖ·—Ck‘Óú¯jÃH—à_áµ)ß4Ó8ÙmÉŽSDY_FISznÓŽ1¿[B>|xpp`JIÞeARh)鵎¿K‹†{?‚Ìç¤Íü"ZGq`)p¶ìܦ}§œ_T”™8a…OÑÈ÷{u%J®Ì¼zPAõÀ<-Ëå*º3ñzL—vQ§é‡Mv´-Üýz ˜F#ŠÔlE­w•ckÏiÑAòüôòÕùóñî¾Jä.s÷WbÛÅ£ùvw/5—¾•:‰@œÒ®+ö4ÜÇŠfh-ùåÇ /žý^mðA³.ÓA!„Ìþ0ó¹m]P›&;s¨#ƒûéÐi„Aaº,Ò²¹Ãá ‹¿ÑŒYÔ[Ö} io0ÒàGß´- ÿ iJ3m'¶¤?LëêÔG÷ º½ŽJYdA3'ô‡Êí ÝA¤Žeib^”¹.Š={.‹M\GÊ79¬Mкx °ŒÕØÖO:è”§½šçÌDºå²j×°s—–i貨†“UBï4“þ$×rßiw5÷OU•§ðWôòZšÉ»°C>DØ&tµÊÀÕ>aã¨(ÍÁ )¼žèþ¥†MKÏ´¶msí¬RÒ¸®Ÿ“#—°j<¶fú÷š¹O£¸¾ Ã^hÿê§·‡¸Çᑨ\†:¦Ÿ r|O ð„¨}áéÝãê…XÇMç8T»På¦Ð‚ðZí¼JaÌL5æ¥ Ý ~Þq¨—ïÓ… ¸í¤^ÉO õ-•+ýî'uT}å[«e ʵìȸu°}Vy.t¼^Õ^á#gVyºVÆíKÑžþ»ÿÑÊT§L‚Eܼ­G˜zW©®þ»ØÙ|ÿˇKçE¼ ÞzÈØögPj‰ñe#ˆ¦¥ òc÷ •ævf¦ˆÇVííFÁøÓÑõ)¢.°N"M5ñxµs<þ:¨>ÝÐùüendstream endobj 541 0 obj 1408 endobj 546 0 obj <> stream xœµXMoÜ6rÜ_±@±/-~“zh“¦Ha4nìÞ‚ŠLï*ÑJФµ“ýý¿~î*’çPø`˜"‡ofÞ¼úÓ2Cx™ÙŸð»Ø.>->-±[‹¿Šíò§ËÅéŒÙR#-ˆ`ËËë…?—T‹¥¤)XÝ.Žžoòv0Ýñå‡,b,)캼ZId×À‡µ—v‰#A%Æa©¬Âi¬VR‡å×­_%¢’ÆÍùP6µ[&HJ"Ãò 3äeÕÛ§o,\°UöŠ ‰4^®CL¹íÿ°xp¶8:==~²Àe’Gœš÷¤$,ÎmY'+*gJ‚eŠˆ·üøñã§OŸ:óöcòûâK]lº¦.ÿJÇ•@˜ˆ¬¼¾š^xž¯MÑìêÁE"IµŠû³ë:ß܇Œ`pNÏ#›<øx]Öe¿1î¦eñ’œ¡ I-c83g„C>ì…Fn7eeÞMý»ÍËÁxE™`÷úU7CXä:-Þ ðíñßÂFÀá‘Â}‚ÌM¢0”[Óì†~bgåàÖÎ ]iüfTÝïÌt÷USûU”ŒœÜ¿u…%Ä$ +¯}´Æf,ĉ™!ÿh1(AD¨˜‹2&ú€CÓLVM½žM±c¨Ìhëò&‚Ð:îßµÓÛfSØ™¶é†@!Ä~ó4#¦ëšÎÃÀ ±ŒÂpµþ< {ò•k‡ì%é¶6Î=›âMÀ@Ï1k}bäÚ#1s‘h®§ÏÊÇ®/}†Æ þãÕo/_?óਆÜqŽj} Q}šªŸògžj ÝÞÆùÅÔ—9 I‘a÷±!% é‡‹¢+[¯[VFdâB±i&×¶]³îòíT=†fJǶ+ëÐ1 âˆÕ¨qÀÊ™„ÌwÅÐUïf _w#HùÕŒXüyéo½‡lLXì™ôäDêLß6µOâ DŠ F¾-‡§FʶñÝ`¼û~²ÎöºƒÓe}U©WööxJIÏÝZdâž¾ÃÄ=}?‹‡ðØxFe°²ÔãžĶ„‘€¸ÝÞÝH#½ *”âog!oÛ¾)>š{lIŽ(‰mQ5>oãÚ¿£%5mè#i-šº6…M‰“†SDñ{Ätm†‰–ÞŠ;ªíÌMÙìúêË” W¦‡BïÓ ÖßO(Õºé@d¶00J= ¥ä±Âä´Z­,\?LÁ’ùìÊ Q²ÄÁPãæP›* “ *LšÄÍšŒ‘àukcÕŸØ/’!Îã‡Wu9”yu0‹áŒÙÉuœÁÑXÇfðÍL|8¯°ÖHBùBœýTòb×Å@B9(ÊöBã.cHíöÑ®„ÎâøÛ¦= ÜÈtFÇ&æ ÒT»×›Y¤0` É£—ý¸cPfJD@·eU9˜05ë$&®|Å”Æ(~º¼ð†M˜M·ÛA†‘")¬Ué‡'0LU2Óø,9PÄ\³q@«”æÑx_øt °}e´6­hô$Ì—c2®ß½KÄ»ñ¡×F—4Pù‚æqµ T†¾—ÉTŸöaäÁE:¹?··ry¯ „<½­z¯9ÞíI- Ô³¯+žÅ7¤w¦Ïòz½ËíºÀ â‰ÑëD¤w£Ï”ƒÀñðÅ®m}ÂD†T¶¯(sµrWACSIá>T'!y|ï][„ˆI ddäIHá骶‡áy©Ç\E <%fð òk¥SQø(1 ÔÌà™ëÞ Ä–ÐŒªøvù7”èøµ åʵÖ{Wf Œýæ—g?: ¶¹¦êù%dkü„€÷y¤`”ýA9 õà 6uZ!nö‘H©‡;Rü¯Ž> stream xœåYÛn7Ò7}…§¨hÞ/ÔIÜ †k»’úÒ"ÖòÚÚ@Z)«u.ýþo‡KrtÙ•b-P ðƒz8ÎÌ9s¸ùЧ„õ©ÿ‰¿'óÞ‡Þ‡>kÖүɼÿbÜ;2&ûŽ8͵ìïzaë §ûF(bauÞ{örš-ë¼ú~ü¾‹ŒVãÛÞ3Cü8L«¸ö³_RD ÃX\*fq7s„YãâòÕ2¬rJ„É8«‹EÙ,sb 7qùU^gÅlåÿp2”Ôö q†Âö@XGë¸$Ò6æC/ ÷ÓÂzCˆT9—ίóÏu4c›Yà‚8—ÂùùⴉܩŒ‹¯Ã¶ì9b q<ÚŒ½$J¹”­<¬0' š°€LÐtâèa¹\Tu~ÛÛÀR¢¹2ý OóUã˜kÂMUø.»orÅã^åÍyL%­Ni˜6û™Ç21ËÊû‡ì>oœHNøFÚ¦Yðbˆ°x“¬êðRå“Å}Yüî"5aB¥¿-BGPb¬MQ/«Å$_­¢9#†òd~ó¥1çPÎEþ›ÍÎñê$dSQ×{^št‚¡Œ÷¡cS Âsáû%¥iù~öîýâ¦énÀ–`r»C¸!Ô™ÙmTÀ @ÁqЩòѺqönCHˆÅJñ-Ý ÿÉf”—·±_,Õ t×çѲ.-ž·Û8„Å‹“‡paé𘳫óήfŠ ’ºúÍ]ÀÄlvƒ|ºtH±JvЧBåev3 -$‘BìF¤‰]—5öP«Ð$†ã9.à®®(GgãÈ}Ü`z2¿á !Ô[Ÿ_½ˆ{™îÐíºvÇCÆSr'‹ù³º`é°›Ž1†ƒaö%¦âJe"ÁNŠNÇûzÕzêÛݱۧ>Á±°·ÞÓlÓaùáÄÝ-ªùñ K`¯ %ÅëŸb+Š5l§‘‘C»<ýå¬eù< ‡|ð”ò´É/Œ'mÓòmËÑøt8n[&ŸÚ eY–1 \½mÛurvùª}—ްçóyÛîm'+rp>¾Ù–)¼F¨•œã¤gÖ¦Îh̬—fTêèt8•¢.‹}kÃÉ—Í‚@KëÐr’•Ñ'wæcxˆO"U¨¶Fë/ÝSÂàöÁï L— SžÇÂí¦ÐÂýaÊm_¶íVôÝ¢§±T»N Ì9AmI¡ƒ\â7€O#¥Š2Õ @Š#séuî*è IPç® l5ø8Êî„ðüaU§ÏVó¬žLØ$6J'Þ;§N ‚tó§ÐmÐV€Òûy ÞïÅë#Ú<ÐV©‘4è Ž*•w«Ôéä?øh1¡áAÐ+ç ÏÆý_{þço'cãendstream endobj 551 0 obj 1808 endobj 554 0 obj <> stream xœµYkoãÆ¶ßü+ô-Ôbæý(Т^§ISxS×VÐ0ÐmiK‘2E­³?¤ÿ·—ó¸$Å‘²[ X`ãá™{Ï=çÌìËŒdtFº_áÏåöâåâeFÝXüc¹½[\|sG©˜ÙÌ*¦Älñtá¿ 3nÕLs™Ý^¼½^ç»¶h¾^|¸€AJ5‡Y‹ÕÅ[uc@P%ÃØwÝÌ×”†¡M¾¦6£FÛ0ü÷e$ãšÇÉy»©+7Ì2­™Ãßm¾)÷ݾ¹ct¸ë976“t6g"ÆÍ¾¯·…‹ÛÕB…u¹ +òŒP ½­WEé†uÆYœü×[·c™1Îâywͦ‚£¸]pé‘ñ'MñrØ4nMN2e¸À,‹M<;œ' ÜTÏáì”Ç y7¢2Ã9Ù,sŸ8’ NbÌg·¥™"N¬ÛÇP"–Y)b’ë§ð½6&Îýñ§›·¸Í#1ñoÉÃ×n²€a,×y“/ã©'&~ÒÖ!8µ$fó©n–ns®ÔêBá#åƒÕÛm^­|(‰D(mªi¨v]„ý(&LÕîÐN‹øèBfÚvöCwt“Qad{ @ä™`†9Æc̱Q˜ã¦ÈWY€&Ò„áÅz³µd +·Ìý‰TÆ,B>uUW«0JT\ÿ°j£Æ)ìH«âÆu®€¿KŠ`(Ë]¾J5‹€S³^ïºnËl91O?TSØì:l–Å¥›®‘Ôà¶| æÜ@ŸÖ|ïC'™lí¡©ŠUh:Ëx TûÚÂdJ¨=®§ÄœÉä‰f)?…þ“ûuÓ4EY„ªEâR§0Ê«6 Da8S—Ÿøé¶Þ·¡Ž–c£ûÚÚŒ1åy Ô^ f÷·@Ã$+Æm_ñ_qµºùOHŸ²6BÉÅ} [“±”û>…ÉÒ`a޶ âˆS7zZ1<](×:Ÿ9äÒJcÑué4…רÜ'­Mï¤×y;¥Áó eÍÀ™~núVácIð㧦ÞFJ1·`gî—Ífx@Ó¬sÛ#þP?î³h,&mˆ¡g?NÁZD#¥:©d×ùwiÇbû 'êÐm,‘¸Öë¦]O÷UÀÅiµò‰ Œ²xík9_„zq`o4Zý¶åÑôë0Ý"ºS•Çk:ý9—ØC ¹6¬êf›;tÖ]ÙŨJÝ^ ·ê]=¬%¹9º›A1{|AöŠ)ü’oweñ‡$£Í)|.as{P•c^»^$)0G…«”õŸ8; ÞKsTØúP®bÁÐÞt+HHÿ‰ìk¬UÒ#œ©íÙ>=wUüÿò„ޱN¿àz> stream xœ½ZÛnÜÈò¨¯PŒÝ$¦ï— d³^'xcg­ q`P3”Åd†“3VœÿÈÿ¦šÝ]Ý{Æ’6YøAp§Y]uêÔ©êùpN*zNÜ¿ðwµ=ûpöáœNkñÏj{þ»«³_ýH©8·•UL‰ó«›3ÿ zέ:×\VV·g_~{[ïöÍðÕÕ?Î`‘RÍá©«õÙ—ºrk° J†µnIVŠkJÃR» ߦ¶¢FÛ°üjçW©¸æñázßöÝ´Ì*­™ËÏ›}ÝnF÷˜ÍΩ®•“Õ—‚Ãôù%Ó|â “iœW‚Yöxó©[¹UAá9ÃÂê­7MU–èhDßµÿFC´; Z]wëà®e|þõ´­Ç-j_}?=E*…lVý¡Û‡S bÎue5ǹcQK*Fà\ÜTZMÏÿÇ?éÂe lŠ÷$Ø'-¾¥^M›¶Ýû¯ƒ·æAV´RfñìäUiÎâg»É/¦âFé…~z¬²”Òx„÷á1-”ލ·GN$H%(œˆš'ç]ÛÝôå3SIõ€3¹†-F¶d¡¬˜ä`¡®ÌÃÜÕï}(ó47Nx‚ðÅËo&€†añ÷,Ò2ܲZ´13&Y~Ïò]YŽöÄÄdLåè›ÇÎÛ2’GÆGȶúzÓq“¡îÕ $úâïüXoʱ¤D8¸7z¿tÖO>o4éøqÝÆOEÅ»}»múþ|`k+þ³œ—)9tä¸ZÂÎ?á¸ã¾Ž6ÏÔ‡Õ”ú?ó>¤0jtÀ?úëiÒÑx‚Éîãd,¥}"â›n]v‡ž<üóbÝÁ)1 wP‚îh|©+"49ã‰ÙïVýºù|>¼öj‚iM" öãþÍjhwûp2£U|Á¾_úÿ²H8úq´8Qr¿j0^Y­;U4òS`ÑPêEƒiCïYzŒr¿îT -U|°ùph£rÓœ \Ž¡E€c‹³æ3•"Ožµ=«8py ¨éò>ü3|†þÁOj¢ÿGš’ö5«„9éúÓ$MX%õ£•Ê]Ýîßzw]w]Äñy†WL(þYè-·RB`ö¸7ѯ”Œž¾ qßò‹É>©cùȤ,â’`lžû‡º Æù4 |`BŠÝÊn˜Ð0‰rÎ`CßSM°]1:?ˆ$8&‘¨€KL´ü"¸×Ú¸ø±]ǯDã› í“L¶a:“¯¾CXrâêŸÓ7hÅÙ)FÜߎñ ìÑœ0Еç_ Fðû½ü’jÝØŽ>PŒKÔÚõ8¶ž¸‚¨R|}È@ Öó$À’¡&:N¦^rhZt£—à®)…Wí°:lÁQݪ™Þ. |¤ ž§‰õ³èÖu3N•ÃcPYL ê‘ 8áí—/žÓ·_M>U•‘†ÏN[€?3$aº]·CFôT³rÑ‹L3‡,àTäüÐhBcª5J¦0¨~0Vø p‡mìµw­ŒHõM½Ž+e´øfè·W†*dÌ}&úð¯·Mçãeœu|Š—U9êôä`(§+¸Fœ1ôXÒ å·,(ÀR‰|qõc, qð—ï.ê$>ÁŽÅB!•vtnŠYȆ¢oN…¬´ÅÄk ˆ™sØ )ÄŽ>¶«&j9»Ô®úíöе« Ó •q¬†å¨÷äàŽœ ¡‹àJRÕ Aœ3R" -–¤ŸH4¸ÏO£TŠL/@à&Å.Ð áÉŸEä–Q Ñ›yiuEl6cpCŸÛa6ÐQÚ‰&}">‡ñPo6SqàŽy(F©ïš˜ $%CF^8*Öa¼âÉ’q$äL|7Ýxð¥…A•ER-û©]¨K  FücÛF<‚âHéã®ï7—Á4ÎãûŠ-Q l¡BN¹›ÆI˜—@˜"Øê1 ÒEÏPÀÝmš½·G€æ5¨ýWý0]†3@É·H^(è 0¥0÷ŒÅÅb©[˜ m“ ÈY©Sa¬W«Æw%ÀJ†vd.Ö¥šq?„sLVDOdò*}¿ô¢Ÿ(¯¾Ý4õàcÄÜÜÁp±Œ{{³Œûã< Ûõ³Ø¥ç25ž>“©‚–e*½W  æ¤rÓþ,æY’FýæôTˆËæà+½gK.S5µY–ÇŠ•U„±@ü \}"?Úí®Çj»¯% w Îz¬«à^XPTž>A¡tß,Ùô„0:çÙiJÂh6&˜é"“Äõvض÷©/°†r9ÒÂðÔ‹¾þãËxnDðÝ·x0¥¨A½ Z$°± î z†‹ùtblÿG`R4áõlÌ…ÅBßþŽÁë¯yLÁ‡6ç¼f]׿“,/b« šTê}¾ñÈ2²$·k¿¡ €«•xßGâ·¥0¸[‰½ÆºÝ$ÊÖ4=¼ww0†²  ÏtlÕA½d’,µ(Ÿ]Ƀ€Q6)ÆÛ]É4'¿SÞcpÖöT[ÚޗJ V²þêÕ‹˜i°»í}{2oÒ‹ã¸5ɦ‰ÎîI(Ãk’‡Œ$±CÍEÀ¬ =¥s7BãÈõ›Ïc+ngvçAJ4O‚>\ÅxÒOªÜd6Á -Ð¥AÜ¢ â3ã¼bÂ'g‚Ø&L÷<ïãT-µ…IQk‚Šúº °ÍŸŒ3$ÏÇ`b< vW€b]]#q'o³ ˜…|Š“ 7·ËYHvGÞÃAã˜P¶@?P››ÿͨíæÐMƒ2ŸœnNùÒÝt*ƒ.@‘ó>ûy˜`®Çð&Jô®"1œÃYš¦àe©PxYºøÙ¡ry‘ÍÖ@bôþ×À!ÙtÆÝa{nø £>8!op¨ „ZO¥v~Ÿ(—cq¸yl”÷û¡÷#)×Z~äNЙú>Ÿß³±½ßvqE©ÜØ¥‚Œ yÂÌò÷¶ÖwÍ,Ã[÷b̯ëè•™¯ð—Þç’VD`»…V°îÚqêbTŠZôî¶SNˆ‡Ô¸ÙµçS®š2•€ƒÅ —E8Õ;hÄ!( qñØöå"›fQVÏ8¬‚²ÎfêÌüL¡å"˜µá÷¯y"—~IÞÔŽÆ.B-G*) hŠN)5ßÿéÅ«mpËÌ‹[LF`S×áH(ZÞjºûîêüÏgîß¡²÷endstream endobj 559 0 obj 3095 endobj 562 0 obj <> stream xœÅ[moÛÈ.î£~…€"hˆÖÜ÷Ýî’K®)r‰›úÐMaÐe+ D…¤’^‹þ÷Î.w—¤´”mÝ @ ¬Éá33ÏÌÎìŽ?O„§‰ùç~ÎדϓÏSl×üùzúârröc6ÕH "Øôr9iÞÀSªÅTRެ®'O_Þ¦Û:+¿¿ü4EŒ%…§.“§™5À°àníµYâHP‰±[Zåîm¬VR»å÷Ûf•$ˆJêNëU±±ËII¤[þ)«ÓU^™_œ}0pÀTØ3*$Òx:# 1eÿáâ/o­”ô¢ß¼{ýþ`ñâÇŸ_½|ÿë»K'w 2“QF@2Aš4ÊTÎs"œŒj·Ýe-̯FŠ`ûú7«81bˆWÑ, ¤9¥þ±m¹Ú8#:*´r¿xfE"©î-\ßfV&C‚0 Q’h/ùë*Ïíã`"í”Y½+7îk„'¸LQJýת:­wVg¾—~yUUzcP°¦^ô¼Ø€§6«ÍEÎW˜C>ß•e¶©­¤ E™W äÏ‹WkF™D”ëé ¬©`6}ñö1TvJä»Ì“`Ä… Žn,dU¡1N[ƒ¦µ3UTõj÷qé5¼(ªúoórµµ¿c *þwëô7GtÁyðw^vUÁWƒc®[[óHÒëz&:»ªIŽ;º}‹B’ôKû¤‰Rq½Í³çfL0’‚NgÔ$£3ºÏÖ6ÛÇζÎ[X‡Ôÿ›æÿk1€[£øKŸñÚTüñ©,¥×éÉ“>Y%8ln4„ÔÇï½tb‘ͰT[ÌÆïa³X¬šØì ºÎnV—M‰PrÿÛö Š{_Ö°2°’äÐ,U]ºÔD%â,Ô"ó/UDY ž€ýÀÖÌÕÑôŸOžB4Ié£P˜/yLç‡.ó]u-? ¦Q1Ȥºé¤½€ó&Ë·‹h@BMîêÖ N- ±ÏNUV~qxyë¶ÌA"ÛÍçx&éCƒ¼ˆÃ7VËÛm l˜’{ƒ|ç FHHH$ë]åak¶c¿0°”ðqß0­÷ó¢(«M(09˜D{d±Üº(\ñ»e[:å+¿M›º@H±Ïdà¢M0\Añ#÷v6[¬R­úe̲Ès_#ˆ€é«ßp!b4ó«M>mÒ&d ®Û='’6!Û-\• E¶×"”¥ÍŽ8Pi<†£…LU­œ[¡¬šÝë[‡›ˆN©¶ªl’zu9ý+´5 k˜m[f bCV@ ›c²Êt?/ÞLÎÞü2­Ë]69ûûOÎþlþ{qñ~¼ùiú‡É«7ãËBª„yÒez˜ ¾MÆÚ6L’)ÓÚì#¦m{ö]o¬.(J´Õê±AÁw€ê»Ø•ۢʆqª,¢S ùiñmeÅø‚"c˜~¯êèBASÜôñÐ3¸ôt aØ®!íûX…Òîì.Žrò›†J!ªƒ-‚   ¼íCxŒW§ ä‚ÂßVV”Wª)&—WB›oõ}rµÚ,‹ó7î¤Îx‡©›Iæ!u îrK˜>' t¹ßVV”>‚KóóqéÃíyñK¨›~¸“4ã! 4PKwÀÅJÀMQ»ÞžÐÛßdõañu߃—pþæ^Žòï# r†'j´ôuŠ,¯ ‘PtEчV\g UP½÷³}-PpZðž"+šð‰i²;ÜÌë‡ÛùöS~gÎÜ‘œ»øF‹8YG³ù ê "‘£5½'ÉŠ’+âÑ‹Qª™o.;äªîäÖxØŽp‹váÇ­^2>J±´¢Õãõä'ÉŠQ =~MaO`{ù몪ÓrÐþže#ÂfY"ºβæT#‰i¸ þT\Þa•͉Ÿà{¬?EÞc» =ÅBƒ¬’ãu÷'ÉŠ2T>¼7{8Cl²—¯ÜÊQ~ŽîèÛÁ÷ˆüÌbw¿'ØgQb¼Ãƒ“dÅ.*’Çoù)S-ÿÕ¶Èóóww÷]#"<’DYdÓÒ(3Ê”øžaSlþ•Å3w×´ —jE˜³Q"L.ô{LÂÝf{…&e é¼ØÌóÝ¢¹[RÐð„ûÝýYà'¢ýy‹I—ª;C± &§—ý0CÐɇñ¡Û¬¹º7±ŠÕ"ÛÔ«yj5¦¦ºð1ù·içfmµn.ù n’ŽÄ¤³#¡aÄ÷iÔNáÈ`pQ¢F ÔSd *…*p”Ûšc -É~¥ciü%¶k{‘:Ä¡Hí Œ© E?Л([Í )!°9vd*Ýø‚¦Ú‚PÌž¹²[‚cÃÃYçaOÚ<³‡#ªÂtl2Ç,õçë̦Ïm|Yk»¯c0hè&úubf#»ÑÿÑ_ySÄY¸é¯À{›EÕ5ãmª?«¿f.”#®Û[°^…îm'øy0BÆÇê\O’-ÚöøEÑÄEÅòÊ]íû¹ª£UÛxèŽlˆº ðתÍëœÄUmL…)Þ¡™¯Mª:”ßxÊÝÆ–šN‚8 |tÆ7Þ¿öÇômýR,î˜ m¦e÷kÏÓêüÌ tn”ÓÎ)‹{ò­Áõ§Qa¹®±ÊÍa>O³(÷FÉ,õUm;õ· »°aB±Í“ýõ/¾tïKº[™ž>yêˆ×ý«†y±^»£?( …QæžnKñ´¼Ù­Ý þŒ0 –ÙóË2˜ ÐŠy_º3Š’¶uiUŸ™ñN{;ÔJn~ÛH÷³eéÅòþ6Ý“³×ÙÒÕƒý÷ÓØØiºôßê9ÈôìÀœó4úµC ª]µenfsÿ¯q •˜Ùïg¶%… {—ù÷?ô›À±endstream endobj 563 0 obj 2665 endobj 566 0 obj <> stream xœÍZmÛ¸ö¾í¯0Л1CrH‘Ú"@¯½¤ ½Ûf]ôK€@kËklɱäÛæßwø*ɦ½N›k‹I@QâÌ3ϼҟ'”° 5ü¿óÍõçëÏf×Â?óÍä³ëדœäÏÄd¶¼vo° äÙD$W7×/þ´*¶]¹{9ûåS€»f‹ëŠ˜5ü€`™ôkïÌ’$(ÆüRµöo³œ0­r¿üóÖ­rJ@AØ\tUSÛeN”âÊ/ÿPvEµn̓׌¸ÅÎ@±§ á0™rA„¶Ûg£Då*|aQ¶x`ü|&ˆ4Y®‹G{hF´ ¢,'#B?øLiõ¢e®ý£¶êööûVÌ)S P“)cDeN¬Ûv¯×‹OÍòÓÒâò+)#ƹ~qÛ,ß¼&„¼®–«íË|¥ÙºOâÿoÍâ|ú _÷ëo¶Åc9oöu‡;X–A©§¢êð,ZzÊòœP†˜ Jd³U™D—õn‹6õ)¦‰Ì#<Û]ó¸+6–+a9­ã ÉWv{k †tÉ‘rn£b@ƒ%:'$ã",¶]±ë<­²L;7Koû,Óá ÂZœä@EA«ºóæД¿4¯ìûŠd, Z8²#—ÙFŒIÖöm¹ðœFJPºÆ‹ÄrÚÓ¿©j«˜àhd¨¬ÚøÐyð´àWTª ìÊÙ QU4¾ßî—žh¹A®«yU:¦!YñÁ”q4­³NÙ6û][Ú¯AN¤¤Ù…Nê¡× {Œí뜈Œ…}6”’3*þӌDÌ¡§eù h94âFË2Å•HJ¥/%%gCRz8€=ËI}1'ÃÎy³^—s'€ ”‚d>dI1·Á§ªmü.ȇvUÛUó–xÈ÷Ö…»á¹2ºFÁ”u £ÖW!Áê‰<œðT­×Þ—ó<¨ò´«\ìÆü’Ó>íœQ£ª1lbæx6jDE“¼8wÂÕº Â7&Šyuål óRLÿðÅZCPÌÆJ ­‘èN…"ŒXœÞ:7?ŠNµwg¥"±kûµw=<sñÀØöKÖá9¡+»tªHÇUs¥†ãžb¯\8F£0½Õ”¸ˆÕÇ~šŸu·²ORAºl;/;:¬ôYÎ+Ý®œ3Ár ,>Õ$]5ò íbÜío …{ŠxƒI‡±¨ýk³(o­L˜e™-ê2À”=®D0Äå4œ|3ý|·kæeÛ¾ÿáÆòRbfŒQâfº½ µ[¹³tF(Íé>~tGjI¨ðG ÿjwoΜU›2|™³Á—ïl&ñ_—º7ÓWMÛÙ'Bc æñAm ŠðDÿàšÙyÙÜ8‘$çr(‘ÏzÈéÕo¦FÃöÆ×Ê ò^ÄY¹.¶Èʤˆ_ Ö³hÚ2P%‰Ð`fcFboQö¬Ì0ÒèoKJ ‘Lý“Ò à‰)€ÐLÀ˜'Áê¼ÿY=tˆ˜Pc7Ý›­«JÆ¡ðûQÀ—ØÐõǻʽ1ê¢ßÖÝî‹£*3¹+—–Ú\C'¦ ȪšQ¬¾ƒ]6‚ÌA8­ðsb`ÔŽSJ§TN¹˜Òü–«[¡0=¸ÍLbK(ó±%¸ÄrøÐÓ»õöH ÄX´Á¯¾ñÏ0ÎC,§õ¶Ø6O¥Ëhø-Da<`bTõPT;µ${Uøû¬ªUUØ&SøíTõ3ŽsNç”<4õŒ%—ÏÃ"/‡EgpìKÑgäo΀S 2­ûiHNñ ™ÚÜßVýãa“q=-އM¦øÓ,„W-Ú£±û¤ùÑDç¹âl£f¿ÎüØ¡dy$Bj˜ñÕµn²ƒK æ ÆCÓg/|SØØú:;áÏu˜DÀ#Ý‹2P¼ùþǻڿ<î±²qdpQ‹b_=îw[)1˜äÁ¿ºnAåf ìÁZïKâ/„8½_H„:›cç³××È ˆcäd_³Ý•-vw®ñĺ_q~Ž!ÞúÀT úæå4,™ÀòL{Š”ç¦šé»â±õÈô `J½bk¦Åž+ÈZ&õE¬ýwæQ§†¬õ¢Ø¹!„œé ¼aàˆ–X^˜a3ú~j¬2SGŸ7ï”%&<®£FÛ@M;¥b|4¥2v¿ò“L%Nj'Æ“ãY!6ËG£žä_3+t;‘?Rò#ã ºþ‹sù ÕE"lþ™‘Ôs0íÈšGù ß®s4ÿjIÈÂå©1Á°Xe†æÛm˜_Äñçqûÿ•³"Cñª)™›N‚Õ®šýz,šé#s žõϪóèå’ö#8i˜%1¦G±ðÒ#æØ&þÞž¬×½³˜¡ÏSÕ–+ŒÆâœù0Èî×ãÆŠ­)䦦Ùlqëª.ă‰-­¹à2èÞ‹Íͼ°ñÖÜ0bëŸ ïËâàÌ ¡iot›Oƒkc„vàIÌ£mŸÜ’PÇéuœ!M2‹±h½M^¢¡× ÐÁ•ÛmÓ¬ý( Ù'c`GNš^Ó>PÃzîÌPQŒ},1},¸óQ‰âúØE¨Ât¤½u®¿x |á€Ä(2!¯Íì~vGÍ”%^os <´q…1(ŽBç«bWÌÃ5·6Û£‹;†ñȰMÙ¶hÚb]ÿñEÒ°f. Q°)0ü‹²”±ŒgšÇ½/m5#—èð©Õ£"7U.œ½¦81ž¾Ÿýðþ'âÓ+XX5ͪӾ•eù7up‰4f¤‘uU×–k8&þþŽ"v bŒµñÂëŒÕ±€ÈÐS)’ÄÅøŽè€ÚüþýŸïÿ~—ä.nÖÑÛê±.ÖÄ'•Å$v¦¤2bsâ'G|¡Rl¿s?çÀ4:úÀ¼ØûÛl“Ä8ž§ ²@µÓ9˜\3›á …ÛJêÜ…ù|ݸlÙìHšã¬ÀiõìU¤½&,ïŠpç3×ZݪHªÞ¡€Ã<Öÿ¼Çu_¨œùÙÛé '~Å‘¨Ë] ‡ñŽ÷]ÚS*¬¼äÏC…õy *Ì ðœAŸBÄüb¬«R‘ .ËE¼¤Ë"­›ÚµÇ¨¶ q4›®ÔûÞ†cÝÄ2Àó·ýAÜ£Ÿ|a©‚ :¶¤a$›Ùùv6ùÛµùó/V‚A™endstream endobj 567 0 obj 2651 endobj 570 0 obj <> stream xœ½ZmoÛÈ®ßü+ü1D ÷}·‡¦9à‚ë¹M}ŸšÂ å•Å@"’ŠÏýý¿åîIq%Ë).ðKŠ»3óÌ3Ï ùù2ÏÈeîþÂÿåöâóÅçKÒ¯ÅËíå_n.Þ| „_šÌH*ùåÍêÂÿ‚\2#/™†ÕíÅ«·ëb×Ùæû›O°Hˆbp×ÍýÅ+•¹5x'R„µŸÜ’È$S„„¥r~MLF´2aùzçWiž1ÅâÍEWÖU¿L3¥¨ ˵]QnZwáÍJƧ^0m2A.”g\÷wwkÛØðNxÜqYôO&2£q×ßHH¦%xo˜",ÛÖm¿JáN¢âj]ÙðHm„ ‹»¦^Ú¶?,£e*^XÖÛí¾*—`dõà.K8²’ÑŸe·!œñ° Æô[ðLRNp‹² ^¥2cÒèpáµ[â™2¹ˆÖÔÞùy¦´Žkkë½ÌÀ‘ZN·³ .\Ôãåj½K…‚+„ˆñú.ÆÜŸ‰¶l÷)'vuWl6Oî‚)žQN/„³ûË-«²+‹MùŸþx\d¹2æ\÷˜,Ï:ÙOõ]ÿ‘QJâcmuߣ{AË$@hA<¶nÐG`·†3J¦{û£ƒvŃ]ÖûªKyI䙬z‡hW™¡L#Nª®©=ÜÆ æÒÊ­iÀ»Êi´©ºŸcp]{C5¥˜D~‰c¾S|ð]<¿÷Ÿ YÎeÜëK„—£Ž°ýfoCvçB!ÀÊͦ_U™Vd–lFc²­l·\[ïm0–Äõ·û¦±Uçq1s÷‚A`dÖ(xò«]’)¤‚"Ó||õwHé.›r×}ü¾75¨©Wçq–pxauµû´Ií©€D®‡=ßÿâ7¶ZÆ E“@q»ßíê¦ ¾á„ÆÐ‡aF¨|9Wu³ÅÌ”jEc"ö­õ©jt¦À4pœ»öÍ~A E!¨);¿–3C‘ZZPBšPxÀÃ0;R,7ÅÝÆþÐcˆdjàÃÚÕ‚ÇÒ™x6.Âß_cÏå7?rŽÌsɉÐÒœ«ÃØþ˜ .Ô¸!¨H¶ü™DÈ‚ 8#pø(§j¨Ò}Mö¤™`XDÂAá\¹D»ð‰·mW4ýs¥€Ò@t¥ÕŒ4o­¿,¡üküÍŸŠ‡6 (:nh²÷`žI%3½t8ÅuIð§äB}⤲ý¹™tµ¡Ða¦HeÆ~M=\*%Ó$Á[\T ëÕ¼Ô§IÞHô¨ŽtK!–DÒuJD-£ûRx]%ˆÿôFÆn‹O^™Pá”ÓÕ[_ûœ¦È‡x¤äÑƒí¢šä½Ö›8 .Qϲ6¨Fm°N¤R¼[ûÈ‚/˜Æ,?.E¢b3OODGZ¥ 7’LN:0íú®*Ûµ‡"h)(z¢¥RZ0¥‰6¶G[9‰>]þVJ¹ SO‚#IŒa`éÈp“K€¬AÕ§°Rvm4Wñq™mVˆä1 ; NÔÄ ±iêýCœÎp·# Û¨ÇRF,¬¬÷¡KDà.ÌÏÆÛ¨*É€ÌSjú9Æ!2J9e YÃ0É"&)4®5v$ )¢.JãØÿVA‘ïöUÑY}ZŽÌ:H8¤“tϳ-ªý*C ¢µXvûÆ6mp¼Î÷5’ 2zUwsüCî÷‹ 4”ì_ÊûH3œ†»-÷P˜ú+Е ƒÂÓ­€ÐSlÈOm„ ͇¦#`˜egQ¨NË4jcFŠÜ@ßÝÇÔg„žð—­œ„éï…–c{¬äãŽþD)U²¤Ô°ÃÃ0‚²© Ž˜»ÝÙ%´ŽX$ÁXo·¡°‚,T9r\k?ïmµ ZÉM!ô 3£m_Ö>®Ëå:hH*£'ÑL Ž{ÛÙe`B!9OíÛ5-à ;)›Ò)î…¢ô:ü\$–»y©Üw)Gx09E‚¸-žæ4šÌýT•ÛÕm[„MGOËSJÙ†ñè†<ñä³’‘ÇçÞ‚B‡¦Çªæù$,nwõfsõkÈ9ø Qõ¹ îɹØo¢ ³’øqœc)|”4ÛP’4ÑÉ…/ÌF0ïÜÚn]{éJ3&Ô©|¿·>“[ý#c+ßtÁ   BŸvx0nð`)4NãĸÈt›o}ûTUNÌŽ?B(HÅDÊÍß—jÇy™NwõÖëA¸U(ìSSîþ¿'EªG`¡ÂÅn… Íl³:×f„e±»íwí-G õ`p*dŽ-¨›*ÈOíºI6f¸á!~ÂPô~Öæ¹¼_n J¿AÀÖEB)ÜÙ î !`¡U‹¥¯o_Fs”4{ðŒêØ$_@R¥5W€yˆ$Å€YЦ¦LŸš¾Ü¼»~Î JsࣛXù9‡ÕcBÌïˆtÆÞº^…xåC‡ý¾¾ ¼mÛÀÀG íùÎN+’ïw"MV¡-‚Tbñ ›r[FÈç™4Hží~9Õ31/õ£|„Ø.ãkmЕƒƒ Ÿ±@%í½ïù<‡­Œ™R™—ﱓä`¹YDѫϵ#‘:´š$Ǩ&šÇ,PHØxûM(îS_ŸýBeÄy"uè㯖S÷û&x (ÏOæ¾DÀWL¨0ºwá„Àª“¹r¯!WOa'×,z<5 ®u±Çú†ï‰ÎžÖŒìÿs Wuüñç$-ˆà.— ¨!Ž~œ“?mnÝC¯þÕ? ˜aàÅ,ËBRrňmý)”!Íáp'E¼óß½g‰‹]?A"Á]݃®~ F* Ÿ޼®®“|¹0°¯»ò ôЄqú»ºõ²)>‘<’¥ùüÎg[ß"ú<¢Ò§‹“ëÿÂüœò”ê9Ñ<™Ñxú¥ÍÓè%\š:În7ûªŠ,5¯”Õ<›¯Šõd¨õ«ïmtP¥ä©ª6Ÿ Ÿ3MžÍÆÓÓä¯îêP:z:uU %sR¡§0qó!üš 4ö·w‘e‰”šÁ]ÿÞ M4ô³nA¤™½Šzf²4¨·É¸ó 1 ©8`a2@znÎ=!¾dÂ.‘RŸìZëÈØSÀ%:G"N!}Ý„ˆOp6éžš…õ¸èsrlòvê*GC>ƒû»A09÷G•O?æJ½©š¸±I¿‚TCIm B±¹ªª*IRŽ^ͼapó™¼[…A¸·?\­ß×¹÷âñΰý‚èÿó ’SNÎ_û5÷5˨«"Z‡ùŹT™îô’µ®–žÁX5̲^¡HGr«ÓÔ@;û}Ê‚ƒŒ— 3Þ‰ï²Jâ¤Uó×]¹µõ¾;†Šä0ÖDwõЈ_A䌰“aIbÿÈ1 ‰Èÿ=¾y™™˜9çå {'×6M`1×Q"‚2o+W@@vy[sáH ÐÓž@T&²XT)‚%ˆ"ð=c(ý~žI¿78Pp.âw è ?AÏfÊ»ó¿ÉhA„ŠÈY"ðPÚ;$Z¤xÜðeÄ´YœË×¹ ÀA°Õ˜eÏ1¡/1vWÉ£¹7ãz|k|Ã[®]™€b&<$x±WPÙ‡·\)Y€/Sj÷ ~[tŽyP ÷äûáogYî¾Va/ƒŸãÇ?~ËñàP¸‰ìø[‰þ=ÚÃ?R¼(bÎ(ûûÒîBVI¸ÌؼaµVÇÌ2µ¦S»€.Åv%‡î©¨¦¾ÑŠQ‚gÜ”›ª¯ ô—¢io[¼¢!‡Ùß ½2’\)¯ÀN¥×>*g†[Q¨&äÅñîmÝ5«CSñ2,s®Í›€ùÐ<ÎмÓQ ÇÔÔæDÔ¡çÏþš¨ÃC×”·!ìÒ}¯Æ¾*ì=Œú¨ówß„ l€‹/áã«§z}wb_ØAÇåÀÖ®µòóÉÝ…w7—ÿ¸pÿI½endstream endobj 571 0 obj 3051 endobj 575 0 obj <> stream xœ½ZmoÛ8îc~…±À] æŠïä®íæ€mÓkàn¯‡B±•D][ve¹/ÿþ†9’,ÚyéÞ!Ð_ž™y晡>O2B'™û ÿç«“Ï'Ÿ'ÔÅóÕäÙìä—w”Љ%V1%&³ë“ö :áVM4—ÄÀèêäÉóÛ|ÓõϳO'0H©æðÔlqòD7ªdû»’DqMi*—ámj 5Ú†á‹M;Ê2Â5çM¹®ü0#Z3†+š¼\nÝ¿¼c´¿ë)7–H:™2A„ñO¿¸n7çÓq†Ü )b%çqhS—Uس$Ëlüa»ÛlÖuã—ãŠPËLøåíËW§aÓ2cñÐÍmáÏ'ˆb"žd•ûsPM(—²ïnHN)ÂspkÈÃá÷!8±†«ðÛ¦YD¤Z„9´–8ñºjêõrÙ¾ ±™Ž¿í¶euã÷ {QFu˜¸Á)WÌd&S o©0Û `Xl½£C¨ÂÍ^V×ñ®‚½-=*¼&³qse0(ÏdÄ£Z7~¿’0Fã4ùré·H[û1ðcÄ?X6üÀ%‚‘4á6_á¼EÝí>8‘AX{—£€€1±ž>xúÕøñ|±(¹ýѹÓ⇎‘ÎGù¿0ò`£Ðƒ×uêyÿ°Ç‹ ‚‡zÚ†³¦<£C§ƒè²è3o¿%:£ñýÛ|àÓÎÐX <0øäê×À2@/`SÜxšaŠ‚I$ðŒ"Žyàé¿…]ÀˆÑqŠç¯_?}ó[ !¢ï]¼½¸xŒ«Ræ¡qBH’拓ˆ¦›EÂÙЗ6¨´uÄœ¨.ó«eØGtô\n#‡J¦ŽÞ³ÂÌo~Ê;u³÷ç³v‘ñþŒÂ–⎾äurxÈpQ>KN~f2¥q¦å®HÎ1Á”ÑwYœÓ(Û·Àì6=!™cóiùq]-¿ŸýÛ“Ëõž¥á Òòh¬ÿ¤––„[ï&—䨽u‹oóbÓ´++˜c(w+ ýç¬,-í­ 6Û~·i×6í ç‡Ö–$륆õcäÀ\B÷ wÕÅ‚3fH¬÷7‡†XÒ¨‡}ùHþ‘¶ ²Õì¶mŽ)¡(E^Zä4‹®r²Ÿ6<Îûõ¶œß†``ù‘йÈ3dZ‰»NÊ€þÌFìÏ ©ÞÖÃõ0·´€€ÄÃå ¸ Of‚ÍÐðý BGSW{í-Ëm«û¨ëgG³ã¦’ë=™Q$rÑÕ÷˜´;:{_*•5}ÿwÇɤÙÐX´a˜Œà1»EäÆŠxxc×ÇDè,åR£ZðÐí‡úe?| !sa÷çƒF‚Öj0bi&£o=+ Û'\`[T‹ t×r¤€D Ñ5ü4Ì^­˜dŽ2Îÿ ŽÆ…ügJó@¾é«é–DÕcH}TéïÊ;¯=i’Ú^QE‰‰^á KfÇÖŽI5:æKÄ”·æsÇXÅ" ¥„+¡'SwoÐ"Åîéž//ž êN¹Û Zà†]±t—³ÉëèáR ÄNu4?­¯Bˆ Õõ b(u:§_¡Rù¨ƒÞ»Fî547rhYÌÛ$„‹¡¼0ÞÆQ%†Z_ë6è¡”«M]l·ØØµî”ôȸmÛz­û€êëšÝ)†oµ×„SçÑâÓß½)ÝyΪªJ1ŠáåX—®ÓE×-䨬˜þòÔϹZ­RsjF8GéÓv<œ`}†1Ûw\ŽÎwOÚö+ŘdW˜aIo ÊìÀ&?Y]—ܰãs¤KnŒ£ל¦äHÃ7îlÐb{?{ún 'ޱ|þæ·CèO) §„ègFž ž{uhÝuÙñí]½JØíz•) zÏ@V¶[à>^ƒ2¦”ÃÁãcß6`Òj ìÝÝ@'Íšr¡O’ AAe8#?9è~J¡áî˜ Þh´¢ÀßÇý-{2‚Â…èÒÐCt’®'ÿ­ ô’i ¹<\wiåÎØŠE±×åUè)c kË«u€€wý”* ¥/ˆuíe1Jñ/›ÎZSŸõ/!†$Ýy1·µY+÷»}ã5\Q+;2|ÄBÊ9Z·P*ïo!1UÁÕˆÛc…ðtÆdd›UÞÌocm\&QÙòxWÊmqÝ+©±¤K´ýp”l¿å ™²þënÃu¸K†¹à±!~ m_‚~â“€ä}ÁõzzŠ ©ì|pßÒå½§ëb¾«·eàn«ŽUmûÇÅ’Á÷MQËS%=žu¹ÃÏ(ÈNèaéܵºüG Ú7E^cr‰>H.$H<\RËààmpéájùòf]—Íí*$]®“çá ÄsðÔ@ÚÊ]4ÞiÓq¥¡Ndž~ûf¤×$3ãÒÉ®[wuü »¿ßÕQ«A‘t>¾0âW&õ-AÊ@ùj³, '¾²'\ž¯«ëòfWû/~ +¸ìBãýò†Sexæ‹ËÙ³‰›ý§—³‹÷ç¯ÎŸÏÆJãåÓ×gÿ:ïwªX¡y*š2„2u}9ö‰‚7¨ƒPw í‰a×\•ÕÙn³)êÓ|׬ÛÂàôS¾ ‰”(MûkD 7 Ǿ’lõ¦¨Ü‡Å£6õRØCîØWÃEZ Ï.ß¾=çgA%> stream xœÅZmÛÆÜo÷+äClàÄìûr?h“4m #q“ Ð Å;1•H™¤r¹þþßÎrwgIq¥“´…?Ø^‘û2óÌ3ÏÌòãŠdtEìÿw¹¿ùxóqEDZðW¹_}ywóÅ”Š•ÉŒbJ¬înÜtÅZi.³F÷7¯¿Ú‡¡êÞÜý|ƒ”jOÝmn^ëÌŽÁ‚*éǾ±C2S\Sê‡ê›šŒæÚøáïn”‘Œk.†ºmÆa–iÍ´þºŠz×Û`ÛlEuƨw½þ£Wk-2­üÆÔ¸5Î3ÁL¶VïªqTdÜð0ú•[޳,—$ìâ¿58ˆd~¬÷ãp`üñx8´ã³Šd9áÂn§‚ä+MÀv«T›Œ™Õšça«ÿvZäà û‚a iL°ÔCÛ•UÙ6°«° xƒN]—óŒ óÍÛ?ŽöÎ3¡LØÒŸ½ñæ>7™‚©¸Òø"͘RáŲŠcÁÇÞ ÊL´Zû0Ž?) æ}ålNE¦˜‡zWÏgl”‹Läù þqµ…6ÕCqÜ vEóx,«ß§ÏÊáßó7F‡’ŒNös{ïOF ó»yGHèL ýh‡Df(¥a¨J¹ÎB3èd¹;×ݶJžŒÓí„4š®w©ù)›ËƒÎ‰Ë‰¡”2œ}<¦ÊˆÆ×÷/Oþ»â±÷ÛbÁU7›º,†_D =†m1ZÎsŒºa›€EhÛ]µ ‘ËñТ~I E—˜£iï>ÆÐ}CëI ~¾¨Î•g;tmYõ½Û‚ €m ôû­”AD±p´¢YNчÃqðH1ŒÇ8$˜ÃÎÐn™£KÂ##.ø B‚„Œ…³0¶¾}÷Có˜r°™Ñ2ŸÙÕ8Jâê°ÊcSÿËYWÀ>¤‘衺÷Ñyˆšö€ô<;]Ñlü³¹‘ááC¦ìña¡ç¾_âSd¹–Áàëò ©A,–í~ï—o匆%vuS-Awn÷)xô@ì`a4˜ÀЙÓMÆ…a‚°¼˜Èþ²æ:ϨbS×õ‡ª¬_•>õ…Îò¬c 7§ô,2*¤™Ç£µaà@¼ Éü¥õ5¹ÑôÏsäø_DÖ¹S N0änÝcJôòÞGÎ(G^ŒAð®í‡Ë®>ŒÁ! ¾‰bxæºðè£5ÂDeÑøˆfa[ð¸K*8äxG•qæüuX:ÕšêÖ“—Ô¹¼ˆÞ®ÝË@h’äúʇ¡í±ÙtÕÆ `ŽöÇ4©sÜ Ò{ÉA•P³GA.€^ÈÍ?Ewïá\i( ¶8G@õ8Un•A•âY˜A®Ãí%|—dÚ¾jOhR›K±”${ïsçÇŒ2ž~ª‡mëN`E™@ßW>(ø#Ê“¡+š~¹'ðã"¼K´ÞY&§jÅ[Ï{†¢²‰`ÐÁз{‡8€­!y¶ã6«¦>êªÇÚ™4†ÊQNÉ[‘†žÓ9¼އ¸ƒ\š»í6Þ®ã£âÔ3u6ž³yf}÷ÕÛ[?SŒ-̶Œ`OL3LJTúìNRMÙvž†Ý³@c°ÆplÇAˆ‹(ϤMñ¿=$3 (`-ã^&©MÓËEïUEÎPîÞ;2„Ô@ƒPë8—€é$A;U?¸ð†“ >öK>÷Wo|ðTÎäE—$™ë’Ÿ0YÌŒç=S“D^Þv’ŠÝÖ á=^o€'@î|&U9È <0OŽ@}µûÑ+3Ø Œa©2 c×&¥“Ä3!›§m]n½Er‘‡áMë0tZ93(ÑÅqh7Õè=S­I 0&gp†“ê·NdÀ2:@ó¹=ú3 ƒLÒTÞ$WrIî¢Ô $É¢;í‚zŠG‰Po°&Å-0­#­9§Z¨û@‡sÌÃóÁ'à57ÂJ3ïuˆ©³G,½/™fÂÍ«Çc— ygù§Å}ÊdÉ7æ2-û?}÷íß“’R° (·|ât+6Q_¾Mß¿ñK†¬rä±+öŽú¨Ñ¦z*ô¾©›bçÈU†ŸH6P¸y63/ÆÂ¶phdL ©ò€M÷E` BL”© Ô'ç><Š(]ÐZVæ‘Ém‡n p„"ÈS,…ÕR$U$!›Ô[l]уOÀ] 8k.eÆgÔ9ʼní2Éw¾ s\Ž…{ï}Ë%æ§°C>Ñ–> ’QŒzBsþáY្&I%øÐîv­W’ [:OAì1ˆ{¨p¤êrØ?HØLÆÁª£=˜%bkÐ<ö©3‡í†f ƒ5cìÎ¥ð2þ@YË羞³û¢…E˜´ XDˆñ«ú|°§¶7öáP ÛtË6ú^ì­¹ÖXÎl¬Ú)ÏìÄ©Vú“ncKr^ªþ¿[’Ik¸ZnK]L¤—6½¦JÙvNºQ÷¿R–1##ãþŸY)òyy!¦&Þ3ªt]¦Êedª´¾KU VÏt{ßVP0戅K•åÌu*SžÊ.v\“ú!¥ñ1‘Ë’D¹œ*ñ.v«&› 6¯kÖ‚0 å)Ͼ·d? ‘èNÛSvéö£ŠÔt-të“„"_ìmR~Nz®Põ\´qÒn¶¤^Rÿù*tÔiiAÃ3¦?üœnFáæºMΙ”)Ìr‡>9±­vùâ<³Ã¡¼vCsAä¾ìHB r}øë”o#Q<€¢8ØÔ0u¼º¤ œ`†e|u+m 9ùŽàU 1¯•g’"©•‹]Ò+T™Ku;!ž$¤‚ºµbV±‹:¹Ø±•dŽœ{òƒŠ%æ\à rÍàÓ1p«Œ•]B—4¿ý*(™SÍRí&OzIÎ'¿´`¨ÍϪÝi]3U»|ªv³Gc95‰­x+P(.ÇV²Ïáϱ湴ß]La¾¹Ï6å±¹ñRÇ–«|dæH!b\-…WÛÑàúÓÒUj¶ñ=| ltø§ò <%ÿ[¾õºÓ]¨GV{¡ƒKc¨ôÛÖ;XIôúSÖ韢ò‡fætZ]0êë´ ô²ˆë¦t훼L9yzy%HFé®/±&u0Fa1¼tÌ’§??ÕÀPk{aá,óÙg‰”d€…¢F[‡´ u‘U9–ªœ^°tòÙb¼ÏÂ÷,ûå³¾¯;ÿº1˶)5=Y_e~½i¬ÀÎÕçMû¹¤P«±BÃQOúOãö×·Öo>?ùr²Ê:übçóŸî.>: ¢Ô\Ès+`¼OùÌŒ-v'“†KŒéÛ“BnM98ÜワgjN ²ØÄO'{D«é‡x»jX:3°àlw>ùžBò´«Ü€‚…šÕÀÖ‘­â “µ"ÏÞ̃8k v~SÊ>ù§»ÕßnìŸÿÀAŠendstream endobj 580 0 obj 3313 endobj 584 0 obj <> stream xœµZ[oÛÈòè_!`Q¬cXã¹_Šè^R` ASíÓº0h‰¶ФBRñ¦EFÿoÏp.$Å‘b'Yä!Ȉœÿ´Ív]Þ¼\½?ƒCBƒ§V›³s…ìàD ö7{$dŠT”þmbÑÊøã·;wJ1bŠ…‡³®¨«þ˜"¥¨òÇ?ç]V”­ýáêUWƒÚ’i«ö’I… Y,)G\÷ßÕÍ:_×ÕǼiAÞ_ûÛ Rr±zsvþÝw/¿?£q%‚ÚwE™÷·J¤UÐeßeÑ}²çœ!,y0|—u[{º4 „`½X‚pëC/鯾ycŸzuµo›«Û¢º 7!aÁ®¥·ˆŒã°$J!Ï,9FΠÕÖ½ †j”®÷ÝnßõjÃ9oøó»þYŒ”ÖáÙÎ àHR |TB”Q6·¼A%"ŠÖ…›A¥?[»`XÂD8üØ{ BBHš7]¾ña%Š tµ×”\RögàU°èÑH!¦£™ë¬Í=¬¤áõ¬êï!à5Ú·þvð #4<ÚF?™Sn*³ê~ŸÝ÷¿0ø„îÓ.¨ ˜§€¾à.‚ä»}Âû–LPd ØÀßÒAª©×yÛÕ=rØ,@ã’ZLpÀv^… (Ì1ÑÀŸ|Ò(DÁ½!>Á„WåZŸ_Wï8p£0dªEÓ°Ô1¸‹Ó?þ¿dÊÙ«1£ä¹q`¼yȺõöU ÕÆ FLPxåx‚…ÃÑ?¾yí^<à%ª‘ÄŒ€v¢1h}d$Žc9bõô‘£FDlô8‹äUm—veö_‚¨ÖOvVÓ«¤©bŠ9¯·2[÷‰Ü²G Øœã ùbþ.@¤)6yš…€O)µäæ¬{[­G2Ä þúŒ¤~÷©(Â8¹ÍóÊã—ÑpÝ&‡bòPTùæ²·ÆØ„–S]À6©kÄCä‹»í.e¯ÕHEyŠ–ÍjØpC5W“¯Á‰½ Œ"&”ŒwÙ3‘™ „4V§³hÈ^`f®u¬GM}ßdýý¸4ry•ç›ÖQŽ´Bö('’/³%,øÜ—J-y€M³¯|p¤‰ù;ЬXè±(ËP¦ }¶q}¢~Š`~ ]ERª2¡CÈB5#$z e¤€fŒEóû¢qEšE¸œIÕH‹bäËæ"^m]„2C8 6d뮈õ :À³•«è/£ËÿuM]–N9áÃ_·Ÿ¼Ë JЩˠ+‚û xŒ"þ‧{¶ƒ(`|Øe·eŽÒm–`ˆÙ'—>€~’ù{õÁµ˜¸¿òþ—J…K~s½Th‡ÈØ;]ìê¶k×M±ë.zÝ‚…°ïZŸ£¾íúúOívíëõ eÿdk¬l%½ìu…Bî¡ë2ö}ŒN¤®ËC±S :Uù}Rìû£bߟ ïÅ®)*xäâ}}{øôÂ…›7Éô¦e8ëÖå¿;GöíkìÑŸe³ŠdfÒâ^Üÿ»ØÁs»Z–|ã´²Fà í.6ýÓ«û[ú×3ƒ€à9&'7ý+Y˜€cmY‚Ü3†¯3‡<8á$6—%T‰y×ø™æØP=$þS’ÅcZúáÁ°RµžK„SÞ3ÿõù¯ïÞÌ»–¼Z×›|sý2Ù$0;G¡÷e}›ò’å 6X Õ¥¯PÂH63]ñcå›ñÏ”ïëó$c0  5IÞYÍŶ· ¦\&­…!ÈvŽbÒ-;ÏÄÙ<ŠV\†ƒã y·FΩ`€6’®óejŸÕ®³ªò¹aãkb$›ú!ºy€|ã 5¡…äR+óJè¡#£j›O¾qÑ&ÖÊäþ(;FkðbÐþh/À@½Ø0º^ 7#¬ ÚfÁ˜Q¿Ô»0Í !ê$¹–\Ôì^“Lö^Ã<ß#®Ž²béeü°ô¦&|&ŸÀ¸BDÊœ Í|‚Ù'¬O¿lÿª‡ó‹ñªØþ, ]LTÛi?ðË]À-DQÕC›ÂÆ‘óe\Ѻ{Ê*õ¾r ªÎúcÉ4ܧ¦ëƒç-~’Ù–;ÀA£Èµ<‘>#ï 9¬‚î¼Ñjè²}ÙÝŒµ`‰¹ùq΋Y¹w5 ¸ ¡)RyÒÞý¸ñR&1꼿ù&ˆ±ûG “tųX6F†Nf 5<ÞΠày 𣎂ÊÓ;†¯¥˜Þ$XSç©á³9Ä™EõŸ€V±Ònt K ëB.•}òõjñ3ûçÿpŠÕendstream endobj 585 0 obj 2578 endobj 588 0 obj <> stream xœµZÛnäÆ}È›¾BØ^x¸}ï¦ð=ØqÇ€7XPJCc.\’³òÚñ¿§úVl[#mì`è!»««N:UÔ«KRÐKbÿ…ÿëÝÅ«‹W—Ô­ÅÿêÝåÇ×Ï¿¥T\–E©˜—×·þ zÉKu©¹, ¬î.ÞûdSucÓ¿ýã,Rª9¼!4¾áC0ÐÁ‘¦`&=ºKÂäö, C®WË0å#÷Knçì ‚Î®N ³»§X›ŸÆ(Þ„ @\U¬–ñÌbàã%îW4óÜß—Ï}ÕŒ‘ t¡fþ 7pˆ‚Æ×ïÝ£Vœë×6•×"Œ !ùÚïXRJyz@ €w6Î#”J¢8¹ß‡#äDÑ•·”œë3'ôoÜ« ”¦Dƒø7€±Ýß¹7@¨ho¹n2¦CÝ6 s¸FrñâÊhÍKtet†bhéI¢’>rZÓW˜¸ü/WL IE)Rÿi <ÎãR(ÄpaM›µÐjðÑñ¡»!" õß²H__¤7zñ¾ó0‘Ñ ]¸ë«ŠeG}´$1hk¿Æ ¡;çÆúQ@¹TçBnõƒƒ)h Ѭj«Ö¸ÁÐ5u{ë@Â)$;Õ J†‹.«ÝÎÄÞ+é<£Èäå(œåÒœÏ/£ímâÛc3nJ¤÷v?9ÒÌ ^qíVO#Ö%”皆Žó‚î'~-!X=®73îIk3‹6W}&T™Ü¼ X•’èxø½Ç¾,YYb>`gÁë|‚ΦrÙCuŒ;[·kê°tÓýo”ˆ¶n€‚_‡Â%Ëo¿Ž½Ãgï7ïxDA ʶãÈb¾œP§ÆÅ[çæ‚q¯êvÛŽoÂûœ#u>b"fë;Ӯ˃hlæÔ”ÅבðBöõ’Âí ë=sÛvCT©N@½$ˆ5EºµZ%Çzƒt1Or¢ÙÄýÃ’†®ª›VAðá§'õèƒy@¤@¾„B4æÁqoÅm}†wN”¬à 7úòÖ;šm¼ï›Ã18–I$Ò}V ‹óC5ØÒÌðÅBm¹œqèPM¸ ¨('ò–攼ÁEÜ`†M—t¾‚P9'ˆ¤šZl’”Ю²½Ã¾’ sÐl˜W¾]³úG¡r8/(³ª!™- uÛ¢š1Qž‚ï ŠF$KdñHI‚»xùØzàFÓoÞøsOç0Î3Ñ ÏœÙ/Ç&p©á"Zó©áð>TŠh¦Ïxè [/¡Åt«,“î)R—Eé.Œ©Â R,×°1°q¢ÎH:~6Ívó…¢BÙŸ‡U(­hñ¦ê«:ö­€‰gÇL Q9eˆ•Í!ç†8¤!ÓÇ¡ãh›ð¶‰“UŽsˆ·,[oYŠ@ûDÙOwРûj$2Õ裠¹dÁ8NWP $M×D)Zˆ´@B„ ¶m÷1šÉÜ$A¹h‰z½®öKX©#•Ò`5o†±£¤´É©M 9÷”™ÞãfËi¨qV+rIo¿ð}ÿkXþÒ˜OÉô>޹} åƒ)ÿ}nw !…ønC÷oçqRŸtÿK_Ø»ùZ'1I¢E[üÂÇ`Âó¾3ìI!wÛ@bOLò‡ê.H& Oé§òaÕ´ìÅfßš?úö‹ï²°2R"û$ÏIf3³Ô\ŠöM·­jìäæü[ãïQV½¯Pö‘<f?1×­lœd§zªìü¿õð»cNÏæJ| Ô” Á2ÅOÚÿTGï))*ʦïñ¿¡j’mëø§Ó\ ‡KI#˜h6È}`Ï:ªa€ÈDph¬„9ÙòöŸ«¢Ýu}ìûÐ!Ü‘…-o+;2OË–Tç-ª ²Ç"œtëFc·~&ÂÜNKϗДÈÏMï¿Wj¨=Š>è!(ªÄɇEZN†å\ƒ5.?«™†c]7Ãp{Ü‘Åz{í7`5$…üì£ûÐ2— ÊÉLÛ&#cÎÎŒ'1eòÂC’©êÀêôTÉ4jÞFç?£Ì>pýq¤%¶ìÓ¸hêIh|â´)xôÍxì#}A[θgä ©U!,Ä`û8³Lî#,³ dûÄ­}TèÍ>—åþ®´-öåÊ~uòßßßùc2ÇZH À®%Ž•dE¨Æ>÷Ùõå?.ì¿ÿ硺@endstream endobj 589 0 obj 2982 endobj 596 0 obj <> stream xœ½X[kÜV†>úW,i IˆŽÏýÒzIš¶`hjJ‰C×Z¯Y’%m÷ôÿvŽÎEÒJv’‡?fÏ™Ë73ßÌÑõ #²ÂöÏÿß\]]¯H/ ÿ6W«×Gǧ„ð•AFRÉWëí‘»AVÌÈ•bi^=z±Kë.k¯ßÅàÔúâè‘BV 8‘ÂË^Y‘@’)B¼(/ümbÑÊxñoµ“RŒ˜bápÚåUÙ‹)RŠ*/~™ui^´ö‡ãSë®·%ÓÖí„I… Y%”#®ûã_÷æ0’J Çû¶Aß4ií-k‰•!š:ív½a‰´ jëPûÖþ’Ê@¥X%„ %ï²4²ÀÂ’ í¦Éë®ÇQ!)#fÛÊAWŒ hÝ>íÏRD¥ʳrÐÂ5â2ž//æJªn—5=j %a-{ßmºƒïý…èû"y¯ZFŸAñÜÜâí®úÜÛMuÙ¤WsÜ–Cs‰Y8ÝŒt³©Á„*µI?ºc,XÅXê´mQLªÖ^¼þ¢#Ä#Å;ô„a÷¦¢+ç¸Gàz°“}Ì;„Á¬ßæºÈ>«6UÓd›.ë}K$G‚s23¦?òàá÷ú‹Îà ´C—vûöùÃïÒ6ƒÿKº#ý=Áb& ›÷ñ&J ư7$ñ ©L ãìñ\€˜ôöæéyö¬7gà0ÁjŒZÖ¦û›Sxv|%°YŽ˜mVËW¶oáL´E=‘JÄ\ › 鯟¼ )‘”O+P!iãÅé±;Ê!)ŠD±'R°BT¸ÿW¸†²H}­çÜãS`™* ìm]²‡\BÄ rêþg‘„­ßÆnß4ÅÖ#ã üiL@çÕÉ},–ÅLðïgwí`2›ûHu.X@!x\`–<à’¸£ ¦!–$kéï±ö¸Š„¦s\¦a$ʃÁÌ|v#ç¡©ÀbhøMÖ¶yy¹ˆ‡yÊMdÅìc÷IÔܬ˜ÏnŒ4ð×›bID …}UdnÀX†Pú€šg®Âehþ% v4êkÐPòr“…¯bè•àtV¦ç…£ÜÖ¤e[ĵ€sÛ;ASµ ­c±:ˆˆÕqöh1&¨mÂã>;[LvÏ‘é—ô _(=uØ’®ôÄɃbÒ&.FggÍ]®‰h9ñ$áØ2•뺲ͮ÷Y u×S ÔÕqøuëv6ð rámµ÷éà†…¨üÖÌ~TÉl’w€›ÄÄçÛ]½è¿±ë“º§eÛüª.nû"0°ÌEL.*ß@…3%:ê$f1”Æ\Œ ë©'O3´~©à²`‚݇Ô&-ýD¤C÷möíÛ*,bZXWe"¯ÉðHÖC“}Öáó ²¶»ÔfN$•!!*Ç:à¿@ó7… ï&Ký„ç a¢Ãõ“üCæUÅCü¯_œ,3§€ÿXû‰LÁ ‡©#ÆNB¼„EÒðNN2ëV[̂ʥ ’X8f• áðMîVPËcBË…bkël“§E(#‡,ïWi×ù¾pô±û“kBj¡áÎ/•ß„ŒæAv“ytxÖH_TéÆÔBså )Å1ñ‹…:â]cb`Ý e&ºSfYX4 †ÆÝ;6ó)ËÈh#³‡OAÔ‰˜ cÊÊ˼xó¿#Ñ ½3Ýv Üú´b‚é‚Kê>ã5(ðïPjß}q•DdIþO+‚C„á€Ç“BÆšXlü%¦êvqi68¤èüv~0ò«£2Rýb@Ûª(*¿@ɸyÝðj4|˜­]sëÅÚÄWµÛ¢§“+Øc”aWxWí»zß½ƒbßì\9ÇYìì_¦=¨#Ûô¹mi›/h´ë5ŽûÀsïÛèeý¦· n¡É î‰]œžÄ­=2¼_ƒ’ ]y»Ì«–€uO«làU1çÕ—Ù6ݯSAÕA9NÖóפTô žŒÝÎ}! ¼H¥Õþr·L›’6´§MÌï.ÒÆç B.¾±…мJoçî<аP|Ý¥uXÍ€ãaŠöÖ¯¼P _„ð"¦2—:‡`,~*É/Â#U“8ù<íÁ„"Ã6’g«`(LÁå=¼¯Î= ”Æjr4íê0l„¿Œ7¢ b O¦útÌ‹Õð]¢óm©8?øÜ1åÈéL bûåÀ"¼ñ8™´Ò® ÅÀ°}ìY»¶û´aYg ‡}ùÁM2jÙ-®]7áõÃôàômy¥rSî©1UZ¤åå>½tÅ ¡søÂÆ4Ò{O†ÂøàÓÄÿÍgÃÐ^â3J@ÎñÚÝT–À«ÚCýgtæG¾V4é;ë¥s&;|Qèžo¥+&i졟֫ßìß¿úÿ9"endstream endobj 597 0 obj 1815 endobj 600 0 obj <> stream xœíY[oÜD–ú¸¿b%„€ Oæ~yˆ--T ´¤/€*g×ÉíÚŽím¨ÿ3WÛk'Uyå!Êñ\ÎùÎw¾93¹[cDÖØþ„ß›Ãênu·&ÎmëgW«³KBøÚ #©äë«›•ŸAÖÌȵbi°V_>ßåM_´_]ý±#!ŠÁ¨«íêK…¬ àDŠ`{iMI¦ ¦rfƒˆV&˜_7ÞJ1bŠÅÁy_Ö•3S¤UÁü]Ñçå¾³Àmº& Q"œ×gð‡Zgš#EƒcÞ5ƧF‡5¾ßÕ]ÿvÓ–Mï¼Á QJÃÇ7mY7Ï.)Ã’i´!fQ‚¤_ª¨Š\­ní.‘â,®”[“Dš1Aió.¬M9’FFÊC~[83¬@uÄõ¦­ÎJ&RM×5‚±hz3 ˆC´XF7j9FJëèÇ›çq%ˆ Æ'{çˆ2](«0›üˆ}y(öÜš Æã懼ªc(bBE{[Ü˶pyd bf ñ`Ù•·»à,Ñ­®)Š­µfLRd Yg~û¤4m½)ºÎÎ1‚ü¥œTnŒˆwÇë®Ï«¾Ì÷n†@XšäС>V½wT 4款™ãz(uû!„«;8BÆN›þ˜{d5pD÷ÜT…!©h–¶éw>S°"åqà¾ö“…À*úxïëRšâÙUÂÆB¥’h<ë»è:OH‡L¹¥NyYtâØí¡Ä9‰þv>©L Ó}€J8„U±–qÞE‘q ¥ X²ºu_ào.S±.ú0)2¡R‘m¼žÀ`ÂRÞûÌöͱLÙŸH{.&2›qB€Êl õ}¹-Ò‘£†’ªÂùÙÕ2“´IʤM~ºUã"N_T.CT©PÞEÜ`9#íˆF'YãÆI~ذÞEÕ§†A Œ”…¿õ] úcR5¾­Eð“(>äâ!uÜå Ñ.HʼX<‚»cÓÔmïë@dû›Û€ÁçëX¢¶_ ÖÏë~I)«ºÚCÓa;Únz<FAj ID uÝAq$pÍv%·n»¥Š0pSˆ)íçëΈýfÿny5( )S¿9Ö5cu-¢²ÿäöØ&z  6 ˆO!è“öü†È§§ÎÌõŒÁhÂàÜVQŸ´Ïb(•ÚµËW?]½¸ ú€%<¹µ<ïÏ%8K\Ëb#`†…† 9”0O Ý—ý.·VTÑtu€é½?ùH@i¡R¿Q‡2ÅJÌ[YèºGy¸)ƒÆ%tÝVÈ¡[fЀxb¼ó;Áäs×°#I:~ÇxvìÚ³ë²:ó,8ÁdûöÛ—KHfÛgß^=ÿaŽLv眣Px’mSÿ­{íDô%ÄpîàÖØöã‘,Y÷Ý‹_^=qþÛoŸwA(ÛÂJÛ߾ܬ¦Ç8›±´ëÜ øa9É&ÐD"‰Ù£ßÝ'ÀE8Ý'O¥¾ø³?oºècðå´éæ€{8ˆfölžîŒ,Œûq>î¢èi‘e×u»‚WŽL ™¥ªÊꃖ’ã˜OÀ pWÓ“XGuõhùxúL#ð‹‡’>!*èÎ7nBäÇØþÛ«4Ìš:0¸ÄØ/ŽýïüIüº’ÍŒj'Í=Ÿ»í"É´¼|’î%å˜v/ tl^¥£/S•fwÆðdƒ§MÂëi ’Òæ÷IBÒ¥6;±ðoï¼=¤´üˆ÷¦™*-¹ýïÃÖ žX7µŒ€öƒL °>=Mú1–±(¬»‹Z‡(Db±ó‚2b—…`BÜO9†Ó卵Ö …í~ØÂkƃÄÐJ}Ú±”“G9 ›‚¢öñ‡jú!<¸\#fƒ­ì§X¬¾BCR.†R .þÃ5‹)¢XNßìŸ&¬µr0 ­ÕÿU>«òÙS!4“PîÇH¤i>IÒ¨¥8]T)¸¤fä‘öY³Ôˆ/5"§ëjhËiê!š.ÁE¼îÀ]îM 饛°?Ð Ò”¦gÚ…‡§ë"§pLCM±)Ÿø÷ È)ýqôÒûÀÃA‘XÅØæÓà7ãkîM½÷ïepiÞúîÃ;.4ñÔðtKÚù‘ I‘‚¾ï‚íáÒ»è‡¦ÜøgEè¹=x·×ö1=µŽp•õÏpb`’¦{챋/Jšb’¢èãƒ)á£çº26@Ãe{Ø ÷ —›Óÿ `0'“Êžhv Âvä‹«õÏ+ûówgìendstream endobj 601 0 obj 1919 endobj 605 0 obj <> stream xœ½YÛŽÜÆ”·ýŠüØéíûEÀ‘Ù°±FkŸ5Ã¥ÁR$G+å?òþÆT³»‹œ!gvW@=,ÔÓlV:UuªùqA [Pÿ/þ]m/>^|\°~-ýYmßÝ^\ýʘ\8â4×rq{wž` áôÂE,¬n/^~ŸÕ]Þ|{ûû,2fìº]_¼4įÁ’i×~ðKŠha‹KEŸfŽ0k\\þ[V9%ˆ´9ëŠj×/sb 7qù¯y—eë¸úÕ›kÁl-¬7{)´!Ž-–\iûíßô¯Ó„“N¸«šUÞûÀ ×6-¯Ê"ßuýÁRªerî·—eÝ\N(ëý*×ÄšduWá UBbßö¯ãŒ('x\lóæSÞüö­ÿeɬ%œ¹Å’1bt<ýUY_—õ_ÂÆûªíú“ñ!ºñžýù‚Q¢ÇÂÎÞPC´ÆH;py‹x.¥%B‚{ËxXxÛð´?ÕŽ}Õ®¯à’Š1àà’N/¯«ª\Í|`úý‰Â¹p&xwµÎ?]•uGýC/_BÀ§—¯Š»ûúz[­óòzÓ^nÚ÷°­Xå×yÝV;ÿÿªö¾´°™ÃÁ^´ázÙpI1R:ÙöÙðÞq®‘–ÌßÔYw?-†‘9 £7kï;äôÒ("„âÀ…Ÿ¯¯Àµ«ô< ÃÆÉ¶ô¯¼%%³·÷yÜ'’Òr|d•6 ù\í^lö †])È — ª7_zo€ë ³ ¨ÚÆÕ úѳïݪ)ꞃÞéŽUÆÑ´Ö8‘š'¾wÁ)&‰æ2=Üd-ÀSü{0 Ó29ZÝųµjrŽ‘xÎÛCû ÊT§¿(ó>Mäç©æd»uŒ°uJž=¡/S€˜ñº£„Kˆ?‡Å~kÝT›&Ûöüò\‚_PŒÚcÔ„DÔ2¿¤‰SB 5{ AÓ¶ÏÝ4s™à¤8ºµ `™@D>õû ¦2–ÊaÞ´,`|¸r¦œÂ‘2]QOéÐl¿W@P¸K¾Þd»Í>8Ç74¾Iõ[KŠ6Åн«óUñǪGC*"€?튮ÈÊ|Á² è †Bò2)‰_–¦ðŸÙ˜C`•séuû¾€Óc<ê–Ra|š7†&Â@…ÙN-&C¹É‘¨6ñCqâ9¾ø­}º«òŒ# óéû›ØbúùÖ% Œ[ƒ¡¯ïbɄڣèÀÿ–·ð–]Ï 2VNÒ~T>ª}Wï{\9`Ã…R¾ß <©ì)· ßBiÂß}©C‰¥A¥²>Ðz¾XŶa‡G*P2YèM!¿œ ž¬™ñÜÚÅz«„J篲¦)ò¾@ H$Š…¸ ÞzǼ\‹ú:„†DTã꓇äL 2Ÿk(|`á߉9ª«TÏA0aT4¬gTÿì_r"T¾§O´Ï¿æXbˆqÓ>µxo'4kå$²pZ9gÉq¾^ñ`¥ëP‘ =ÿsw °²XíNõ‰™¨Ív¦‰êØqÉ>Ñ ¶hàÆÁ]Þ†£¯?eå>Ÿ*ƒ´úБioÏKè.ÿñ¼SWÕvO–àe(Ž‹]»®°Â¢‚$(;nO5^K¢¾¼=b¬Ñá†CžË¾S SOû ›øƒˆÎc¦Ad!Õ¬<¯¤—‚ ÛYû¡Æö_†þAÅóYYVÈ+´ó!&1”,î¤{„@Þ §øyC ˜34$[ @B!Ù~F¹TS•0+šbòNAÞð!ÅüšóŠ èKÐ8OKmjôŒ¡öÍ*Í9@GÚÇØ4„á ›ê£»X;5g ²žüñJc($yÙbSBSîó&¶HpÈò³b9ÏÚ8[né  %J$uö€¯hh `WyÛF²Ð¡£ Ö†¸A*`,Ç¢Óž'pxØ0Žâd]$½£{€Ð®›aÍAµE‚F<`œòcØŸE¥Í¶9BxûðU…í2Z#Ê(jê;®»`ÔÛz¶‡ r†1>-±Á¤6<ŸuSëR¤8Œ§)zòTA€¦‹T x¾&‘Â|ãLð¸T¥ ƒÑ„6WU³mÇ0(û,í|ˆ}**€/ÄÑèt’y3SѬbÕE…÷9žìÛ›ûÄ1=°ùCx‰–éݻܛ•…á¨Á¹œ u£–ÞæDÞ0Áø9kOR®í€¡e‚2ûfÅIøìqó(œ!~vbðıÚHœÍ¾TûD?#.¡˜Öj_&X8 ¨] 'È2/vN÷› ž±6bÛž[¥ó×EýØÊ‚ë0OÌŒ­?Q@böÓêmÊ.ASšl×ÞE5L fFºæ4òH_€$ v¿7M“2Óbj‡TlœLA}×eݾç…À©MÏÿR¯šìéðÈA‰gÏÀeµR>×5…ï¬ÃÅïÍë>d¾Ã þú18pºƒöTžhCM‚v–¤@M€¾KaÌ@v»t1M=‹±¸#B3#4 @ņþ¤ùù÷ò=蘪y¿ªÖùì´ký%cn@áV¹ñú»›7³h@[—/-ßþ|aTÖdPK§˜kÂêáöoOs© …S…ˆZ#ë JNÖϕϻh >ûßUlv˜‚cÅ˃¯V1º;ŒWñ röúi ìÓVôéØÁŒN¤ÓÏfXVæÍÿ¸þ5 8©ZÅÏ1Ì“áùÏ1(bøy˜¿–Ч`Öž¢_ÃÐô=á2oæ vÐD‡›–gB­)V­º ¢Ã;„Ð4‘6q›‘›F¸>E¨¨œ\ºšâ8š`òcѬfý]r/2ö§»¤ñ¥9º¥8Ô¨£ ì5 ůÂx…;üâ×äݾ l‚uEËuˆ ÈR5ÉI’ŒË£‹Ÿ¹Qo˜¼Æ=à\ß >¾{t›8žs¡AëÃ{œág¯¡^¤ïC>É$†å¡ˆ}Ì_³—l=ˆú© O™9ñY4Œ¢x]q×TÛ(ëñéöØ4 O'Ô> stream xœ­XmÛ¸Úoû+Œû’\óÄ7‘,°@sɰ‡ {MœE¸6½V*KŽ$ïvÿ}‡¯’%ÙI‹&‚Œ)r8óÌ3Ïðë"Cx‘Ù¿áßõþêëÕ×v¶øÏz¿øyuõÓŒÙB!•“œ-VÛ+ÿ^P•/åH‚uõòÍN:Óü¸úrFŒ…U«ÍÕK¬ 6`8çÁö‹5q”Sq0eø+„¥PÁ|wðV’!*h\¬»¢®œ™ !ˆæ·¦ÓEÙÚ~ú`Ý•àvN¥u{Is^, CLºåùí×wn“I·þtûþ—;w ‚H.ÓÖ7»}scíKR%KŒ‘ÈݯoîÞÞ\WðÇ]#©wðÑíÇßÞ½þÇõº<š~|qõ!ÿŠˆtKœ/¾Ë…_ï~žœo‚Ÿ>®^XžbÿÇsnÞ¿;‚‡YX°X² ù@¯v&䄞 IÆÜow‡°àd€B.xôëÐÔÞ;‡s„aᇧ¢,[`E‚ÑÈÅ”ÆcþÝ5zݹŒs”q–{çÝà INbplJÝR…˜’̺ڸ¥FÅã÷_ê{gäˆÛvºéž9K—˜ÝÀÌÿ¨ÚWΊÄÅóËúaz>\ª5¡D¤¢1,ÚUÎq¥>@dM¡;ãJuI!q<'xŸ¾OÕ¶nºc ÊgW¹PºYŠô+iγäQ[ïMp©,Êí$M÷º5›œ§”€;ðAÐ)Ohb²rÂðÅd›}ð— @}"ŸG¿XaŒã¦¦¹¯C´$bYt®¨B°°ÊD×"2’`8.}0•i-1à˜G|ÖÛsÉ{xtÇ6^\DóÞ´­~0­K#ˆSw¹u;CQQ( ¨.L PüþÍ&¤ wü «Ã±g1*Ù×þ¢j‚þA@õ¾>V]ˆ>傌¯’çé*¿‡¢z‹gê½­ÕFû½á‚D¥ f{ÃWstÁa5Écʾ3f©¡®<, ƒ˜äØâḛ̀–$=íŒï4 eRF|jk‚"¤”Æ›mŒïs„0ÃøXø`/©„±Ý§ÏÚìtè_ã¶ 6Ax=ÅûNûÀ¥²ŒÅ…¾¶Æ1RHd,¥)Ôo.úú$鸞Ô9¡ +º œ–sNÆ!¢pD QáR,QF‘§—³w!Y Ò½ ŸcDW4æœc6ž‘°‚è áƒJ>é)6±Çë¾”¿=¦û}]oL{ýO»D@1’@ûC8¦{fW~öÊF#ÆŸ…SÅÛvâ”ñ”Ú¢õÁ˜“¥c¤?¨šØ$•î€xÚ#ð4ÐCèpÜI¨b‚äá“j)ͺó‡R%V +MS7áÂçbÏGP¼Ïúí6Þ†‰—IqĸÂýÂî“ Ïê ê,Q×®PÁš@\m÷*`÷µÚŸb{–ÏÜåLEÏrPUwÓž}o‚º’9ã£Bš«^¶ ø}‘»€±fŠÆcU4A^)IÜÒ%±6ЊB1Ÿt ~í/7¦€–èùª>$Á~B®s‰nM‡‚ÆÉxŠ×l¹ÛLÆëÒ±9ÔŸ©Ñ¶Hø‚KóEzލ3¤„Š)}(½8Çç¤÷tb§òUµÍh‚D˜”( 'µÕfz¿9¤÷‡Òüy>— ª^Â@´ý,w*èqYrgð'ôùÁÀ`ÍxÞLgÍ䌙MÍ”ïOÍ ÿ)ÔW)ŒŸç j–Á°%ãÈë²­£²–Ø7Q/•šã^?OIa®N/±çTß>íŠõΙ!À,_Ò ¹¹È;=#6ftíT¦å¢8M ì~ZGÇ‹ØÔ©LúqxKEÓ-ƒl ðÅ}J´ßÚZòS7íiIm¥¾/ýôA1ðtÞûi ¡Ž±óWnP£ó] !͘¥áfí —=ò„¼æ²¨7›Pê9",ë4´×S8è?€ÍAÿqaôfeqÜÌ“¡¿lµÎ’ÂïÚ~Ö¿i\RPÑô¢º˜Iö÷sfYTf:€{Â…vmàg*­ëª…ãBì@í«”Ø¹u5MÈ7däÕÁ0¯Ûº,ëŸ<ñ“ÏëiÌîŸcÀsr±ãÃlÚëPW›p®læÄe/,Ïp00QÁÆ<ÀŽç`ÛåðÆþv½oýÒãÒròÁçÄðæt[à 7É,=ç>w¹>p}¨Ÿ`B×.\ÎÌÒp¶é‰æÁ ®[\0zójƒÓ4ÝßUIËøÃèSröÓíö[ßÒë¿ëf2(€PûÁø“&—Ñ8ú]4å6ä÷øY_LËh}ÇÁYÐ3nI â0)ÓnEl–l¯éã@QÄzÚ)Wt4¶)œñoô°Ù'“3iN\¬Kݶ~1Éò|\ă׀3ûÂ䨂àíŸ#@qxï¨}s¢½`´¯)u|N˜õsH¥Çè~45UbUb›Crr• <ã—‚Ò̺øCÛöÑ(Vrj0ÉÛ·75$œcDжe¤KÓ1årS°x"ñ¹—¼ACI¸î·‚á{Sz)/ qˆ^?þW/£s}Ï÷zœ–¥an¦óÔÿò=F®ÞÞ¾šJ%ûÛ…@Âô{ñp8û .Ò3 Šže ¦ý ’.ÿ¿ *£aŠ)Ç Ú8‰|(ˆ]x³ZüõÊþý.Éréendstream endobj 610 0 obj 2147 endobj 613 0 obj <> stream xœZmܶÒo÷+öK§¸å‰ïTMÜ$pàÆŽ}@?4…!ïòneïJ²¤µ}?¤ÿ·C‘I+îúy­93Ï<óÌPW¡«Ìý ÿÝ®>^}\Ña-þgsXýx{uóšR±ÊI®˜«Û»+ÿ ºâ¹Zi.‰ÕÃÕ“g»¢émûýíû+X¤Tsxêv{õD·/Tɰö³[’DqMiX*÷á×4'Ôè<,¿lü*Ë×<>\ôe] ËŒhÍtXþ§í‹rß¹¿¸yíŽkàØŠwì5Wšätµf‚3<޼߿-ö¶íßnê­ížþg8¨"&£q{Aÿ6lC‰ÐœÅE–Xd<.Êÿë–ÖTQÂ[­)%Zl½+ª-üÏÓ›c×ÞìëM±¿Ù—ï컹ñÞÈá…ÑÀ;ôg„)¥Âzwã^¶\÷¯_®‡‡!¶lE5aTŠà#I´Ô«µæ$3!|4"(` ÞðSx­&eoýÖð$âR˜ˆû¾|uûüåoÁÈ9€y†H=yc€R¸zW{, ’¹_ùÅ÷Þ* cˆM}hö6âQ(¢ú£ë‹þإ퇳CÁÕÔ|«õoË Pð©Ø?MÚ—søÿð‹GÛ> AœTB-Ì£Í ~¥`‚– 3mXƒì£`@@Õ®ìâ“&>ÏtÎZ‡#Öjb¾ÝàMßîßö_±›rJИ.X`ÚˆyvûúÅú6r”Ð +ižé¥•y–¶rÀ5j‘ðÎÒÛMÚHÍ·¢¹nðÀ«Œ_Õ·µg<›Óœâémˆ°b‚^0t(+dTaˆ`*G7‚ªõ 4Æ‘ƒ|XBhk ÀÊ#‡Ç}RLk!’þoý\îçNò_±­Ãk…bü’…]q°¡.˜úÙ-i’ižÅ T·‚+ Ål)ºmòù.Ër"2IƒSåžÀº‡j“Š%ãÎ ¥mg.ŒHnâ¡ Ì@“c&í<ˆ¾ø¹;ä0C”„ýÿ‘<‡°è¥ëh|†{€«XY¤dç1ÖÕ!”¶ÎÏ?W¸ÈÉy$©1£é˜p»ð[À6ËâßY»Ü¤o‹ª»³mk·×!ù3©— ¬ï©¬÷4BDÔ}‰ô™i,]o›ë3JÌdD <‰©Ó÷vS«>éi´š›óžž‘Cƒ‡%JŒ˜`}o S·žÏ Ô Å£G£ƒÐú’š¶ôçt®¤$¹Ž¡Ð†¢ªûå“ßUe·óP&Ïåxf.My6²{¢75œë:{É8_âPrW!èuek/O€Ù°£Õ.Á>ÎFцø9ÕG§ñ{tZÛÔm ÀšåÄHò„þNËa2“ó@,K)˜Ê1¼MÓÕ›6‰" ²tDQÓÖ}½©÷A ȵQŠJŽ]H ràKÄx`˜s\"œ¦Äø\&³L!™%¹)ààÎ+,ÐÕ¤2²IhÛ@CU ëN ‘õöÝ»¶>,Ÿ>‡pÿÌÒµ„ÐðPÓ6(}½”‹_‡¤@¥uÓ›:Ô!`5q {v¡›1¡¼Mø ™c»Â‡„šŒ©ª-Ì8ëyŽ#²ü’áãÒ #‡v Õa{´ËMC§DAWAgÛ“¨“r™ÅbZ%Èi–#{G€A¯”ËMñ®Ü—ýCÌ`ŠÕË€%3ˆÀW¿¾ AsÃÐ@&ÌaÍ;X( (0PKô» •Ì(;­6#¶A?ôÉfúéP–yš([`´ë`6Íqñn)LŽ ÁßqÖ0dX|4)-ú1EyŽÎ9D NÔï§ Hq:Rr[ïwƒQœ@ø,8Gž)8¶º/+¯Ì¡óá9)UÉêc<¯æ(Á}oè¥Ö–zéšû çÇŠ5Û3Š#Œó|6"Ç{"ûñ|Æ'u´Ð ØÅC'Ù1yÀ¤3?CÙ»_ ç3â•·‹Ñ??TKIP¸±Œë¡9 ƒà{¿l¿«qPÃ5;ãó5 kÞI}äP`éIzÚÄÙ¼@ºŠ«/ö"ç:Ú5ç )bê‚ü‹’ÚÚµîÒŒ»L ébÜOªbŒfB)?{ùÛíëpÀâq¯—aàj—\œb§ÎzØÒ™BMýú|bÎQ„«”ÆåçMzUwý›M[6½¯Ó ,cbšW›:‚zu‘դ̌3Ù^f˜+߉¤ÝóƒC#%2…ˆwUü"\ïÌ/Å=¶Éx1û‹MôÓ›¹¾"«¬“ߨ"ù ¾QÝø¼ gc1Á°Àù˜ÄS岿4¯ÒÓ(%'Mõ2Ëa»Œ%LYèLé4Rx0Ìg=|W;& ¿v¾7˜)58ÔCÕ&«¨Ò‡‚–eœ„—Û½Mh>‰Sé“Á^F Æ#UÌ»‡$©Ìš®„\Ø×XšÙ˜gËç! 8@´<)Êj äËÍ&Ç89<Î\HŠ ÝDãèAYË„j–T¡éÙI3É.åÕdÂ6Âkë]9 á³yòÙæÎ(<ýŸ¯'û²CuÀÅ : e<xãÒ+aú ¥Àä™n±þPù¿ˆ‰/åÊ1øræž1ya¤s(úÍÎó«ûˆÂËó‰é/ætˆ‚BŸ ASpp]n(uàYªèä‰WòX6%(RsÄ3×,Õ¶Ä5¤3‰óbýïºã!v—üèäãÉX~œÂ/3»gq-Qá+(É—`Át2±WÉoWû—šÉLê³_¨&ë»>döL(?6'Ç 0ƒf¼_Cé‹ÞÉ¡±ElÞÝý]†"-ÝK¦˜òØA!Þ?H1ƒ"59ožþ™ÈƒnÂM'f}ä€)îd4Æ¢lýVî:Hàxy_Ä(8rç}ÔyÀÂ_m_‡Z?éåÃß/’ñü¢[«º= K ûÊc˜aÏ/³ê m¢ã°/1€i¡M R‚. ;“­?U.3¼Kφ΀R¾ß[?urRcwÜì–V%æ{ñ4¿˜p*J¶A'ô³†–˜hI§MÉÙs¡<›!%[ ÏXÆÏd4ñÎ ÔèµèŸ šÙýæð”q÷ȧ|Ãø8>õwHdÎðnu¤’=÷•Feæ¶ŽÝsic3Ë%êàé­³œëëEµ'Xî6y`r«‰m.Rw×aÞiQ)îùœôÑçÉ'>˜(ÜÝ®nûàPAE4ð'lYãP{Ošîá!%E$wÖÕ½?¾êE¨§/Í+Ÿu¸H¸a«µ¼€ hⳎ[,8h©ýз訑{Ê/±VŒmÝ®è3ì‰<yÒ‡ùC P*±ŨÊÉÝC¼#‹:oÒŽã³Øº©¾`35VÞíšTÔ\Ë ñƒ«ïâ‡mîÒQä‡~ V«¥W4!‰Æo³@þ,ÆÜËFt^ûÊ&ÁþÛ­»÷K^J¤$CêÂü hÕw6~Fg4Þé½{Xj‘ =r>vø[ûéé®îú¿Æ-O®á¥g)ç¾" V Ñdù,𛢠”Íú¯Û&ß!$©ÂÕ–áºÍ–]I •Q|Dwj2™’Ú•µÛ¨/2!E}ÿmë眚¡ %®UÆCùŠõO·«ß¯ÜŸÿj> stream xœ•UKoÛ0 vô¯ð±VÔ[×½°]6¬È±7qwŽØÎŠýûѲ¤¦‹lÈ!EQü¤9ÌÙø ÿ«]vÈ9úXü[íò÷ËìöQæœæZæËM6ÝÀ\8¡ÀRt—]}Øû¡ì®—O ¬å:»20ƨ€D­BìóR …A ¡ª·ÑZãBøû~Šrˆ˜\ UÛø0c¸ áåPTu?ÜÞq<íz!¬…ù‚KÖgk»]Q׿ÇtɨÊo†ôª‘ÈC¸/›uÕø Îñ%³BUÅDTÐsMÎ0‚©·û'#Ow-Håì£V„ ’.^ÿÒM=>GVÑb¿<™à1zoâÇÐð°Dð·‚d”“§VèÛÝd=6ÇÜkž=*1æªX¼+ǪóWͳM9áJØÄÕÿû•ÐÎÅÉxqªÇ©… &«ËͪXÁb&Mcs>_sZtå¾í&Ïhà*Uè‡b8ö^§·tD¹ÀiÇ}Ýĉ–&ÖÙq¢w Ì1øQ‚ÒI‹›mn]4e¹.×7aGâ‹AÛ´šÄ«¯‰Ë“ªÍv?·ÀH mÒx?ãìpåŸ3z¶ zj¥x¢2ÑQg–8ìK:ÍÚ_ÐôR‘ƒÇr8¯2¿òƒ a4YK÷“´ÿ¦ Ldýõ…&ÓÐÑ(iF›lš%#ÇÔOËüG6þþ‘1ðVendstream endobj 619 0 obj 770 endobj 622 0 obj <> stream xœZMÜ6|œ_Ñ·8À4ÍoŠög×»¼I֙˹hº5ÓŠ»%YRû#¿~‹"Y’ZT{f1‡ØEV½zõªÈOJ؆º¿ðwºùtóiƱøowÚ¼¹»yõ± §D«Lmînü lc1zc¨&|swºyùó!oú¢ýñîÏ›L‰ »Û߼̈ãœd™coòªòÏJ Wq¼sCÌ‘i†òjï%'‚fñ¹_ߺ1!‰dB„±×ûÂ*K´Uqôצhó¾¬+÷Ó«œm,±škéö²å°T!åfË­ÛÍðB5ÌÂ,¡Ê¨0Ký0ŒÁZ³,Žõÿ $šKOu;ŒrA(ãqû2¾oiÆÃà‹ÝùØÓ˜LÄòý©¬Ê®w«6nˆ4,þúy"–1w8|O–ˆK+»î\ ¶äàÅpØ Y˜â:Œ}9°‘6˜S1îë°dÁh4{Ó–•_2#œe6 ßÞ&‚H{ùãåŸõý0MF”±qÅ]Ñä°½ºíþøqØ&L*´u›°u\ ³4µË¬Êíw“‰Ñ8Áo[I)QVm¶Œ"(~<æñëRPÞxôŽÀKgÉOõÙÛB2•áWòe:¡FÐøXÞõÅ‚kòÆû lHýð­ß˜6TE¿õåÉ®qo!XÀÁà£Åƒÿ¾RÔDO>ÔmOÎ9ÄC¾ó¶8Ó8÷ñqíïûP=¦Â ,‘)Œå°–Å\šX)ã\åáIMËÒFEWïêÓ}Ya+ æh³ÖƒCÀFlÜóçrÃX2$ƒ|‰Àa€ÿVhEÌàáM×ÕÀiå.B[ îÃW•ÌôçŸ ¾ê½À¹åÙ%¦'öXTŽ®ŠåÓ!Æ$E2. {Õ@4ÚäXÀ<ŒdñÑ:pÛ IÄÊÝ!ðG&3 ÜC}>zØbìÇØÈ4ÆFw.ûüþX,­ö‚[º€S|«Ïm\«@SäMs,wƒÏ‰w¤ ¡8¸Ç@*žù¯÷'„;Æj}>À‰Ôœ?oÙ¹2D‘ŠÜ6AûýÁ{aH]øvWŸb2–ZÄ+h¤K‡4„ç!÷žä\ªç~2Õ÷Uýµ¬Ïפ ÖŽ_º/cî‘LÚ+P,}ÈKH¹šÉñ³e; 9ЯÙÀ¢1ÍTËõÝ£€ì+ &Û&ôÉk 2€P¡¦ ùj˜ŠKr Ni¦[fí´«Ú¼êжõü+°‰¦ý\æá  zv͸Þþ̘±Ã …èÞº¯wõq­È£*Úå\…LÂFÑ´««.HÁÓhÜ´É«óàN;äˆÉ|ןۀ¾­ HØÔ¼ûzw>U\«$I¿4æ—ÌŽ©(ÿ6Á(ûzâ·*vE×åí·`I˜"ÚRdÓ!H‚.¡`OÕRg„H –¤Ôš' /d_TÀÛc>`ÀÉ2Ãõ= #ïz?¢ÂF÷| €Õ `²  Gé½·,(]w¥y§?x¥çxCÄeÄZÅãRËSSw]¨Ú‡‚¹bæ}}<˜)ž-0;Á¯U '%»Ë»˜©•PfEGB«ŽßÛŒ²¿n¢k8äŠó¦ö›ÚÓ9|^Cé2ä'Ÿÿ½Þ} +Í,rfÒ/½&ajš.Lù[jŒ©8ä¶i¨C`ÄAê“ 'ž²‚ƒº„øVýøÃSÊ”º-APÇ yóûߣþ”&.qE÷wM]1Ž€©â7oc êb ó@àW´O9¡eº×> jÂÚbòš®Ru\Í‹cÚ™sŒž¤øF÷Ä—Û6S¡ñuMµÌ8DYs™/ƒlÚÆ_ úÚ9L3u¹Ÿ!ß·LÜÜíç]Jà7Šv‰ãÄ>1Lã¥+ª8h¦ì2P£ä̽+¬hâ ø„R,>sÊ—ÔÿèõòA!ß߆8Õ†c)“ÊÄeLœh6/l¯[…)(è+OÇbêD]J*«„HdW§R‘EÈ’~zˆ.„:ŠÒi» «àSõQc¯bVtwM±+=›- *´ñÐ pfý±,’þpü¤Õ Å·!Ûè ¥] »CÞ‚Þ +†5™¨sŽ­viN¾Wn{S" _™½¥_)K-R²'î1Á¾O#A †~TQ‹:uB6»<¤MáJë‹0M’¼¢Lë$oÆè\aóTÑÜÁÿ>\ ‹b «ì»âèå¬3cj¤a¯.š'Çcu,}«³#'¥ì÷³$Èv£ìBLör¨L5v¬˜S±SXÌ…‚k¤ u­ƒ—ÄéªN®›PlAL±#ûåPÑùŸJ!]Ÿ·±Ñ3³}k¡¼BêIÑ*¹0I&/ûžwÚ|¶îû°qúÓ¹ë—VM¶2“_=ÁÆŠòvָŠxòNÝîQþÀº¯‘ý‹Ç³ƒ„ÍOs1vÞÉK–,Ÿ#©1l`äml:­Æ³±ªž1Ä âà]µÄÆ3vڬ̎mÖÄÂêÒÇ'0%Çò ödнOMŽnÃZ©¾žïÖJ·Á…¨ :‹Ó¤ä^Ñ)1V"¶•¢cïÕ3ÄÓº¼S»/0óäþ0-t3©k;a{'Ù„IŸð€>{?O;•Á­»ã!ng ¤@P|ò݃ß2¸×Ì`p±¿¿¤Î-«¢ØûX±lÚ­­’;´®¤Ö}âÖ—2dwC,¶’£<(4¨„pg¥×œ¶8ÅÓ¶µ6äµ–;`ý±Í}Š ±kjr½lû^\|¯p6ê¶>÷ïU‚˜²cÏ9}zžèQ®nnŠ€D¥:i¡>½†YSQÃÁ0Ëfç€Ï+Y\²ÐöâðÖ2º<â†Ò)ŽíË„¼×¢óc¡+‹¢Ž/C›Ú5 'g7mäÒIâHÆZ–›œh‰7ž'7”ñêhjw­þár†qGÅb³ÍHpf„‘òrì–þR£€;~³Ú`Ù2P-®dÝzïþ+)²R–Hý·¦Ü H¤fvηË" ¦ÁJ ê¥ÛÆøXW¥DÏêYÅ$YÍeUÚ…ý2¦5hÿ:– $¸u$æÝql^G ;Î{úñ×Ý!H)7ðJçù¿½"„¼²ËKǸ– L9,*Ö•2'Ú1|æ:äþxÙ›¦½¼L‡"ß'±™À3œT?œÀû++@O@‡ØÂ÷!>=9þêN¯ËÏ €1zçÇ»à85¶Í¿§Kn×¥@ÊMÈ­äxHÊɱÙ'§aãÿõö354™)av[aÝ…šlvµbUÎTP€4½zÓ÷Å©Á»7óÔ3®,=·m¹ '¦!A˜Ù*êPëɉ'Èid"íj2¼¶òÛ$~µu-p6÷)€Lç/ÁA±¥5²ðÛ22ìò®X‘ÁË#ï¥KÂo7l‚·f·Û}ó¢ˆW\ º—O²rêØÄÞ¬ÀYIì'ëúËêùGWÏjBZ€èeGJЬ'H+õwäÐ Ò>42¹¨)&M™`g/z¥óZ¯«C˜L.N>«ôI匴”ºÐ)“®Ûÿ¥SÀ£c¬¥TJ›Ý9\Nša% ŠÉÙ2HÄgfvôÓ¬€üG¸Ü Á³“»å¥£S¸(a\—öJ×…:~›er2¦&ÇܽOâÀ¹üÖE"ã­Iô/eMʤ×,•C6­Á,¡®ŽJñbŕUÙCQTþ5½ÕgÔx»Ó÷n<¡2¢F»£,¸8‹SîB²€ŠÝº»“ãF¹'ÿq·ùÏûûècÙªendstream endobj 623 0 obj 3241 endobj 626 0 obj <> stream xœ­YMÛ8æØ¿ÂÀ¶ŒÙâ7Ù‹½L°Èb²ÙöÒÙV·5±%Ç’Ó›?%’U’lº“Ì,úÐI‘ŪWïUÑŸã‹bøKÿ×û›Ï7Ÿ<Œá¿õ~ñËÃÍÝGÎÕÂ3o„Q‹‡§›ø_HíXáVjæ`bsûv[úêøæá·äÜJXø°¹¹ulƒ=76ýR6M\+<“Ú«4Þ C† ©M)›Í0Æ-“Vâ²_ß…1Í,/xûW»©Â†p¸UWÒ1Åð=®-ûºm†á»Ã½ÜÏH7Üo)½…éÅR(¦\X}XïVd/|Á§QŽië]Úøç즊9Qp¼û¡{e7ɸ|º›bÖZÏÝqq7à_‹þÙ^9B3eÚrlŸå>¸]”'6§up¨TL­ÿðö}0KH&ŒÀ}>´]ÿŸõ±>ôÑfÍül ¡aÖR\û°·eáä}XVø͈׿IÉ””x`wªûrµ ›,¥Õ¬ð‹%pÍ0ýÔ†»sWÒíˆàrRJtçK@Ù—7?–Ís†«ƒ^mŸ’Ö9M~ª@}Çã¶UB®wׯ[:P¸2km¿­º¸T0ç º«iæhoqãç †Ë¾Î9#Ñ×u3s-pìPûKórWìã=GrÆŠyO1~ÿác󜃛„˜XñÜÔ]¬W)O…WèòÓ‘ìJJjð€],eÁ„Jø¾OvaçÌÄñûÕáïwŒ±»YʼX¼‡ùö)Î×OÛÛ¿Þ¤/‡™§zqœÍB¢L7ÿ ºÆ[¼uŒÛ͇Á¬%“l¿8ÿÿw¬5óc§ ð}ÇÕ‹ Ap·t+À+¢D.f¢ Ê©Ü(V"¯CfÔÆCêÓÌë~@*`g‡€Œœ.3†ãÊwÁ̬–@`*Ø™dÒâ¦Üí¾†],3^b&%õ|¤Ñ—*%\!(½÷eø–{f´F\¾K8T6}úØõ­´ÕÇ*ínyð:§:iPCbæ‚ N³ä4 &$‚TLò$ .ÝÄ11„æõº=ˆ†ðC9c‰ô?›œÄðrNnœÇÓGŽ«‹ÈÍ0gì¾ü”ô‰K.‰zIt¨§AïNG4Ð;ÚZ¢ÈéBº×9K`eÇ.ŸQ°¥ðg 0ÔàÆx·!Ñ%]®ìȉž6%ñÄ}‡ø‚­V‘­¿µ«û¼TrkÙ@´X+ï>ªBÎè¥ÃNSŒçŠO%‰[³Òw±/ä­SJÿ¡§â¶@7^ëÙÕfz0+xg’¥ŠAìE*ä#èHtfÔMÔ% ‹ý‚•úÐ.¥+}¶GF"<¹¯žG™ïMà;o9.úa¦W†È!£ˆ×ÉR¦Ýa“=Ó×:*Í«ã—DZRUH“?”]W!•z¡¨aÈ^:hCЕËwí·¯ß°Ñ ı9æuªÝïSû¢8tq¤j»º©~N„ã¼B~êÚ`aÌ(€DBÒ“P®ªÖÔÓ^S€ {PÞOðŠ |jÚt+§I}^"ä$“Ũ²ÉJøÜq‹ì±]¯8âð:¬t@r^à}r”؆–$U?VŸký³šS| mK @1©êT™ª“ú DWèÿ_CÀ»ËšómÛôÁ=КKñmw»dº‡Éõ=EíEP´¡A–¨$}¸V³ …1S–P»Üf‘ áâ”®·)°p(Óè¶*7(b¯”%‘=ß·‚´ò¹„q£dv§ÃáXa¶‚ ê#Oýè³Ç"!¯”™Šµ¥Â¶)÷UîÂó*ðñ6ëÉáQ`$Î÷¹}lhô$qãÍ¡¦ Bd*BfýðR,µX3NªºŸvKUéà¡YUúp%ß/}Ñ@#¶ïËÕ¥-·±x…ƒQ‚gº–¯]‹- žÜ„€€ Á9žÿår¨:ëMbp¨šœ/êéQ@°HØð%Èy*2_êÝ=ïLJ©ºA>Ü=áx-¥½€Õ¼p;u –se#zê’<ͪGæ|ƒº:‰’Þ+–ÒÌûJÞßwùŸ©×#¥]âO®F8f:ENŒW×4/ëæ sØRƒ¦‹Y5Õ½—tJö믇ÔÃ÷^]Âaò0xH…¼`ÚqÿʶԆë⬊ϼ>Û=ÉIóª12yèKoiÕ,‡J œè&úÐ¥+M»Ëc^´_ª#„ ·‰Õ×tY©Î+‘l§ï©Çj8‡£Ùïã”ygIž^Š<4ÒÞͧþfÀzÙÔØ¥@5FÞ­Ž)£ WÃká¥DŒu]4‘F_¾O8£j°ýçvš{ëX=ÃzØšÜ\¥º ŠýQ™Ô‡#ŸH8êœOrÁ²ŽTø~Õ½,í¾¬àž¤\j’ñÇŒë? !TÖp:)''YŠ|Ù_1>æÔëm ’žiŒþí¼ârãô4?²e„Ïó™ñX‹žU/ÃmÂÏ …^B‡õÖ Kÿñ°ø÷Íð÷;c ‚àendstream endobj 627 0 obj 2106 endobj 630 0 obj <> stream xœ•WÛŽ£F•æÑ_ÁÛn$Óîûe¤•F%R¤DQ"¿G ƒ×l00€gvþ>EßÀ{våKES}ªêÔ©â9Áˆ$xüùÿü´yÞ<'ÄÚÂ_~J>ï7»¿ á‰AFRÉ“ýaãÞ a(&†§ÍÇŸY;ÝOû¯0¢Ü?m>j4ÚÀ'RyÛ笮ÝYj†{{?š$¢LHoÉê§ÑFbŠ…cþjm)‚‰·ýÑ<Ö!\®¸'[ ßg³¡lêÑ ñÑ|S"lx)çI,’”*~a#` qj´wÑþiÚÑ…l(’Ò÷îóOÉ<}©Òˆ1mÀ?AÒÞËÞ#¤’‰ [{/@'<„~îÏYU½ÙQMT|Põouþ°m³/EÞœëáaûš•CQ?=l£>Xì(YÒÛ×|ý —"’Ö»±Á1¤ETïÖq @HúÌ¡Kòiwî»]ÕäYµ«ÊÇâ[‘ïì“~øëßùÞiïÿ°I}Ü”Ô8ðÙÉÉ,PWE=ím’Ro¿“½ïL1”Ä„¥û«wüéùUïÇ9"ÔQÌ/®™nÙÎò¿t ŠËa¦#—£ßê%/óJŽCwÌuÏM ^ÔC÷æå“Ø5[Gh©° cƒôKŠØšWä‹$Dtõ}íÚWAGc:ðÅS†DIkþ ³ŸÆWݘ‚)Çt=Êfk0"ŠÿZÇåx¼¡ÚjZ,WVUŠ c?nW]Aþ¡‹Þ\õ'`e*œÍ"QþnìvÊ/[zÕÌ î:&Ž /ðná(2b}}È3Ðxg׈ãxiiµV7fhmBôžì—ËÄ׿ÑqØ < w9~í€É`*ζ~e­ î¦ïËG7å/×È5˜Ót.Åíë<´çÁ =­,n=„yM¹g_ʼX‰ÈïœÈ›£©«ÐTLÓ©.7y (˜c³@6››·¤ÌŒ+ª˜×üàgG„‹à¹èº&4©ž6ê~Ȇs&%,2äJ«Àj$â–"¹ªVl¢D‰Âö)xl7”‰‘¯jWUrψij:éc¦$’¥o›¦òŸï.= ·.ðŒ3¶ïRʸ½0‚¿®m/ÛÅö²Ê¯—©žÊ2ÿÊY00jæɺž­ ĤÌ07N²A±I€ü²4åÊøq%¦èVIÞ€µ[’¤© ÇÎÅ'%ÕZ(5ÌO†¶RãÑ_öÉ_›ñ÷.X–Yendstream endobj 631 0 obj 1251 endobj 634 0 obj <> stream xœXÛnÛFò¨¯PM sͽïðCš4@<´©ŠÖE@I”Å‚"iRŠëù÷Î^IŠ”sÞ]îÜΜ™ÙûeŠð25?þïæ°¸_Ü/±] 6‡å«Åõ;Œ—$E‚+¾\íî¼”I±”©@d¹:,ž¿ÚgÍ1o_¬þ^(Š„¢ Ž­¶‹ç™5BR:¬½©«£Yå)bûÅ×µ=(QªyX{¨Ê:Ûšu)fqý·SÓÔV˜$ˆ¿jï¼~GðR#-ˆ`Fá„(ŽåË„h£²•o…#ª5Ñþ[wN‘T`¨[Ûݱn‹MVš=ª©ð{mžuuÕ]Ù†$SQ‹}ÞæÞf†YPtfM#Œ9 —tÖ «6%ˆrîØyuÂŒ‡¶µ»ABäÈAEug¶C$ú­Ì, 0R¯u~Ç q©é¦×ÆŠ8Å=+­e˜#BIøþXûï±Neïo€d,D­i‹Êc„„Iă…Õ)K/­Ó4TfAQÖ/Þ99ØÈ Êg‡úä M¨‚k]&˜$RìŒÛM î$*\囼ë²öÑê‡!,È­›¼ÍŽ@ÀîQ¤ aÍÚ㫹è¹%&ƒ+‹ÊkFqªÆš®Ð ¬[&Ü¥bŠÝ¾A›ºÚÍåä™âÑÛDëð„@^s¾‘œvkå½ €yïpG1Jéîü:äQpË:DGžŠò˜8à ꊫˆ»ÆøÏ'½&‘1|VXÇRÀ‰&ê+3 ‹qŽ9”w›¶XçVu´FDðà:/0§Ã Ä5MÉ­À‹d G æŽf(§&Y— 3É¡µ'?lOSŠX÷_^½õ„BpÄGàD€™úŒ ’Râ9‹'t§4€žŒÄ(¨àd…{*(½¹ ÜóàoDGêêöî$ð:ÐF8Úù5F”x*‰<iNid‡Ç&°êÖÀÒ‚Ešý¬µÂzÊMûb³÷Г$Boï¡•¤xH ɱd€w01ý: æU¶.ó-š58¡&ÿ 0 Maöƒo<©;ßš¿30‚Z:_7ˆPa9«,°!ô +9C–É>Ùk¤o¢1+ ïÄKJ”öb7 —ö !š\q³gyX;u.Ë@¬Žxöµbt°Ë^i B2†ÒØ’Í©msŸ&ÀçŒÑ³(%X+¨W#3šMù¾¨ŠãÍŸ¶êCJRD#„¦¢wsþêOôùËÉÈ‚9q ϶©ë¢Êã †8$›ºD~1Å΂À#Æ£Öœ ۼ̹ݶQ!”â1ï]Ȧ.jtXÐÑtÄüP°¾úou†à c8Q—,Ÿu'¤ô±­Kw„*¤¦Ðs:ÔÍM ð.0 ··)¥ßono¿ýÏ/}|cRÄö¤&aÌá¡_©9æµ}sƒÝÇ>Û¢$Ø9—Tl?¾]1MÍΤ š‰ ž†ÎUõ>þîÅ-> ÚÙÐm‹6ß@_üx)xA58xs}êÚë²²¿.‹õuéÀÛ|—Ê#(Êæ“Y¸+Éû,9wÖͯNç'S¨úÐ5ÙÂèÆ"eû^› ˆsŒƒ"Y(”¦‹MŠoÝ8Lº'¼¶‹=3=£¼Q{|¹~ø–JrýÅ}¼g W)y¨_ûÌI‚Ö5NO\“=ßæS!…¡ ëë0m¨úô âÔØ5˜v™0)‰Ìl¯]y[žÌ¥œ†ï“ûº§ÿd+¹¯O¥«Bq«6åi›÷~>›fê3ÔÄèfˆQÎ!°îkÝ%¥æšü¬òé­D?Æ4M[CgG«3]‚ 4uW„ëaþä8Š×ÏŽcƒÆÌ¸²ÈÊâßX•88U¦=‘ÝŸòjã†hKÁÝáÓ—Ýó]bååò4fv¶ùD{œÎaò*@—FŒ÷±ÕQòCQ–¡ÃÑ]&@r„FϹÜOcLþi {\¿bFEXtÒ1Lƒîy0Þö |^t¬úF¯Á¾/"v+æcÜp´4HbœG¬Å6èuÛ·¶Ð6¦Š-†ï á’Ùvw0ª…¥ñ¨&iì—ýHvû½w€‚$jèU€¾Ý¨­Ø9ìØ¹­ƒŠ( LN"DÓ¥M|YéùqÐÊ+Uë‡í´¿,ÂÓ|©Û­§€zˆcuðc3LsŠDÍÍ_Î5B9ác§ûY¸*ÅA¿õã”rgsüÂ<îc ù›F Š/öÀT„ÏÏϦÝ3_„.¤‹V±o´ V¢½ûIÜd¡åsøÃÔ°¬<91ÐŽó(f¶*Î̤Ÿ}áli{â‘F29lª?Y6æ"ä•ÇÖª²ÂÄê(%ž6f¦;ÙµõÁ·« ùæôϸÉsÆ@ÀšŸ¹zxŸÄR—¬.ÜDñùMã@ÂñìîÔã–s(Õ±¤ë7G2q4ÿâ–=ˆiÿý'¸·Ë°ôó.P0‹­´{þ›º@ Õçýöã#nîÃ9NÙÕ§ÊU¢î×zç=ÜÜÓÇlÖ¯Ã+ì }¹Üãú—“‡ŽÇ?óM~ŽÙ³CSæ?Ì7oŠ‹2ÀÀ]ܵýeÓzĆþdeó _™ßÄÝgœ<ˆ„A3Ï$‚ú×5©ÌÁŸVË_æç{0³endstream endobj 635 0 obj 2042 endobj 638 0 obj <> stream xœÅXMoÛF|Ô¯Mh½ŸÜ݃/M Ei" @š  %*f@‘ IÕu‹þ÷Î~’”V¶“Ka@‚–Ë7oæÍÌúë#²ÄæÏoö‹¯‹¯Kb×Â×f¿üy½¸|K_j¤3šñåz·po%ÓR|)™0_ëýâé󛼊î§õ—,"l\oO52kp'Ò/½4+a&1ñKM=˜E"¥DûÅÍm]5ùÖ<á iÅ2ÿäÝ¡m›Î¾rù–’)ÄSÊ`mÅ)âÊnÿý¦¨Í^š!*°ð‡ 7…µÉa;@ÚMõih>mkV!ª”6¢a1­yßeã H¤) ûËÞ¹Nˆ ¹5É#,nû«Íëm±}fVHDêJë ¢4ʪ²¨Á’¦~ñsQ]>سY†È¸=íc>ÜÔù¾è=@œ3@d¤R"T¯…UûÆå¡ï.«f“W—Uy}iêí'I…€óLpà\Ò*øzÖM[Àˆñ`á™ã”3,d ‰8€d6zË¥Hiø¸¨Šþ™ß-¤sà€SJâ×nÒL"¢f,Áñ¥UÅHràmÀ‹ÜñÚ$Ø–]±ª;ûqØlò¨Æò$”’¡ìÊÚË’›P\EŽ6™B‰pÚ JÁ&-àèÌë“Ú½Œ!>¾þæOgI"Í/½H!ºXiEê •R’™PÊúsR RÒå èvÞ4ýðnÓ•íà¥Îq¬îBi0ÊÐ §N¥T¦¬rÐ'ü%ö®†®¼Å(œTÖž~Fp`$7K²Œ±¿¾Ü—Uîj’³àÿ>¯k_ A BÒ{Âúæùë2‚d§Nsñ8§Ñ1+ Œ­ Bn_ybOîáçkóóG)ƒøMÝ{ô 9׃‰fÇI٧䘳X¬4AœÆ*ÎÆÓ¶ÿTÖåpõ  I6f0BÞ—ì8fæÆ`­eB™ñ r ’jâýÌßM³¿.ë<ñŒ#Á¢ááÞ{¾’О”•gokñL€ßô´™¾Œ]^g,&T¨O @ªÎ!LºíÊGÓݹz$‘àêˆcv^¥ ¬=ÒÙ5‰°-vù¡ ÐöÆòš4¾+«b‰5+³¸ÿÊ| ¶G'k€•þ ª¸sùUœTcùu‚Ó‚1™Öß%¸dK|H…-=®™Î§˜Û0|p(›*;A¡t¬u^ v·F–ጪ쇚ñÀдª…¬zÌ|Aõ))ô"8nôÏ"™ÐÃB®)fXžö¾ä\r]øR£²ú<À0½(Ëvß¡«ƒÜ¡ Ô¯v ."}:y@ •ÑÈê½MØ÷yûx›´MÎ~è÷±£´Å¦¼ðL› X¡8_ ¬BÐB±†@Köà6Ý·IÐ jNtõÂiÖLÙŒ†|~täÌLU„ñ—Jr4àÍç¤ó*‰ —à€ëÑ2ýÆq‡Sžõ|Úa©iç××>ù‹¼ôŽA²ê˜«ß1î@’H05Ž;ÿ{µË¯¿Èƈýé„© !!5 J’qæùŽÉ$QO9®YÈ‚M^û<¢:V>«©ÝÏ:±äyÂ`оø|èb#.€:ø×t§¬7@Oç» &£‹áÐúe®qÀâå³bú–&£>xŽÉÒß4‡Ê Mጔ°àN1áTGs2„>( &p> stream xœ}’»n1E¥”û.‰”<~»Í«Ù*Ýò D€Ø ¿Ÿ±±QˆPäÂÒõÌ™ëkïd<®¼Ï¶Õ¾Ú3LZÙf[öØTã ¢b¼F±fY;IoÀ)f¥Ž[³­FO«¶ë‡ûæ«"ÑJ*læÕÈCÔˆ¡Ðfé5*¸´³v}Qƒè³øN»MhçñDIðNš|ò>t]8¤–ñDào‹µt iµP \*oV‹D·Ä@í4$Q´º€¿Ó,ðˆX.Z X”²´ÎÂîîs8´ý:ìÒ]4Mò…qZo6eœ¥¥މD®´1.Ë}v¦È²ÂkÖÇô³ÙÍp.ôÀµ->Â2i¬súšH±PŽr1Ò¥§SàŒ+Op\ôC—ìx(3ê[yFº×…þp“M ¥Ê³ÕÍMމN8dçÅ?©~I5tE”«—C&¡çE›ž³Bº±*tŠgc>5ñŒ°ŠÕF{ˆU;K_öVÅõÿº½uendstream endobj 643 0 obj 379 endobj 646 0 obj <> stream xœ½YmoÛÈÚoþŠƒÔZíû‹—ø.h)à$î(h‰Žx¡HY¤ì¦¿¾³¯$CJQz× ,ÉÝ™gž™yfõ0Ḛ̀ý ÿWÛ‹‡‹‡qkñßj;{u{±|OÈŒb$…³Ûû ÿ™)‚”œ),Ýn/ž]o²]›ïŸßþz¡’šixív}ñŒ`dGÌHÈïÜ¢FíåÈP–>•[ä1)IXͪµ[¤ˆSϹqgS‚¸Š§Ôw£ Ë|ë>%ˆ2.Â⇺| -ßS23ÈH*¹uwÁCTÑÙ‚ë°}ýͽ}Ó B¸Ra‹ÏõÁ.…¸a<Ú¹ÏÝ"G’òhü>ÏÖá0FÁ Mk7Eã^—ÈàèB“¯Ú¢®.Ýë “Œn7yå^77ÙÖMpÐDÅ3Ëâ“{#Îp´./?­ëü`*ù±É¼Ã”r_|t0"CaqC»$‘fŒ‰ôå:¸¤”ˆ>eþ=#‹ðíöõ] Hß=4]`X?0U@?º]ÜovSá³à(Oy*ÚÍä^’GoßÞ¼Ÿæø„ˆ|s¬3œö•ß×>ä ¦@÷¡°&žÍup† { Mtöð2ÞÁëBdb$®ÜörOrÜ .}$¤Â á]™g3„B ©=îEΘôöû×ׄ(ÓåE è/Ï^}ø!Ú«ã&õ>pIé´v{}³|sóËó@ÅEDó'Ÿ„ÀjTÌô[D&}ŸUͽwpÆ:z³/ªv•íÂÖÇ3¬Ú½ƒ‰RÄtbáe$&"Y¨;¯·Ù§ÀtÂÄV„¥úÕRH!DÀlÒƒY68}9äÃU“`(>ðƒŸäɆ0¡*åŽ/€Æ‘@´Pqƒr·þç]}¨Vî×HëÃ?fÇ6y‹ÂÞ†™ÈÃÛP€Àn*S û5[í•C+loàƒt³fÅÈÿ5–"[¦¯}èQ8:êƒé,R…Ï€Š/PLBÙ£Ñô—ͧíBîãKÑ©>¾;ä-“™¬\¢Ç1ÝíÓàã©ohÞ¦‰*õ¸ê>kï>TD¬u´ÿeÕ<ùt9O!‰Ò†¾‡€á’Ò/]VI€\ãTJŽWIŠtW%·YQvÝÎÈ„NY4žƒ Ê@Jh€* n`bHk4‰'Þ×eéü' L,%O±¤B/5Ü$‚¯b졚€‰êC öäM视&'ºÒ6o7õ:ØÎDשëP‰I¡]{Ecy)‰¼¢tOè†Vç-0HL“+¾=ÙvÄSó= è’)IÏê(ƒB) u¼“½q|Ö@Þ>Òe£’jÆ©* B qðÝꦩ–Õ÷F)S#iêmt<Ðà‰„ªå„˜hé ïÖEö±‚Ü+VS¾ h9"uÉzg áQm¤L‡oªá¬S­“Ò­ª÷Û¬ ¹ª!1S ¯ê6øGzz¶ ‰ ­ÒVŒª*xͺޕÓ9í÷Ûò¥A™®ï½.öM{: •=ÜF^v5ýЄÊ´Œ{6m¶o£`#5$j—@ –öó®Xe¥oŸR ¨m½ðã"COêãjMIB{³ÃÌd”eŠä‰_E.ZI|pUî^À¢ý#ü;Ð8€dŸ¿…çÍúÅò1Û/›]]—KhÄËïnžÏáÍÈËC³_–5@°,‹»å}a°Yºl_,Âq68¾î]×Û-89mK¹‹Ž0,"¼¸Ûã,!uD`ñs «Ä†eÞ®–Ûºu.´'J¸Óy¬èa®ÒþP/w‡öÊêð¤gp“Wq˜iÌð$;~ ³×ÀØù.ÛÕOyY~¿á¦”Í]ƒƒhv9JëÀpðð{â&ôYè ‰ðè0¨PöµU]U¶ì{s(–²jÛyÚsîrDBí`,͘m›owî8²L&ψ·@C %ýð„ã}Ê )oôy§» áthu¬¿ãÞjƒfÚ!—;¾˜Ÿ  Ö´¿óѰí¾.Ç^uó0zè4VÎW÷/!ŒŽÀœÇ¬Í瞸@Åo §UDøp†{Uoaˆ™D³oüÀÆãæàQ$ˆ9eÔq ÃÊ9ˆ­³6ÓC˘„Öú÷4OA¾ÿ®ßÕž!\ëºÓ¥« ½sNMè͆0Ü€Rý6vah^š÷Íûªp‡Ãh:U»`<æSšb!9öu@<ºoþ.b¨Õi:…•©['C›íß%s€†mN¼ÚÍ=]rä{¨‡Ü· ³v’ª“{€XÙ‡N;Õ´.šUZ½Q8î«z¬Š}Ÿq'¼¤é] ¶ën9Å©>D½EiâIÒ“½‹‰ãx¥«BÍàNÇk¨xREÜô/wúE{Ûm´õS7Ã$œ (ŸH1TGL¦çé) Ú›õy²=ixkj؉];QÚéÉ.)È–æŽzÿ ¨Š‚4Æ,å^ZAÓ¥a¸Ä®ÙÔ‡Ò+ÝxÊWÆ‚¤rãåÊu'á :+º“²ÝM޼0ï€ éšœSY.4ÐppŠš& j{q_ªf«ö”?ÌÙ<ñ¾W^ažäŒÑSÌ %p’©qr2ö§òóüÌð­üýãð†núv9ŒqãØ,J—ûåîáxNÎÐßPmÂ×X¥ÒøX3¼úÞd»]^å^SOL•X!ExøSTß*Ýî¾ÞeY†Ñôã_a®BËê&"Ûž6<5ã4ÀÏÿ²÷Æ8(“,y›A~Ú°¹×`ô¶w– îK¦`hK'T½Ü*»óbe(€©Í¨ƒÕxÇ>oŠp£|ߘmÖ𫱸hwàÈ£ãðä]±ƒMNyç7 FuÓÇ9¥D\1~j€ œ„ ż¯;œ­Võ¡šãS‡¥Ñyhpzµ'Yzv)¤”ÈÞ-œd ìž”wëü±ðÂCÌ7$)>7ÑŽeßið¤ôàr‚Ì=ÇFG³.J€›V„ûºnûjP ÄØØ¸I•š#Žåo³îkÒ¾7¤ô¥tI\-þ=þ’]޽yóz ¿¿:Ñ<ÕÚ¹½K˜£|:„ʇcèXä<”Î1ª[¯Šf㇑¢ÇcÇ„½Ë ì'ö§°ß»©dŠY”œAûžuvšÐø<ë¾µfäÕzœ_±Š‡Ò+m79«’ÎÇK{I„ÓO Ûq¢¢üôáo××ó ÿO‡Û›Å&0òÿìù¿ŠvDŽs¼ÌŠ_ ŒöÞ)ŽìªçxçµA,!î ØayúRí4©ý¬³>œIó)özé‹_¿`0‡4iÌmöíþñvöîÂþý—§I endstream endobj 647 0 obj 2563 endobj 651 0 obj <> stream xœÍZÛnÜÈü¨¯P‡ÙE4œ¾_„8H²Þ (ÁÆÖ>‹…AÍPÚœá˜äèò÷©f_Hª[£8Ä~°Ñ"»«N:UÕÔ×s”ásdþº—›³¯g_Ïq¿æÿYnÎÿ~}¶ø€1;×™D°óëÛ3û>§\f’œKÊ3?Øœ}÷Ã:ßuEóýõç3XÄXRxðzuöF™YÄ,Ó’(·ø®¸éEưänqgÖà4Fˆvkwå¶_%(CØo™oWýÛ2£’2·øscßf’HìÖꛪØô¯ °S·ü±®îݾ‹Æ3 ªŒ‡s*0ì!Ïç„eLÙ综۷—æyF3$˜7äsÝ»AÌÔï>kêºûëšý‰:3?–<£y×›bSß«x³¼s É=$˜_RviEØüt޵Îì5Ç8“¢æ§²à?µƒ‘ Ap”ðû.—õ~Û9‡¹Î0 ‡3±gÂFMwÑRfœ ¿¾ËïŠ~§~š)®½OJ -ü+þŒ^iûe’¡¤[Fý¡(RʆXç1Í(b½ó”±Œ€×ÆyÃÇ#œo‹íÊy~Dèn˪ðt $zÅ4a㢙ždšÁÙÛo3oE×äÛöÖæü€ ò*CÆ–hš Ç#-)·eWæÕ‘ uO»¤YW´âF8OÔž.‚î5ÝÑ:9:dIÀ,}ŠY«Ú“€ÌÂsl]Šì8 ž»¢KÇ´°å} ѾMZ=Û}®R/ŠúóìTÕ6ÒÚv’”'-®ocZ%£¿*ºbÙÖc.¥ÁÎ\}Êizÿ"òÏK¼¤¡ÄŸ‚¹½­£Å°÷lhCÄ«8r”RÛ‰Óª(Š-lS³8jzyŠCw† ƒ1”?ÛcNbxaž7MÛ¹LÐÚ‡¢*m6šÁZQ¯®ŽAÞ*¬*n‹m[8õP”{Î{ýd–ÊMþÅmŠ)5¾ïŒ3‰i°½Ý7öt0_ì¾S›’>™²ÓlrPØ¢Ž9sª`*¬¥µ¥iêÆ‚ÉW!Û›bW7®.ƒòpè¹.‚©‚óÀä&a˜äá:f, O.ë¦::."Å}¨ßTîb´‚í=ÊBã%©‘]™)+|ïo= ˜4ÊR2G£A} Ï!ØÂ»±­;§|Joð¸ÚÙª¼f|‡m ă÷Ú[ûPVUD¸~vïs~(»uÌídÌoò¶\:»”Ê ¥¦,@sVç=Æ,0tP¥C2>˜% %¢ Î͇ŒÐ!µë}ãÖ‰—C)²ðüF Š/ƒ;Kç#dáKJ9 Ž|teP»¥ÉCxí`*íl"H 4cÏõ°¹wPð¡ ±PBþêp‹Õ“e£P¢*AS,G iÄÛ6ÔÜÑm]’Û¢ð}4̵7«à- £J½ß¹É?•)mç Œ)4P£h3w —ááTÒ$-_çN¤ ãÕ{ÆÏNÑAàòxéçºí>.›rç'om2•c1x BCwaOм 7¢Zaþ2rm¹ È™VŠ$íè¹adb$’o*ß2¡ö‡Ž:UUîÚ"Û%›(Ô„ö%ONºr»¬ö+§×Âà3üdHu0”Q·¡Ùô¨®Ê¶kÊWA@¡ÃÐêkQ¯ND>7*ÎV0Û/þrýþê£+…ê·*M¡¨›§¡2y\²žœÿ¶4j†œr¼&fÖ ¢ÊȼjkWy×Þ,Ÿ§sª 'šñÃɲÞl ›É~ÐTpý%‰1pqHbŒ,\™¢IÌüÑ1ºw:¨´só¢7äÑùÆ ÑTšÛʃ˽íéy!!¡¾Ûþ Î$å3ðâ•XÐ 4Ã?;ê üÒûþ\Ðt*ÑÁ¦¼ªë/¾VPϳªü⊣áõ⥠(Hs3Aq7Ô>'÷~˜_2q‰Íuv/„Óg¿èäo½'@HZžM^nû“§÷˜ïŒhÇË3Üß?÷׿ægtmþšQôÛZí7^‡¦?9ó˜*òÏ_®®Ò;ÁXîËÒÅbN€oBþ}ÿG½*ªOeü™cvDÕû½!™îä("@ù (1ôí(µË|›ürù!pcüá°nâÅUq›ï+;ŠO¶ð·5ó7&,‰<ù? Ší]Ô)QÁ'DåcQÁhõic¹ ÕôÒê`ãÅÙ×èQ•˜9Èg¶U˜|©`8œ§€r§”:‚ð…b…Yxk†Á{'ÒGÃtøpêш„£í¹S4̯“Dñ°‰8ÔgÎñ)ÑS'DïÈë's‹ýÉ n¿7iÐÒ!MÃòP‡'Ý”`¦þN&Ðéw²1Fã/j\Äì6ù£ËÜÑç(Jñ“Æ•ÎG…Dƒ™_æû¯j†’Ô_cGÑoog×oÜt7“œt<»è4¿äÃaÖœsàžmÍT_æ¼>ÿ×™ùû2Ù¢wendstream endobj 652 0 obj 2705 endobj 655 0 obj <> stream xœÍYkÛÆÚoû+Tl;€4â¼gŒná6Mm‘:û¥ƒ¢¨•¼Ió±ò¢Èï§(‘Rܤv}X`HÎÜǹçž;û~– å øq7Žý籂ë|Õ?ÜáŸm‚þe&pkÂ&í‹îm‘–}úßuù‡n éÿ & kÒÓݲÛסÿW`¤±¢¯‹üÃÛ6/ò¬ó9ÚÀC^\`E€·À4– Mì·¯ÚΚO’xzµ §(ˆ¯Ûæž"y‹»rS5û´ÛU¶’˜FT‘@v‡]·õ´ˆY¤ÀµgU†硸«bS[$`aÏHsšïŸì)Hcy6/¥F27 1Š£™¶ž@5Öµ»}]<[û4‰ |Ñn+k E‚ÇÅC`x‚°dzAbHÖy—î { QÐ9?ª1¨UmB×Î-Ýk…õ¬Úï}a@¯ ¹Î](¦4´©1Éz³¯ÝvA•@41”9'½ ð¨cò¦©l{"),‰m—v}kÛ#‘Lïßo]XOÓ{ØÅÜ/ó$:‘"„„.zP.J°+ nB>Iš»×8O¢9Û¼¨ûCâ8¹ŠÁcâ ²Bâö黪ÙuT ’D!0Uucû¶ ´aX·€v¯\?þ—C/ø‘„c«Þ£œ‰ˆòÌõ HÑѽr*Zç0ßWëÝÆY‹Q˜œ:7 Æ[m±”ÕæçLÁ¤îÿÆU"6Љ„Ó»ÊÇ„â$¼¸Ê;¯®7uRÓä¿Vò¢T„>W}ã“l§bdweØâG¢hZ õ h!÷öwËÕ®\¶[0×þÑ®¿|abHŒX/˾(×Òx ‘µ{ì¬0§CV¿ å,#·ýªív]ßÙ€q0•#gÑt$¦©ÎàIÁBÜväþmÞä¾Ç€«¡³sÈ‹»mÍæ®j_›·_Né$§Š–ö|ˆˆ$ \ý)‹ûØÒºyפY>÷þû›~ôy€2„—RP3^˜Ì•]†“ÔeÞeË}Õ­Ç‘'“GpD¡ë…€þñcް^&"ã°%5Ð!¡!þ£ò˜ÑŠ‘ÓÒãšDUÙô¥¯ …µˆ•ç&UXLÒ}¤z¢ŽË‘‚Á£HÁìžîweî«\r=¦°AZ €š¤ûªïê>¥&ñ@gì˜=ĸæ£Ê8)ˆf s>,YCçI¬·o6.š0´ÅºN'ÁÀ¢ª]ƒ¡°} \V5 °ÉÜ+t®E(Cˆf±Ÿì+O¹ÐCCî¦zŒ#k ,Ƨ<’õéÉÓD€¦¢0¾éa›µ<–fÝÎÛÊ”¼&dœ ’5WÞv¾Ã0p cÛ«‹aüi>Õ(ItxÝÅÜlÁI„eÔ\4¼VæÝÁ7VhQ¡&ªæÑ€Ð±Vi›¯ÿ‹Èÿ-˜æ³o“'ƒsÚLÀ½oƒ,;)­7ý F{íÅ(¦¯IËv¼çÀbã¼-½—œr:²…éhËdËîÛÐ$e©4`ÃH0N6à±y¸©ŠÂáI™ž)ÍQ#ŽÃÆEÝLìŽÒâ’ˆœêÝA Xì|”–`q\¸Â/Ùà($5µÞ™rvJœšððQµa}^m§8ðøzuA@ä8¿Ñœ Ã,9×âÛºy½õóÐE!™4w<ƒÎû5P4 _¯‚PÇÖ4ï*¸ñ¾Ïû|¼ü¢InŠ nvXù±k6ïMˆÌÏ…•«>µò]µ È$±OüïyAËBé$n:dôcH‡1ìjéX‚ˆ5c]¤ãÖÓ×`úñ½Ò»£‰ç|· Êò:è[±‘&$6ÒG7“À¢âÇaï|&é¶iÈ[EIÑá •HtŸ§úOúõà"ÀZÖI}% w :„1Ì= { `úã „»Çè<ûB·eÓk©2›{WÅñ*xRÖ]ŒÊ`Î| ^ì{QÔrì«0BÃÍÏ¢âFÞ³â<•ɧŠÖõä8Á ¡ y ì±/Oêª*<ÞÀMŸÁÌ•+6“?‘Žùå¢eR›ÊreeŒMŠ•[[e¾·“Ä뜥ÃI"«Êj4\×0à>ƤRÏ#ÇøŒÒ¤*Ù¦î@B»$=Ï¡!á8ªÀ«"/4.:æç åL‡ik„®©T¯ž¢œÄœLªÀkÒëãmäÓéù_ÔU3Ù'a2fÙ¼ÝV}±öáˆë´8¤ÏíxýàIŽ.R§g^¹5º 7e×ÍYWù„vŸ±-Ù6Ï s/±‚È7þ“«¹:}ȳª÷HÃ0écæÿáxnüàÓ»à¹xè´_@?€’Ÿô`:ÖìŸu_f€/4N’Ék;g``‹ ÷xÉ0`¿Ò{¼³ÿø/ŒKØ`[2À¸ýDQóê×÷³Þ˜ß·€ÆNendstream endobj 656 0 obj 2359 endobj 659 0 obj <> stream xœÍYÛnä¸òè¯èLØY ›Íû%ˆƒ —‡»Àfâ—û"«éieÔ­I=¶±ØOQ$K’[î™Ml0”)²XuêÔ)ú㊶¢á_úYn>Þ|\±Á–”‡Õïn¶ï“+GœæZ®înâl%”!†¯ŒPÄÂ/7oÿ´/N½o¿¹ûç 3ÞínÞ2J‚‘Iâ ·Éøg?5‘̨d<¿68Mrî’í}u¬œÊò–Åq7|mˆ0B&ã÷müZnX²5÷µ? ŸkðÓòdþ{SJûnßq6½àFXKàv« —DÚaù_âÎ cÒÏÍ9¹ º°/âBÎ¥Ê.| &¸;cè¾&M "_½ˆ&§„È''Êé¼K{>~Bž˜ÓÉØï«.…ߨl,›Ã!V2b9Ë[<´MŒ!XnÜ}ÞÂ(ýŸcX”ãνHáìó*úJ‰`Ôà¦ß'\qÂ…á_t–4‚"®:ŸcÀ)Ãø”H¼ha#%V¬6Œƒ1.-ª:ƒ¡µyHþ3§òAÛþpÚömQú%h)M¸B°ÏÃm(†»oÆ ärùTÅ0â¬ä¯Gµë‹þÜ õÆ Q#û]ÓõƒUÊ–ÇC:ÊX«æqrÕ\b°ªƒOUÈ$Â}¬I>Vu¬ÎeWwUW6ighvw©6Úä5xû~_ôù +ì5Gc `¡„SˆxßHŠƒM“;„@`å@¶s©Pcúeb˜CtžÚêØ§âÂæ‹Ýû²H¨"Ü/ïí« æ{¿‚F¸1\âíŽå²àðp«¸h½¸D™[—cw*Þû²9G×_î&-Q—®cŽŒ£ó¦]öê†#Ç<U_íêÅJŠ($cHØi¬%R9ós¡9d åKHB%¢ëÔ6¥ïºÄÀéz†ÀçŠgÜË íÛ„`‹T«§ÚçS$À/›¶õe_?§óÓÙ]#§ Å2\ê$>1ºdÈèS'G~ìÎ1..Ðf²þª¬|¡!œáù;Ä%!£:gô!æÂÈ à×jy ñ;_V»è/à„ók¹Y¬­sºí ÿ_î‹cÕŦBí";ß/ã *Ë"Iìüýùý­X‚›­b¥˜z‘&~=a‚¦½„œ9dN ï,‘ÖqÙAàukfþÉÅr€þÑ:NòC°Ñ§SݤPh€hLl9´klWKpÅvòG@õ€Ô SðTφý’²çT´E]û:—­Æ²=5m?EÞµlŽG(@;)‡º03rNlë¥#¹¼’/N´SÑÛÿ´­OýÓÓb3ðtm$¡ Ž©TµÂMˬ,Ž)ãÜlåpÎsò]S´§¶ré<¨›‰º@ @¤ðFƒPl j.ï9¥D äúRæMÅÊÊ`‹cWº㥀骺h³hg8Ê|¿ov£~Ë.Œ†r0 ²@ d?æñÕ%ˆ+3‰c^–ú”PÔmêUå ÿ#®glµRÀ19òVš}`† ‹Õ”M>¶¨0(àëÆ’Àº6­ÎåÕàò|ñ·¾´f„LÛ÷ϋØ0K$‘$*‡­…¡4é2aJZ}ÍÑî”/4¯Qô-¾à´FUƧ²ðì“Ó£ånïcÐxh88÷möÅHôÄ+Ì e,„hÙìŽPÏàû‹€}“öPÇtðx+Œ‚e Ýç(‹Ùà žKãÛïß-??AH¥^%ÊŠ®IÝDX}I2“’ìö͹ŽîåSïLKôØŒ5”ï ãUx]‹ù¸lˆPÆ@]fhˆán/âÿIÔ*zp.A‘š 1Û~Œ+h­qÚ*êÇâ¹»´?‚Àˆ§s›NM¹Ò~‡ð|Þ]ã|ö¹ô¥Üûòäú²k¦ ‡k³W‚ 3ÐÄøUÿñƒÿþ H|áIdô* ’úë7Hú'ÞàÍ4ýóm»lfwœ¦ôÂÇ RIUYiDZÙö]Ù/@°-ß ®p`¥¦±~“Ï™ƒzÐl¿éA3ð ñaÌ×Ó“>'ì*YVvà#¥ËÂnsm Y.Üè‡Þ¤Î!‹é_ý˜›ÑÜþSZ})iNrVÿhÄÿZ *˜¨ô¯ë±H¯¥|ø»ÅµÙËdÖmÒ»„s†DïëSži¨\ši&‚.°nÙQÐTöÚûÏøR9ïo2¨© ™×ûÒA‡ãS«Í笺ŠÏÕAFyu€,º)†"dŸ¸BTR³zñW-7ü?ô*"V‰žjþr·úÛMø÷/”w•)endstream endobj 660 0 obj 2077 endobj 663 0 obj <> stream xœÅœÝoÛ8Àû˜¿Â]`£Š_"ù‡6I»)Ò4פ¸}(¨¶œº+[ª-w»÷×ßP")%‰KãP`³ åÑpôÓp>HŸÅšÅêŸþ;_}?ú>Cõ˜ù3_Ï^ß½üˆÐ ÇQ›Ý.š/ GOf”ÕªØìÔøË˜Ìd$œP¥Ü1Jp$°œ³8¢õÕ·ê:%„a¡¤_òúæ0+ ãFÍci™l&@fB„’ WQ‰â«å×2š›eßíᦂIs›ãæÎ‚s";ß®ç(#ÆXòtBç·³àH& ¿²ô1Ä !É¢XÌJ¤ú ÏëõÅÑË‹÷³j»ÏŽ^þg†Ž^þ®þóúúþ\œÍþut~^V$AˆaÙE#Õ£¼ÆztW¥•¾Ã1¢ðÜùa˜Býq™Þgób¿©-Ψùæ¾,‹­Ó´iÓº0dRŠ(ù?Êêws Ѝ©jæDIÍNZ–»bþgVÛž‘Öóèß\¾zû¼ ¨ðî•?5ÞÖp) zz&’džÑìÏj[lš`0,˜µˆ˜sýHe±‘ÒXAF°Ž[+\o‹ª˜ùó×ÇN¢D-¡èô‘å S~x:!ìcÍ£VAÐêþäúÕíïW¯ÞŸßŒÀ1œ†ƒ8¶:ž›_î÷ÛÔ ŒGƒÏöK>tÎeZ}ݤël7*ù8AHD *Y¨’éÁt¨X¢îQCµÍ—:[6Yéì©:HW«ìY› qJ®—oôXLì"Þä0Vi×uú±¹óˆÐÄäÕ6Ýìòt8¾µøyL؉ #q0ü|d9ðc`ŸƒãGcÅOF~Ùß×k†àIði†SvÀVݳ싎$)âfmÝß߯6Í$â(æÌPØ8»$’ðxÌØ:܃˜!3”YM=fê¤BÍ`NÔG–ƒ<«ÈÁÉÃT©ÛI`îòts¿‡`üäòÕÕÛO¯Þžà.œªƒÜµÊžeKí儚•®ªèü b?"ìè·â‹Yc±­óô.¼fæ5¹¼"5Ÿ|~Q6™ ˆFÄÖ•ÊyÞ57ܦjŒG í+ñWC>“Ć“¿òcf®ª²æ›1'6PýÙä](1Ѿ"Õüó¯#Þçâ$Œì-ñ‘åxK0øž %–¡·$–ª–Üe›…JTO®®®F¼át|-¬vŽ›ÜGÌÞ}xÝV þób½N7‹š@ñ¢Ï¯Ît @ÆÄD'jH@*$„ \õü!×\šë´/çÊ™›W2ß(FùÊÉVœ„˳|d98“øàœR•bÖ$,‹í<ƒüèG¶ÝéP"ò8¶áÈ€"œÖC·z¿1™ºÄ†U5]±N`Ù·oô€ˆ-c÷vþÐS!Ìø~§CXSb!Œ„OW˜ ˜$4íó Ôx\•°VLµÊWÕß#÷°¤ K*ã`5x/Yýˆƒ¨@Õî!ĹХîå*ÏîŠ}Uî«»uZÍ¿ž\^ÜÜ>Ït@5™¶Š¾YåÙ·\ý]öP­}2xC!-ÕÿõÚ8šöaH}Lã âþ`úÈr@ÊéáÛ4Á¦ú^Sª¼Ä*ëØZÕLÃ):ˆi«êõSß«+Qu@œDHÚf±Ô.„^¿fšÓÛjDÇ¡R–˜K9TNl©v´Cõ±“/&ƒe“^²úX ˆžT ©KóøGå}ÝVV@ mU¼)³ùjù·.ÈÄVžÉñråx4¡OjdHÚÙ—F‚,“ÚêÆ.[舚d¸•!šÑg2Ds™î•IåûH·WÖÍmžáü³yb·oæóôƒEBUñ¼d9¼>õà Š„©úçÅ}šçº…Ĩõ{ã¢î€Ú¾X­¾—E¨. “v¢‚q°dÉK–;Œ'wz¦cÃo±Ó=Š#ÙþhÄȘ1œºƒ¶ þ•€ö4*çl°}3¡é3_'51”"ªý =ÆS¿ØÊ t³ÓSÿþøŽ·çendstream endobj 664 0 obj 3173 endobj 698 0 obj <> stream xœÅœKsÛ8Ç·æèO¡ãÎÁ Þ>8±wãl^K[{™*#Ó S©PTóé§I l4‰@»åª¸Š¢[?6ºÍ|¡ÏPý£¯6g_ϾÎpsÍüZmf/g/î0f³8Šl¶x8kÿÏA‘˜IÊ#×7g¿ÜnÓü>ûñûâËC"2†÷ðIT_ø¾&ôµ›ü>m®ÊH`ª/6+"E)åúRU4wÒI}íöʊ|Wp½˜ý”3‹ˆ5ÊÎY¤fÇ$€c†¼¼hˆÁ<ÂÈòœ˜ç©¾Õzðž`bDÜ@Ž©#©‡Ç†b›}LàýɆà1ÑNJi¸pØË–ƒx:=¢™N=ÅJMq³fXDHr³ÿx{ùÏ0‡S:s§õ¶Ìòª Hà3m‘g·ßn‹²jñމñ×·Å®š¯ÊlÛÐÅ UDÂpü þßGPç1P)<ŽU(ê¼lõS¦èÉ©ã0ØP·L‹/ˤZlÖF‚HÐI”=„àð#ž8±<]xÓý‰¯«i 6 âÛäSzñþýûP‡S7µÕׇæ›/õÁôɹBƒ+†ˆ0Ûý§>VÂdO—w:ôÅJX›Û Q¦Ò».ÚK®2ß­g‰@ÔÇæ¾¾SŠõ~Lüë1N‘àÁ¶[ž‘@'ç™ÕÉkËsšß/Á—,ËïË*ۤžIv8CdwJÞx$9dWšVoƒd‹úh  #ÜŸùy™î¶E~¯¬GÏlEuÛUÁžÐcä.pXŒ‚%t^¶ú!duC®¡!¥Š(1^µÚ·eFq&¦ULªD±Ó;X1]gº`Ï#ŒmÐ ‘Àu›we9ÀºI†›¹ y>uÒ"y°<ÎË–ƒ<Éõ« ‘'ˆiVk—å![§·—‹×ï/ß].œÈAà:™óŽ)®Œ§ûmê#VB‰Am›TŸód3b?õˆëÈò²åŠ·l§ŠÉ?j¹I~ŒÛKjä©S9‰§ÏÉN_”ÈÆz0¸l³ßèÔ=F¶ x—ýiº€cöe0&4¤Q,mhø¯?«1X>S椱`Y’—-¹ŒN>‡šN.Å‘`GäfùHrÃi$·Sùëä‚Â|•Ti“ûP°Ïùß²ë1iNÞˆ –yÙr°KÔäc¨éìÖÇëšÝ=d³åÏ©ûx8•ƒôv:ç­NujÓñ_ÝÈ=FâÄS̵úØr …Éä3¦éH!1ÔÏ|eÜŒ4øÈ„$œÔA®:±sû¹,rí¿@ áĈÞ>ÊVŠÏÌŽk8£†|èB„Æ2XRãe«¯ ¾Í“*Ö4ÜjØ–Í*}KÖóëWÞ_Í]í¶³€"‡0;9OÛŠ!0³I¯…Ïæ±<žñbeúuŸîÚ2 ø®¶£·ìGž4œÎA8­ÒÿìŽóŒ`Ë$ßm“2ÍÍw¬l½úe–ëH²~S™³ÂWÅf³Ï³U×$!Jö,ñ¶,ªbU4~ó Û8;|õ£«cfkçCï¿­ûsžGNØc~p’p5+/['LØéÛä)¬“î@¯Ò•gxPê íXãªy@d„düÐ͇/ŽoŠûù‘ÏРp¥'/[Ñô€b2€†¡»Æ«2Y53O!ÙjZ³G@±CȽݛ—‘T÷v†ãmP}.i»Šm«°os¯}ä6én—|j]`ó_$¨î…ÀÆ [Øxu¾¸º¾»Ó÷ .̽&ãXØ6æQ™˜ÏDº`$q¸º”—­~°ÁÔé›è!-1½èß“¬‚<çâÝõâõ‡«çY¨oåNáë¶©C8ÀŒoìy#õ°÷øÑ‹v½* ×€*ÉຳÐ÷M©}ˆ¤äÙõñû0Ø>³ê„Q†«ŽyÙr€-åéì‰à¦]ƒ=ªÎðñpJï´ŽD¼€ ,×e„Éäp:\æðY£N¦{á^¨û&€î1·N8E¸ºœ—­¾$ ¾£Ÿpdšå æu?õ²š\U (wõNpxÖw¦NLR[—hÞ˜Zè.Òµã=CúA ôéçÍ › &”]ãËP†è3ëNri¸ó\[“þÏ­º!BTŽM«‡v®êŸ¿Mmendstream endobj 699 0 obj 2638 endobj 729 0 obj <> stream xœíY[oÛÆúè_¡G·±6{áÞ ¸@£$nc;ÇfÐÀ/´´¶y"‘ IÅÑ¿?ý‰ ¥HqÜ¢)ü cIÎ|3óÍ·³äû Fd‚Û?ÿ;_¼?x?!v-üÌW““ôàé%!Š‘àŠOÒÛ÷™H‚¤˜H,¤«ƒÃŸ×kS,òß§ÿ=ÐI’H¸/]ž v Ĥ$~íåëv%(aLûµ_Ló¯¼2óÆš`HkÁü¥gYåïÇ<˜]´+D!–£W›õº´7JŠ8ÅaÝ|zIÉD#-¨HÚ8¦Œ$ÔdJuH{_zo¬M‰´"<"íáâ-qžU†Fœñ€Öa I¥‚k9AŒ0¦üÒÇÆTE¶´a„UŒ¬ç)”(B¹)?zˆL²ŠÂ.B)´ Ù¼q±¤D@ÌËâ»»Me,æ„C2uÌÑ}Unîî­GU¡2^p†$hÌôºÊ @oëªÆ:Ät[•……MÁ1ÁÈ:+Œ ”B•½DM™âHód2%êeÛ (k—<ÀXXªõIâÉÎøí° …i|½ U4Âxg9À9¿øÝÒÔÈGÂe´ðÒT&Æéœ×–³ˆNÅœ›Õ*«¶6& 1aºëhâW¦¹/Öƒ†"4$~S»ª¶JÝ•cåÑj«ñæüô?vXÄD`Q½­³ª¼mÈx²‡Ï÷¦t[nlE Ic¡¢.ÕH8 S¯M•5ÆzM k£4¥wÊVŸð×Þ -£ÿ"I"4’9=€,AQÂ-&b2…Æ€ÐrR£žås§FŒgåUykI˜(Ä èµ²±’ÅN­F ÇnW+ œbøô È•ç"GRR¶‡‹Ë|•7Ž 5BÇ,ׄЗ#Ìéô±“mhÊ¢¿[O åÁnQÓ6O1-Ä–Ñ/dÖä¥e‡ÖÃ:2¿,—¾÷@1© {YzIÓ*ù!ÈS‘ÉœÖjBHéh ÛžSáQÇ9$$æb,œaÏ7÷Y㵘ã(êžæ i RQ§ÖUéUŠj2ú!_øÆ…½0‰!ŒvK¯ÖKD—DõÈŠ…×ðB1Y½õ‚{Î.µ¾«ˆÆHÇQØKY\m;sžgËåÖ·&<1,9IbÉGs—y“»=®e©Š*ÞeÀx?R Lo5„cD•ïG:Òé³×OO_ûF"Šß?»¼RÈJœ*S×£ýã ÀÖ¶¿\¹Þ:ýá(„VÝ ¢‰ !ù£›ïè†4š ø¶ÿT¤Ñ"Bu}ŒŒ÷å¨é}{qɸÖ!KãQ¹”lŸéÁþ/÷Q±ñ{EJÚy1QQmÌÛÙìüÍ‘Ÿÿ¨ŽÕx2=ò­F[ééW³W³g© ´Š;Å»mŽfÛÚ« 1oYwAû`¹,}ëÀè$©þÑS ¸Î…»-ÇàT á Á”Áí!6_e¥eꟇÚtžçˆi)C'ÿ4êR°›éÎN/|ùw¤àН¢ÃëPÞjçV½K_`,yÀ²Èëõ2sBÁ û‚ëïmé(Œvºf ©nÏ=Mggÿ¯„<{þbç|–þvqùëñùÅS{°a¬ éIÄ#å#z;»Ú‚ë š§³Ë€J¨GFÕÉ–U;'”ÇÏŸ[÷"éjÉ8œÞbä/Ñ£ü I"Ó@V˜—…”ÃŒî¹uÝnBðÇ£@tÿCôÏ%ÿSûÔCòmÊaÀeÑæëÿ•úÕ¯?\S0 ·Iðo Y| þZ°õ§èÂÉÅEY1M`êæý”\ΊìÆÍÍýêÚG‡ÉÊo‡ ñÛö]€Ž‘?d~¾Õ—ÎÓÓ09h¹{ea†©¼1ËòÁ³h'¦GÛÝ Ú‡}ò6 â#ÇØ¥ZI8µ Ú˜Þ»Ãgï·ÔÜ1o‘÷“!âêd$UÛÆ —( ‰êÏoj3¬Ö“éÐç;³Û!æ÷Yqg2ØZ)öÇ·l¹q§'XçI\÷spA˜ƒ{Þ>Ó±c4Ú˜RN‘䲫E£Anû£î8¼3͈ÉÏ0嘱£Ä•¤}±ûxcÝÕÙïæ.åܳq_Ë^Hé²ÞÜ.]}†¬²úÝÀª¥M'UòÛeï¾ ¿ ö¾zñìýÚ;ÊÞ«m½,ï† ©MõÁóûëׇ¯Êw¦r›UÒ~…d¸ã³£íSŠ!½ä‹Êõáÿ®„ñÛ_€ðŸ“뻬1cGëêÜ4_Éx èÕ?ÿÍR>==›]¼I5¶ÞÛŸœRþ›çeQ˜yüšÒ;7ùÊs‡Œ¶Ì@q=2ã´¦o½i†ðìÎþ±Æ~hrõ Þ;-—ÅH8€n`øÆ4Æ1±y§û>$9¢d÷ˆ'Z}î–#G<‚‡èb:÷U&«K{¢ ß-HÒý”ОG°b“öu¯/®’í³tòïƒöïe÷¿ endstream endobj 730 0 obj 1868 endobj 733 0 obj <> stream xœÅZËŽÛFzÙ_!À Û€U®'«8›Á8ñÀ6’±ã(ÈÆJ¢$Æ)“”ÛýSùƹõº$›”,'ÆŒ{Ñè+²ê>Î=÷TÉŸf”°µ?á÷êpûéöÓŒ9[üµ:Ì^,nŸ¿gLÎR’&<‘³ÅæÖ¿ÁfBk¢“™Šøàpûä_Çc^®‹/OÜJJ(7ðàb}ûä±&ÆÀoxÛ«wÎ/ Ê‚í{“°TÈhÊÛ‹Úš9% g"šW­{]Â’à–7þÕaMFy°­­E¥‹¦_OÇcU»÷!8>cšp¦\ls)$f6×ÒÆæ}Î{‘A¥kü6RiMùÒ¹)‰á¸Sî]×$•ägo”(ü¡*ÿÜžê¬-ªÒûÅY?çs£‰Ô&™Í9#Þ¯Ÿ3÷$3„s íÞG+ü ¦jã£D£‚­Ýå!{Zb¦KgKa9©¢íÎûj3”ˆXÍ:ßçY“7. (€dæÂ^Xg(@¬ÞWÕPCaˆ4¸ãM}¸s9à‹dutXQtx—þì”BükJfBàrÞ”*!5D1™òAAµ©‘ª«èçqÚC–òšÆ\¬ªò¦_R¥ Ì4¢•³e±/Úû#xŒÁÁm.Œ‚¤³ÙœqÀûà·r¸=•Y›ïïÚ EŸùØ•¢*:á²+ª,%TéØ1ÛúŠr¨T"ãYÓœn Áˆ´ãÂY¡("ã¾:£ÐBþí2½É|Q€HR3|S§–•‚¿®êâØbS‰èdÓ5ºàDtíi iaR¥—rµ¬+g„iìô»&«R9L¿N©ŠÎf¥£–­±&eÕ†ŽÅͳýÞ9´9û\hݹ¤ÜMîiA¸Ð˜™•…XZU€·ñ“S“¯«j8îÚ¬—‚Eÿ¼P\ÞG§ä¼ÉHΦ±! ¥Ä½ªº¾ãˆÙ`é~ D8Y×ËÝYØF;à‡2s9*ªIÑç3ís¬ó&/CîæB§Ä2N¯f“Ï}`‚ ì¬/mB× MŒN" šâpÜ»784t7øÚ*¤‚¥TwUC—ã<šé©\CqZøÌ³ã†$̲lnÜ#‹Wn†EoÙ¾· Z#áëj¹ÏÎ{;41AwE» 8d)cr>]bhÅ• ÝËÆW0ÐxÚbLñŽN§X¯khFÿrCP­SMà]£‘dVaê'„§:îµÌÇihò6tœ’¦ó¿®NÛ]dŽu¬A@qzýîƒÑµ ™T_ib…šœÍ%\ðñLN°…¯ŽÔë™ïK´RIÌÎWµ•´±ÂÂV[I}aßz[®ò CdJãZßyÀÁt-¶¥g†ö丢¯ßhèr¶^Ã4Ý„ÃJÇîì2>”b"Á^T_Æ:¡Ë€LÅET¶XÐÄà™yè´âE×–aÿÁV“l:Ùó¦et¢h=ó¦ SMÖg[aBž£ØUu8†sq_”‘{a®¬ 5äd ‡Ûâ7ÏBŽ@Ç|nªý¾ MP±Þù6›aˆf/`ÆÁpà!”‘ÿœŠRÍ4®óáÉ/§¼A½``(çÎêžNîcuO§«“6%@&ÑìªÓ~=Hæ6oÇ•þÌïòý1€"Q*ZyyŠJŽjäè¢ÃáW˜‹8²Ü+éEáujN0UïÃPäÛ­YÕPr¿Hr†oxäØÝ òu&'pNÐcâø<„ÜESäåO¸ ³soÛÝWØÊi‰]~塉.Ål.ˆÙ >,ý éuNS…! È 6y§T„AÊbcXa…Ö»f¬pн9ÅM%%çDþÖÓŒ°÷-Œ_ …)q–­?M2Ó+Ve«ÖÿOÅzn~á9y’ÝûW_ …§Vÿ+á) %©à§ëôé×~§µ&ƒlp*¼Ö4Aiª ¥ùâíÛ b4‹wqèäÅ×å&78¹zÉNm/³,ýá•ÞëM¬¼DÔ[ߦ85»x󵬪öŽ®HRQЃ&8è<×€3 »c”áâ#Ñtb}M%OnÃà°*Ï\u(/ÊK¢¦pm›9nöZÓÄlÝæ§µÄy¹ðã‚k¬Š)À;Öî\­)ž«mQ?I–Œ ÚcÖÃÉ+8€Œ5¼(-ñC‰Ôz¨`'5Ûd1}[‡Idº¦ñ¶áN·nï®õX;õpÏ8ÞÇ‘8¤¨Šù™¤Ù“Ò½- n*§üJ9úÕóUqî­ ÏLwÙ7ž“7{A‚_šUStUçÙ:I ßÞÔÕ둌ÕËÌ_j{ôáã Ì`_8=ˆÓÒ£n²ß¼œ™½ÈzJmêÊîÔå6'MÌøò¸×?‹öÔÍv˜–mµªöÏS2Š^¯V{M ¼«ý®\g½ÿÑù©K”¾¢XCù–ô—bö‹/ŽK¿ÊýùsØÂýˆ‘_Z²¨¶A3B!†^§?à,a³ò²­ïR(Ãr„‰÷à´1·=ÍL<›G!ÂDãÀyù}‘‚ÐDƽžçíêytåN‡Â‹á²ÎÀžy&”Æâ+6SÐWÌÞÖ cÛ@%€„û•ßi’$IwÀê¶_xê%‡ SRôl@/öYùq¼“UÍØàjOè):{æÙe¾-Ê2ôŽD ¤ET‰{ÃãGljÈ6½ ‹mYÕfs®8(1é _J> Df£þÉþùøAÐ?åÛ¼\»*Íã'Óä^³—_ _Ûá*aè¦Èý1rhžÏCÓ°ÉW5m™ù¯ŒÂÎIâ¶# ÖöÝ’È:ó$.¾9…CYÿÁuuÈüøBÆzáOesngå×d`·Ç„qö\ÙU>Æ¡+î&­ò- y÷Ã=‡Û-7×mg¿)Eh+–Œb¸ôª¹néUU},òqþ|+6>;jRõ•`ÖWîx©b£œÜ)œ|ÅíÝunl³6¿Ëî›QNÏ/í‡ÑèÈêõ]èìö.lÏvǃ-Û¿¹e{Ìý> stream xœ­Y[oܶú¸¿bÑ>زŒDêjÀu’ƒºHŸxóâ®D­ØH¢"iíì¿ïH"¹RȽ =0‚$#’3œË7ßÐß—r—Nÿ#ÿNÊÅ÷Å÷¥;ÈÔ_I¹¼[/Þ}u]o£8À·\g‹q‡»$aˆÂ`Eð¡\\ÿ^׬Jù7뿞ƒÁÂuº¸¾C½ÈuA;FÙƒ 6Ç•²?‡È‰§D¬ûÀ›^Œ`—(qÒ Û=8Ì…ïi#Ït,ei/ ‘ï»®=íêZ4Ãþw_ûÝ\. Q¹ |8r¹Âò¢aùoƒQÅ~Êx9è ÀRß—²ÕJÊœPËxY7¬m‡rO™ß²æ…5Ç•ëFÇd ÿèýyLe}™Ê\´ÃÍp€¢P9ñþÑÜLÓTÙ&Mðú ÛM(¶—™Pˆa!v‘l¹q ¶a7>§îÂzüúÿPWµ—©»ÿøfL+Z2Ãó³@{˜`À`‰ãc–4Åe–@øÄ®I¥^„¼ë$´ã¢’ˆ§>ÔèD" cÇÔL •æM†öÂhw›Š IB’—´ý&s£è¬º.¹L]Çʺ ék]<_ׂW¥@;a¹ /y1BÌ|±õlVuÍþùÍèÒ0†ˆ‡gJ\ë• a€<š¾™y£Ëá­Ö„Vô¼Pƒ^Nûl.†kUF”¨TÆZ™öt[H´Û¸%!Dɻޥf=q£¨˜i³>xÚ6«x„tìŠàŦŸ®kÖð4ѽ鳨/-`}VÝäÕMÞÝ2\sóRÞ6Yâ:^$—Ø;,£·Nä8Nììâÿô߯ox}ëÆÀaRœQº}®uGa± É(\»žwûk^Wõ»‰á(ɶ¿ö €ˆ¸S’µ/A‘Â1ÛNÖ_:F@Æt¼öb78/¼&ŠÑÑõÀŒ¬YÔ®•Å€ 舂Cb˵¡§×ö–Ê¥^ì¨cEÝw”·CTD`Í)#^yQHiãIµÈÀN<=ðUì¨{% “‹}Ç?e.€Û/Û]£Ç‹buÃ_ †¤!¡‡•Òµ<(DQàjx§Ð:˜¼`‘øˆ ˆà§ÏHƒ@©‘Ì¬Ê kD)ï¹Ah\bM†'Û÷J– àùºšSÞv ß `C¬»ûNYˆûŽŠÃY…õ™ãã@WXc8H€ã¨/VéÇ=〕=ÁÒ ìü¹Ï|H°‚ÐùxR®&Òü¡=>Ç?]`Âë^EóÍ\ü¨«iˆ>Ü“„š«4)Ò¼@T3> k¾tõ9ã£a+NÛr÷¢,™"Sê±a[^™pøÊ»Ü@å«ß®LŒ¤•ª› ÃeZ8]ÙYztÎ.Ü-2ä»' ^e%™Í™&vWÐê›é€þ”ÖK›ÛË·•hdGè;“Nú@³8³08è•P„È÷tù´5UÍ0ŽÝ©)òF~„ R Âѱ+=ØÈ¾­IZýWŸÈÙçkј÷¯DÊFâ0wV?t Ýñ#•¾÷–<°YXty?Á¼ãUq"•ˆq™«‘ó/F=\NŠ–Ùªc#sž×fM·‚Û˜öØŠ˜]Äu!º·–³å¾•#µûVzž\V:´é(¤Q*ëÿ0uuy#vÛ\²>€“sõòôðùÑÔu>ª™h:ìp’Bf:žj›˜ÅÏE_-¼ûòeýhúfÓZT-3œ¡Ã8£÷2k3·­YÂ3>Ú }ØAØ3NæÎÔ79W”÷¦ðL†©61ó¾mŽ«öÍÁ!þS•JM5fSXVˆWIýFsôûyâ°TÃdÀ:¤kó×6O¦¢¤Ü2‡ô¯nêYbVNºñœË6k¶ÛF ý?íf k[ÚìM´Û°„îZK¥K3V$'vÞ)`OSå{h<;çí!MióaêØIO›t£ÃÑOû¶c¥¹øùúÃÓ­—´Œ6I.ûà`»vUož9;ȦEÛ°h{i < Hä´¡ ð9Ù§#Øá’i›î“ãÆ¼VÍÚ¶b´U~9ÝÜ?ÍßϨ˜²6ê=Æqž@ö>Ÿï[Ðn¾·}¡»˜‚2mpG³#ñ7·vŠìdÃãPúB‹e®‡ºI m›ý…áÇ9z¦™Ðd½õÏ÷w«û{q Oƒ9¾öè‘vó XPÃÚ}š“²ŒîŠNvñygÁ 8–F6ÀÚU  §Hª‘ãKUì × xŽn ‹ß~z/1‹Ó¡‚Lp:îé4Q@÷ÐÏ0„ r–ê¦?x¹³@WÁªí8ïÌ#dóÅ%åïBÑ´•»oÌât[ ÊBkÍ[KΈ4t>®ÑñIc|Æ÷¢3ò^@tÆñýuüG½îâN øÐ ë[ °:-yÅ[•óGQñîŸxyÂ&³®kstÞ~ÇH"rm¬SoI÷6^3L_çâÕ –†“‹VgCÒÑ·–gßKÇ®i3œ³A uÔÕ0µw^ ÆïhÁÜá÷ ¾‡FÿFq¿îãzùßEÿó7à >Vendstream endobj 738 0 obj 2089 endobj 741 0 obj <> stream xœµZKsÜ6¾ëWL%‡$Uˆ$øÔž,o²«Ô:q,¥rˆ÷À!1"ãáÃiyö× @œî!G®µU¶Ë ØèþÐýõƒþ¸±ˆ½±äþ;)®>^}ÜØýÚðWRlî¯nÞÙ¶»‰Hä;¾»yÜ_©7ì ø›€z$Š«ï_Õ5+Óüó]¹±œPl|L¯¾¿#rɶŒxC­ýûm¿&^¦–­×~îß$vDÝa‰µÿ̹ìXÄwl:,'mÿº+D µÔâë¸Ñ2mËÑk©\ ˆçÙö°ôÐÕuÕôïß¼“o‡Â8Ÿ†Ò¸-õ=!r³u\â†ýöo{™âô ´„Ç,ç½N> ƒASµdûB}ÏÓkmÆú}6q:œÿ)>tý2uˆã‡ƒÐ޳Ý/š—-köqÒ?ò( ½h@_5p?*äÍýÝöþ¾W- ¾ø¥×ù‘¿®Ê6V {±i0hSíþ—Ñ_pžOýÍV\µ¸è³è G{ÑxtÊöqwè廉\w¸éd:Ø¥ÄòÇ#ÞV0BÓ•BN^²´×Çw‰7)úky8j|£hÀ·npñî0ÀжW¯5³kJ²¸ú°†C,â†)áê´‡AÆ C|8TÏZSyaþx ñç¼è Å•Om6]·ày¾ Ñ™TW×e‹véì”8¡‰ömxH¨;(õ6Ë× ö¹…nd;ÔUX±9\êYÅ[ q’0Î!‡ÙÜ›’—˜Òbç¡"ª=Q*Æ!*ÆæwP²ö¹j>@ F¹ÆæQî–ºñü5÷i³¨ALÓŽý©­ µ’aá6n6°@I¤fM^g¬‰*Eê ž»tׂ  eŒ¸VÏ=ñë-u+¤òMoå-Ô[\B©‚iî31ÿðßo®Áå< Ýz>' ¾ê§}ѯ+v¬rG‡2ðäQnÜàþ­ACî¥i#¢ ã!þá|–3Õ*”TètÅ$u¢a,Ðvy “,æ²q]+fW^ä°†û™W3Suº•ÙDQ²e™Bñ:¢òò & y{ß!„¦.ðeÑÕÈü$‚p„‚Ï1è*XÃa'ѽ¥v@œÈY ûó¯Žw"’˜ß´IÆ0ó1:nOón'öCþ‘ ^CÇÚu-4¦], T˪Õe‡F+À5ìc—7C• }g¬Oî‘$²JR8™†;ž!4º!y¢—†¼ãyÄø-Ÿ‡B?Ë ?E+‚Å|âÒ5Û1¨eUäm;UXÁ¨åï5RUcÀJhÍ‹ŠV¶MŽy픩ç©ÓPyëøTXîõåÓù:cD™ a ËðL¬9ˈ¶upgif¹`¸UfS›Ø¾ê"|E“I·0FýÈ^Ò¯Æ'ÛHœh…þJ%ú,áÛ\P¼j$æF£Qõœ·YÕ!u¯Y"¨Mhú’Ñ¥óBb{³H9 ›è‘‰C¨Ž0õhœûT7ÏÇyÁP3. ö½ègáVÎD.Mùû4í¸ãeÇûV×P³KzÎò$C›kë¶Nä‘ÀZËô}ß%§qc† *õ:^°DÌÉ¡âšz#GL_A=Ḭ̂ þk* [šsÙýªBÛ "â X®´Q'4ý`ž¶™è:ËœHGþ²AÀº«FQi÷!†­3B.°Õ§ô!ˆÌd[C¾µE%Ãêr´ wedפ*Š®ÌÛã¦\^ÆH,u†Ø:æ\°uŠäb¬C”„€0óÃ/oÞÂÍ'4>̃0ž|s#¶wOD@¥S{h“p5µ¿¬hGÛÏááëå+@úz´£Ö5ÜÜÖ,ÊHÉ-Ü®kØ?‡ÎH#$ ¬@3)bhÇʤ9Ö­êøçFÆIS]œ—5İ|Bãö‰!˜\æò“õ)ke T2d¸6’ù ›ó<…zô¿XûN”ÔLÏZz>ò`MfØ%êÜZІf[‘ñ€qÿ2±Õœ¶T.-pmX()(%T¦í•¢×BM9­ÛÆ Ñ@ÀÀŒŒ´Hí¯ä ËüwÈElβ€5Æfêèòæ’1Žê§à-õÏÿÈ~w"ã§qÒnN2ë²æ­¢âÙåOÓ“EÄî8!p ‹4J_Šªn«æ:ŽÝ“á ¼­…ôœ»sÍÝ4Á·6¥¼éxssÈw7Ò®þ^õ ÂS"~³ ÚJýo•Ì@˜<¶zºäÙË‹ýêŸükù'þyPŸ¡¾p|:…Îl†´¨oiROb™T¹f:c΂ͮ8›ìÃfp¨ce*N’q":óáãŠÎrî—t•/Á¦ãlß`FD+9%†‰é\Š+â2~bÅෳǫ}û,B>$=.jÿÿ—E\Oþïo¨ºÕ°íÇÇÍoWòçoïÖ[hendstream endobj 742 0 obj 2130 endobj 745 0 obj <> stream xœ­ZÛrÛ8}÷W¨f&©21$Áë¼%™©]ÏØ‰7Ö¾¹j‹&! ^^¢h¾~šHBS”“T\°ût÷éÓ>¯lâ¬ìþŸú›WŸ¯>¯±6üI‹ÕÛõÕ/Ç[Å$ÜÀ[­7Wr‡³¢aHÂ`RŸDðAqõêÍnÇÊŒ}½þëʳ‰íFðà:»zõ–ôKŽK°C®ýç^¬Áfj;jí±“81õ†%ÖþÆë~ÙµIà:tXN[±Ýƒ#Á,¹ø.©Õ™Žíªµ¬_ ‰ï;ΰôÐívU-öÿò±ßszç,øpäÊr=âEâñ‰3áíaªVŠín@¢p°´­Äƒ˜ïûÃ;–ò O…_¡Þ`öjÚ¦_¥.qƒh88)…½®Cü˜Ïò2Í»Œ‰3\{ÞB¢, ãѲ¶Nv†eiU]ÉÛCÿ‰OIäÇCdʤ`"80ò¢aù;Ó—Ñ?;×6U' ØlâBÐ,2„x·¯Ó¤4½~bæëPÜÞßÝ›Á¢`÷‚`8a½eêU^8¾ê[@3žçioÎ Þ2R;#'±´h%AcZ_\8jÔ5ƒ‘n“:I[VK'¨OêÓsNfl“tykÚr±7»î)ç©xŸåÚqc uB‰(Z#jV쯲ì]8x8¤–pXÃêäÄõ£'“̘ ¸±˜±¦åeÒòJ$XàÿˆRÎ3™TÁ²FE=¤cÔ›CÓ²¢™ ¦Ÿý–§[3ÓÓ-êº$€r;y‘ÅKÔ*}mü€J4âx@ãæÞ|0ɲš5 †jW’çÕžedx|¤À›iYYщÃ6Y y3VuÎYØ'Ë®M~} üeÕš57ÆÚIH¨ïõÒ›+ªÄ‰CÇ*é[q {‡&¹²°vOßûƒÊ,éÚ-8ÅÓ±¨"8ÉŽ‚s1ÙW ÈʤRV&O¹Ì%ûª6³#ãÍñéi7m1û›^‹”Ï2¡¼$@ !¤q<D…ää7ã úOÏcÿyƒí ]}Ÿ™r\- ñ<1IL¶SÜ ‹F‰\_ÕH¯(jö¹c Ò/öIcfzÍRÆ¿¨V×wܱüGE3m¸XƒziÃM·,ýdBµIx®èF 5Úýö€d”lŠ×*I@zt1IÐl;Íñ -b½´Úl$1€R%}ÚL TÏ-«O ¤‘Êìùž> -¯ž­M’ò\Á‘v@—}j˜rzFß%eª1ÇJ˜¾VKižõÎC®MnCÓ]½Ö¢±K¼8ZŒ_šÔ™qH§:šÖÿöD5â²$ž¦§´Ëä™I:þŒ0~Ûk,‡6 C®Mݲ‘Ô¨£Ì¾&Å.gC"÷l·$+§c…®g°êüÄê’å¦s¯n?üûÿþþñýãkÄXô¬JÔÀZÊ«QÀœ¼àîÍÍ-úmb:ûÖfWUùØ„ò^šI†Ï·÷_“Ñ¢ðìˆ1ɹ£ËU™LòîõRc¾”·힦\ 'Y\˜VÅ&­´*7ü¹Ôz?4X’«ÈáU‰ µY4fy•&¹YP¬µÜ—$ևwonm,Aëª{ÞšU0n U”CÐUΨ$×éd¼d–³´íÅ‹ÉiÕnºÝM[C¶JÐZªÅ67L]шIlÍ,y< ó 2È” #iQß#k!-–!F † ˜ÅZùáñµ ¥¶9lheÖ ³l R°áýQd<ç4³Ã²EiDÂE6Å›©ã&m/ !¬?"bR2Š…”ˆ@8áTœØ$DD ¯²ÇÛ5‘âzÁ>è÷Ïz¹Þr³íŸ‘÷sdv¹ß§´5“2@g…™Û¥ª4ó¸ÂûnÓ=•JØè™š ŽÏ“˜Ù‹…1cðžÕfWˆ¦ŸEñgréÛñJÌ£/‰éDúeýrÁKup¢Ï‹Öïî'l±THwÉW^t…ƒö\¨û¿“øß&^¯î$oœLïÙV·¼‘”§›ÿt0ÃŒŠÚó©:Ù½”“ÓN¹˜“ Zâ-¦z‰œl6À¦È =ëߘD1Æa>ã²#ë1P󟵇IµÚ öÓæÚb„ÜN¡s îžç¹±Ø5Hº%*|Û_€J¥¦þ~Hœ3’e\Ç lCÔ=Z†D¥ÿy#’æÚ,at–öi`..1Í –ÆÎÑ6Ñ{ÛȄ㖔áé]´–ŒX—ƒQùÚ¬5lä´¹ûãR =³˜—æÔ.I?±ad¨‰f""—˜¾»/èPçÃIϰœÐ%¶ëš#“4ù¶ÿïÏ—xáx&„õ¨ëºö8¹h“UÌìS赫Pó§)LâˆÁ$ÆÙ¦ˆL}7?ªî\´O.üRqŒ˜Ù›y{m®Ì8™Á;äÛ");o#Ëøì½‹~îûû$÷ƒ”Zâ¹’Mb*ÿ¶þ–!Ü(>éçh´Ožª¶­éÿâáÄJ}¸° Œµ·¯êO£°šï@-$¹¢bÛ!Ž­}§dƒ¤ñ_UCž\P«ëÃañǪþ9­±•e©{yù,°…È×ÿ5Û¸žte?@JOubS—Û‘è›Z†\J-7\m‘°-R×:K÷ÏËßhü!~ ¡~ú þÝ=¢YÐK'´ËõÔ¸CZ¢ .ÀZ*}.€Ç¾`·«—V×±ÌðÎÈ+‡©¹…ž‰<ßæE^Ù0¤9aSÂOUùӵɭº~V dI|§ÒÁo#còÓ“!z»®9aòÝ™XOÇûòêãÝå‘«<³8P‰UTÃÈq#2Âøéµâ‚©ƒ<)vú_¯þ{Õÿûç#endstream endobj 746 0 obj 2149 endobj 749 0 obj <> stream xœTMoÔ0•z̯ȱHìàñ·H´P *(…†ǰë²AÙd›Í¶üüNüÔîÂåéÙóüÞøïJX²éKÿ妸+îJ Xþ-7åyU¼úŠ(KNs-Ë궈X cÀèÒ–6ÅéÙvë»UóûEõ« ·´±Z§ç0AˆQEÄÞ_ŒŠÄ]†J@'d†üø®&˜3ÐE†—c(—DI²"ø¶'2ž°Õ„P 1C7ûí¶B=™ã%ਂ·…„-Ü­Dí:¨“&qTÍÆ÷ûqI8>i‚TŠ ‚»¿OÛ4 C"è÷A*©y¶[÷û6æ.A?|êœÕR%¬Ž](DnðCtÉŒ˜×ƒOÒ|îæ¸®cß ¹œ«ÇµO>È€%#š–&#’.XgÂfÕúÅ}³­é|%òI÷Q¤qSz’¢v%9Úh²›¦ %Ñ1óTÐSí˾;ù¹ê±éC‰R ™Ë4'­OwÏÏ)yhÚ6ÙusOû(”Íqº?„ü04«ÀÉHäò@›‘òˆ[|æv!ŒGi »v1¾ýàÃE £ÜŠî0ëÅ8ôÁ› ¹°"3lëΘÓdX›‡­¿MM6Öªo‡f(°Ü匄X ¦ÙÒäÅ€µ?kwý˰]ÀsêcÒùŽß\_~LÇX“¿¹¨FdDî@õáÓÅçoaA `Zæ+zM9“Y¯®®ŽŽ¤åfÂe¿ÙÔ]迤þ34ÇòÂÿ?.êOÇu ¤0}—ƒá v‰y8êÝ|o9½¾m!½]ÏfÆ) ®\h&AŨ9>m½¨Ê/Åô=P.bßendstream endobj 750 0 obj 638 endobj 4 0 obj <> /Contents 7 0 R >> endobj 16 0 obj <> /Contents 18 0 R >> endobj 30 0 obj <> /Annots[33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R]/Contents 31 0 R >> endobj 116 0 obj <> /Annots[119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R 165 0 R 166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 182 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R 189 0 R 190 0 R 191 0 R 192 0 R 193 0 R 194 0 R 195 0 R 196 0 R 197 0 R 198 0 R 199 0 R 200 0 R 201 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R]/Contents 117 0 R >> endobj 214 0 obj <> /Annots[217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R]/Contents 215 0 R >> endobj 256 0 obj <> /Annots[259 0 R 260 0 R 261 0 R 262 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R]/Contents 257 0 R >> endobj 272 0 obj <> /Contents 273 0 R >> endobj 277 0 obj <> /Contents 278 0 R >> endobj 283 0 obj <> /Contents 284 0 R >> endobj 287 0 obj <> /Contents 288 0 R >> endobj 294 0 obj <> /Contents 295 0 R >> endobj 298 0 obj <> /Annots[301 0 R]/Contents 299 0 R >> endobj 303 0 obj <> /Annots[306 0 R]/Contents 304 0 R >> endobj 308 0 obj <> /Contents 309 0 R >> endobj 312 0 obj <> /Annots[315 0 R 316 0 R 317 0 R 318 0 R]/Contents 313 0 R >> endobj 320 0 obj <> /Contents 321 0 R >> endobj 324 0 obj <> /Contents 325 0 R >> endobj 328 0 obj <> /Contents 329 0 R >> endobj 332 0 obj <> /Contents 333 0 R >> endobj 336 0 obj <> /Contents 337 0 R >> endobj 340 0 obj <> /Contents 341 0 R >> endobj 344 0 obj <> /Contents 345 0 R >> endobj 348 0 obj <> /Contents 349 0 R >> endobj 352 0 obj <> /Contents 353 0 R >> endobj 356 0 obj <> /Contents 357 0 R >> endobj 360 0 obj <> /Contents 361 0 R >> endobj 364 0 obj <> /Contents 365 0 R >> endobj 368 0 obj <> /Contents 369 0 R >> endobj 372 0 obj <> /Contents 373 0 R >> endobj 376 0 obj <> /Contents 377 0 R >> endobj 380 0 obj <> /Annots[383 0 R]/Contents 381 0 R >> endobj 385 0 obj <> /Contents 386 0 R >> endobj 389 0 obj <> /Contents 390 0 R >> endobj 396 0 obj <> /Contents 397 0 R >> endobj 400 0 obj <> /Contents 401 0 R >> endobj 405 0 obj <> /Contents 406 0 R >> endobj 410 0 obj <> /Contents 411 0 R >> endobj 415 0 obj <> /Contents 416 0 R >> endobj 419 0 obj <> /Contents 420 0 R >> endobj 423 0 obj <> /Annots[426 0 R 427 0 R 428 0 R]/Contents 424 0 R >> endobj 430 0 obj <> /Contents 431 0 R >> endobj 434 0 obj <> /Contents 435 0 R >> endobj 438 0 obj <> /Annots[441 0 R 442 0 R 443 0 R 444 0 R]/Contents 439 0 R >> endobj 446 0 obj <> /Contents 447 0 R >> endobj 450 0 obj <> /Annots[453 0 R 454 0 R]/Contents 451 0 R >> endobj 456 0 obj <> /Contents 457 0 R >> endobj 460 0 obj <> /Contents 461 0 R >> endobj 464 0 obj <> /Contents 465 0 R >> endobj 468 0 obj <> /Contents 469 0 R >> endobj 472 0 obj <> /Contents 473 0 R >> endobj 476 0 obj <> /Annots[479 0 R]/Contents 477 0 R >> endobj 481 0 obj <> /Contents 482 0 R >> endobj 485 0 obj <> /Contents 486 0 R >> endobj 489 0 obj <> /Contents 490 0 R >> endobj 493 0 obj <> /Contents 494 0 R >> endobj 497 0 obj <> /Annots[500 0 R]/Contents 498 0 R >> endobj 502 0 obj <> /Contents 503 0 R >> endobj 506 0 obj <> /Contents 507 0 R >> endobj 511 0 obj <> /Contents 512 0 R >> endobj 515 0 obj <> /Contents 516 0 R >> endobj 519 0 obj <> /Annots[522 0 R]/Contents 520 0 R >> endobj 524 0 obj <> /Annots[527 0 R]/Contents 525 0 R >> endobj 529 0 obj <> /Annots[532 0 R]/Contents 530 0 R >> endobj 534 0 obj <> /Annots[537 0 R]/Contents 535 0 R >> endobj 539 0 obj <> /Annots[542 0 R 543 0 R]/Contents 540 0 R >> endobj 545 0 obj <> /Contents 546 0 R >> endobj 549 0 obj <> /Contents 550 0 R >> endobj 553 0 obj <> /Contents 554 0 R >> endobj 557 0 obj <> /Contents 558 0 R >> endobj 561 0 obj <> /Contents 562 0 R >> endobj 565 0 obj <> /Contents 566 0 R >> endobj 569 0 obj <> /Annots[572 0 R]/Contents 570 0 R >> endobj 574 0 obj <> /Contents 575 0 R >> endobj 578 0 obj <> /Annots[581 0 R]/Contents 579 0 R >> endobj 583 0 obj <> /Contents 584 0 R >> endobj 587 0 obj <> /Annots[590 0 R 591 0 R 592 0 R 593 0 R]/Contents 588 0 R >> endobj 595 0 obj <> /Contents 596 0 R >> endobj 599 0 obj <> /Annots[602 0 R]/Contents 600 0 R >> endobj 604 0 obj <> /Contents 605 0 R >> endobj 608 0 obj <> /Contents 609 0 R >> endobj 612 0 obj <> /Annots[615 0 R]/Contents 613 0 R >> endobj 617 0 obj <> /Contents 618 0 R >> endobj 621 0 obj <> /Contents 622 0 R >> endobj 625 0 obj <> /Contents 626 0 R >> endobj 629 0 obj <> /Contents 630 0 R >> endobj 633 0 obj <> /Contents 634 0 R >> endobj 637 0 obj <> /Contents 638 0 R >> endobj 641 0 obj <> /Contents 642 0 R >> endobj 645 0 obj <> /Annots[648 0 R]/Contents 646 0 R >> endobj 650 0 obj <> /Contents 651 0 R >> endobj 654 0 obj <> /Contents 655 0 R >> endobj 658 0 obj <> /Contents 659 0 R >> endobj 662 0 obj <> /Annots[665 0 R 666 0 R 667 0 R 668 0 R 669 0 R 670 0 R 671 0 R 672 0 R 673 0 R 674 0 R 675 0 R 676 0 R 677 0 R 678 0 R 679 0 R 680 0 R 681 0 R 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R 690 0 R 691 0 R 692 0 R 693 0 R 694 0 R 695 0 R]/Contents 663 0 R >> endobj 697 0 obj <> /Annots[700 0 R 701 0 R 702 0 R 703 0 R 704 0 R 705 0 R 706 0 R 707 0 R 708 0 R 709 0 R 710 0 R 711 0 R 712 0 R 713 0 R 714 0 R 715 0 R 716 0 R 717 0 R 718 0 R 719 0 R 720 0 R 721 0 R 722 0 R 723 0 R 724 0 R 725 0 R 726 0 R]/Contents 698 0 R >> endobj 728 0 obj <> /Contents 729 0 R >> endobj 732 0 obj <> /Contents 733 0 R >> endobj 736 0 obj <> /Contents 737 0 R >> endobj 740 0 obj <> /Contents 741 0 R >> endobj 744 0 obj <> /Contents 745 0 R >> endobj 748 0 obj <> /Contents 749 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 16 0 R 30 0 R 116 0 R 214 0 R 256 0 R 272 0 R 277 0 R 283 0 R 287 0 R 294 0 R 298 0 R 303 0 R 308 0 R 312 0 R 320 0 R 324 0 R 328 0 R 332 0 R 336 0 R 340 0 R 344 0 R 348 0 R 352 0 R 356 0 R 360 0 R 364 0 R 368 0 R 372 0 R 376 0 R 380 0 R 385 0 R 389 0 R 396 0 R 400 0 R 405 0 R 410 0 R 415 0 R 419 0 R 423 0 R 430 0 R 434 0 R 438 0 R 446 0 R 450 0 R 456 0 R 460 0 R 464 0 R 468 0 R 472 0 R 476 0 R 481 0 R 485 0 R 489 0 R 493 0 R 497 0 R 502 0 R 506 0 R 511 0 R 515 0 R 519 0 R 524 0 R 529 0 R 534 0 R 539 0 R 545 0 R 549 0 R 553 0 R 557 0 R 561 0 R 565 0 R 569 0 R 574 0 R 578 0 R 583 0 R 587 0 R 595 0 R 599 0 R 604 0 R 608 0 R 612 0 R 617 0 R 621 0 R 625 0 R 629 0 R 633 0 R 637 0 R 641 0 R 645 0 R 650 0 R 654 0 R 658 0 R 662 0 R 697 0 R 728 0 R 732 0 R 736 0 R 740 0 R 744 0 R 748 0 R ] /Count 100 >> endobj 1 0 obj <> >> endobj 6 0 obj <> endobj 14 0 obj <> endobj 15 0 obj <> endobj 29 0 obj <> endobj 33 0 obj <>endobj 34 0 obj <>endobj 35 0 obj <>endobj 36 0 obj <>endobj 37 0 obj <>endobj 38 0 obj <>endobj 39 0 obj <>endobj 40 0 obj <>endobj 41 0 obj <>endobj 42 0 obj <>endobj 43 0 obj <>endobj 44 0 obj <>endobj 45 0 obj <>endobj 46 0 obj <>endobj 47 0 obj <>endobj 48 0 obj <>endobj 49 0 obj <>endobj 50 0 obj <>endobj 51 0 obj <>endobj 52 0 obj <>endobj 53 0 obj <>endobj 54 0 obj <>endobj 55 0 obj <>endobj 56 0 obj <>endobj 57 0 obj <>endobj 58 0 obj <>endobj 59 0 obj <>endobj 60 0 obj <>endobj 61 0 obj <>endobj 62 0 obj <>endobj 63 0 obj <>endobj 64 0 obj <>endobj 65 0 obj <>endobj 66 0 obj <>endobj 67 0 obj <>endobj 68 0 obj <>endobj 69 0 obj <>endobj 70 0 obj <>endobj 71 0 obj <>endobj 72 0 obj <>endobj 73 0 obj <>endobj 74 0 obj <>endobj 75 0 obj <>endobj 76 0 obj <>endobj 77 0 obj <>endobj 78 0 obj <>endobj 79 0 obj <>endobj 80 0 obj <>endobj 81 0 obj <>endobj 82 0 obj <>endobj 83 0 obj <>endobj 84 0 obj <>endobj 85 0 obj <>endobj 86 0 obj <>endobj 87 0 obj <>endobj 88 0 obj <>endobj 89 0 obj <>endobj 90 0 obj <>endobj 91 0 obj <>endobj 92 0 obj <>endobj 93 0 obj <>endobj 94 0 obj <>endobj 95 0 obj <>endobj 96 0 obj <>endobj 97 0 obj <>endobj 98 0 obj <>endobj 99 0 obj <>endobj 100 0 obj <>endobj 101 0 obj <>endobj 102 0 obj <>endobj 103 0 obj <>endobj 104 0 obj <>endobj 105 0 obj <>endobj 106 0 obj <>endobj 107 0 obj <>endobj 108 0 obj <>endobj 109 0 obj <>endobj 110 0 obj <>endobj 111 0 obj <>endobj 112 0 obj <>endobj 115 0 obj <> endobj 119 0 obj <>endobj 120 0 obj <>endobj 121 0 obj <>endobj 122 0 obj <>endobj 123 0 obj <>endobj 124 0 obj <>endobj 125 0 obj <>endobj 126 0 obj <>endobj 127 0 obj <>endobj 128 0 obj <>endobj 129 0 obj <>endobj 130 0 obj <>endobj 131 0 obj <>endobj 132 0 obj <>endobj 133 0 obj <>endobj 134 0 obj <>endobj 135 0 obj <>endobj 136 0 obj <>endobj 137 0 obj <>endobj 138 0 obj <>endobj 139 0 obj <>endobj 140 0 obj <>endobj 141 0 obj <>endobj 142 0 obj <>endobj 143 0 obj <>endobj 144 0 obj <>endobj 145 0 obj <>endobj 146 0 obj <>endobj 147 0 obj <>endobj 148 0 obj <>endobj 149 0 obj <>endobj 150 0 obj <>endobj 151 0 obj <>endobj 152 0 obj <>endobj 153 0 obj <>endobj 154 0 obj <>endobj 155 0 obj <>endobj 156 0 obj <>endobj 157 0 obj <>endobj 158 0 obj <>endobj 159 0 obj <>endobj 160 0 obj <>endobj 161 0 obj <>endobj 162 0 obj <>endobj 163 0 obj <>endobj 164 0 obj <>endobj 165 0 obj <>endobj 166 0 obj <>endobj 167 0 obj <>endobj 168 0 obj <>endobj 169 0 obj <>endobj 170 0 obj <>endobj 171 0 obj <>endobj 172 0 obj <>endobj 173 0 obj <>endobj 174 0 obj <>endobj 175 0 obj <>endobj 176 0 obj <>endobj 177 0 obj <>endobj 178 0 obj <>endobj 179 0 obj <>endobj 180 0 obj <>endobj 181 0 obj <>endobj 182 0 obj <>endobj 183 0 obj <>endobj 184 0 obj <>endobj 185 0 obj <>endobj 186 0 obj <>endobj 187 0 obj <>endobj 188 0 obj <>endobj 189 0 obj <>endobj 190 0 obj <>endobj 191 0 obj <>endobj 192 0 obj <>endobj 193 0 obj <>endobj 194 0 obj <>endobj 195 0 obj <>endobj 196 0 obj <>endobj 197 0 obj <>endobj 198 0 obj <>endobj 199 0 obj <>endobj 200 0 obj <>endobj 201 0 obj <>endobj 202 0 obj <>endobj 203 0 obj <>endobj 204 0 obj <>endobj 205 0 obj <>endobj 206 0 obj <>endobj 207 0 obj <>endobj 208 0 obj <>endobj 209 0 obj <>endobj 210 0 obj <>endobj 211 0 obj <>endobj 212 0 obj <>endobj 213 0 obj <> endobj 217 0 obj <>endobj 218 0 obj <>endobj 219 0 obj <>endobj 220 0 obj <>endobj 221 0 obj <>endobj 222 0 obj <>endobj 223 0 obj <>endobj 224 0 obj <>endobj 225 0 obj <>endobj 226 0 obj <>endobj 227 0 obj <>endobj 228 0 obj <>endobj 229 0 obj <>endobj 230 0 obj <>endobj 231 0 obj <>endobj 232 0 obj <>endobj 233 0 obj <>endobj 234 0 obj <>endobj 235 0 obj <>endobj 236 0 obj <>endobj 237 0 obj <>endobj 238 0 obj <>endobj 239 0 obj <>endobj 240 0 obj <>endobj 241 0 obj <>endobj 242 0 obj <>endobj 243 0 obj <>endobj 244 0 obj <>endobj 245 0 obj <>endobj 246 0 obj <>endobj 247 0 obj <>endobj 248 0 obj <>endobj 249 0 obj <>endobj 250 0 obj <>endobj 251 0 obj <>endobj 252 0 obj <>endobj 253 0 obj <>endobj 254 0 obj <>endobj 255 0 obj <> endobj 259 0 obj <>endobj 260 0 obj <>endobj 261 0 obj <>endobj 262 0 obj <>endobj 265 0 obj <>endobj 266 0 obj <>endobj 267 0 obj <>endobj 268 0 obj <>endobj 269 0 obj <>endobj 270 0 obj <>endobj 271 0 obj <> endobj 276 0 obj <> endobj 282 0 obj <> endobj 286 0 obj <> endobj 293 0 obj <> endobj 297 0 obj <> endobj 301 0 obj <>endobj 302 0 obj <> endobj 306 0 obj <>endobj 307 0 obj <> endobj 311 0 obj <> endobj 315 0 obj <>endobj 316 0 obj <>endobj 317 0 obj <>endobj 318 0 obj <>endobj 319 0 obj <> endobj 323 0 obj <> endobj 327 0 obj <> endobj 331 0 obj <> endobj 335 0 obj <> endobj 339 0 obj <> endobj 343 0 obj <> endobj 347 0 obj <> endobj 351 0 obj <> endobj 355 0 obj <> endobj 359 0 obj <> endobj 363 0 obj <> endobj 367 0 obj <> endobj 371 0 obj <> endobj 375 0 obj <> endobj 379 0 obj <> endobj 383 0 obj <>endobj 384 0 obj <> endobj 388 0 obj <> endobj 395 0 obj <> endobj 399 0 obj <> endobj 404 0 obj <> endobj 409 0 obj <> endobj 414 0 obj <> endobj 418 0 obj <> endobj 422 0 obj <> endobj 426 0 obj <>endobj 427 0 obj <>endobj 428 0 obj <>endobj 429 0 obj <> endobj 433 0 obj <> endobj 437 0 obj <> endobj 441 0 obj <>endobj 442 0 obj <>endobj 443 0 obj <>endobj 444 0 obj <>endobj 445 0 obj <> endobj 449 0 obj <> endobj 453 0 obj <>endobj 454 0 obj <>endobj 455 0 obj <> endobj 459 0 obj <> endobj 463 0 obj <> endobj 467 0 obj <> endobj 471 0 obj <> endobj 475 0 obj <> endobj 479 0 obj <>endobj 480 0 obj <> endobj 484 0 obj <> endobj 488 0 obj <> endobj 492 0 obj <> endobj 496 0 obj <> endobj 500 0 obj <>endobj 501 0 obj <> endobj 505 0 obj <> endobj 510 0 obj <> endobj 514 0 obj <> endobj 518 0 obj <> endobj 522 0 obj <>endobj 523 0 obj <> endobj 527 0 obj <>endobj 528 0 obj <> endobj 532 0 obj <>endobj 533 0 obj <> endobj 537 0 obj <>endobj 538 0 obj <> endobj 542 0 obj <>endobj 543 0 obj <>endobj 544 0 obj <> endobj 548 0 obj <> endobj 552 0 obj <> endobj 556 0 obj <> endobj 560 0 obj <> endobj 564 0 obj <> endobj 568 0 obj <> endobj 572 0 obj <>endobj 573 0 obj <> endobj 577 0 obj <> endobj 581 0 obj <>endobj 582 0 obj <> endobj 586 0 obj <> endobj 590 0 obj <>endobj 591 0 obj <>endobj 592 0 obj <>endobj 593 0 obj <>endobj 594 0 obj <> endobj 598 0 obj <> endobj 602 0 obj <>endobj 603 0 obj <> endobj 607 0 obj <> endobj 611 0 obj <> endobj 615 0 obj <>endobj 616 0 obj <> endobj 620 0 obj <> endobj 624 0 obj <> endobj 628 0 obj <> endobj 632 0 obj <> endobj 636 0 obj <> endobj 640 0 obj <> endobj 644 0 obj <> endobj 648 0 obj <>endobj 649 0 obj <> endobj 653 0 obj <> endobj 657 0 obj <> endobj 661 0 obj <> endobj 665 0 obj <>endobj 666 0 obj <>endobj 667 0 obj <>endobj 668 0 obj <>endobj 669 0 obj <>endobj 670 0 obj <>endobj 671 0 obj <>endobj 672 0 obj <>endobj 673 0 obj <>endobj 674 0 obj <>endobj 675 0 obj <>endobj 676 0 obj <>endobj 677 0 obj <>endobj 678 0 obj <>endobj 679 0 obj <>endobj 680 0 obj <>endobj 681 0 obj <>endobj 682 0 obj <>endobj 683 0 obj <>endobj 684 0 obj <>endobj 685 0 obj <>endobj 686 0 obj <>endobj 687 0 obj <>endobj 688 0 obj <>endobj 689 0 obj <>endobj 690 0 obj <>endobj 691 0 obj <>endobj 692 0 obj <>endobj 693 0 obj <>endobj 694 0 obj <>endobj 695 0 obj <>endobj 696 0 obj <> endobj 700 0 obj <>endobj 701 0 obj <>endobj 702 0 obj <>endobj 703 0 obj <>endobj 704 0 obj <>endobj 705 0 obj <>endobj 706 0 obj <>endobj 707 0 obj <>endobj 708 0 obj <>endobj 709 0 obj <>endobj 710 0 obj <>endobj 711 0 obj <>endobj 712 0 obj <>endobj 713 0 obj <>endobj 714 0 obj <>endobj 715 0 obj <>endobj 716 0 obj <>endobj 717 0 obj <>endobj 718 0 obj <>endobj 719 0 obj <>endobj 720 0 obj <>endobj 721 0 obj <>endobj 722 0 obj <>endobj 723 0 obj <>endobj 724 0 obj <>endobj 725 0 obj <>endobj 726 0 obj <>endobj 727 0 obj <> endobj 731 0 obj <> endobj 735 0 obj <> endobj 739 0 obj <> endobj 743 0 obj <> endobj 747 0 obj <> endobj 751 0 obj <> endobj 393 0 obj <> endobj 392 0 obj <>stream xœcd`ab`ddäsŒ ð Òvöõõ44‰Èýfü!ÃôC–ù^òO¯XW~.ôÝBð»1ÿw}fFF7Ÿhçü‚Ê¢ÌôŒ gMCKKsÇÜÔ¢ÌäÄ<ßÄ’ŒÔÜÄ 'G!8?93µ¤ROÁ1'G!¤£X!(µ8µ¨,5b§s~nAiIj‘‚o~JjQ“ƒ,ƒ<È.öÈ•ÿ}Cøþ3sHYðcí|Æîß™šÿh>qÒ„îiÓš¦4ttv·ÔÉýÙ÷{fC[s[w½dwýä¶im?€3Zz»ûº9¦M™2mZË„ú‰ò~ïaÅ4ñ{…è´ “'tOïžÞ<¡aŸ}ßgJÔMêìîèæhhjjhšÐ:³EþÇÂß=€¸¶¥­µ»I²aJÓ´¾ÞîI3äøJþ´_ø{Ù´i3Ø~'Nc_Åu™[Ž‹Å|>ç’‰<< ‘Þ˜ƒ endstream endobj 752 0 obj 360 endobj 291 0 obj <> endobj 290 0 obj <>stream xœcd`ab`ddäuððóÐvöõõ´ Èýfü!ÃôC–ùaÄϘ{XW~*ôÝLð»!ÿw]fFF7ï(çü‚Ê¢ÌôŒ gMCKKsÇÜÔ¢ÌäÄ<ßÄ’ŒÔÜÄ 'G!8?93µ¤ROÁ1'G!¤£X!(µ8µ¨,5l¥s~nAiIj‘‚o~JjQ“ƒ,ƒ<È*öÈ•ÿ}Cøþ3Ë'0D,øql>c÷O6æŸ?úE§ôO›Ø=ƒcZó´Ú®¶îÖz¹?§~/ijohí®“ì®Ò6­íljߋ%f¶ôw÷vsÌž8sÒŒ–þ† òÖ~ŸÎŠiâ÷rÑi¦LèžÙ=£abSÿŸßKÔNjëîìæ¨knh¬ŸØ6³EþÇêßSþ¬þ=µ¶¥µ­»^²ebíìž Ý§Ëñ•.üi¿ð÷²iÓ¦±ýNœÆ¾Šë*·‹ù|Î%yxë0–R endstream endobj 753 0 obj 362 endobj 292 0 obj <> endobj 281 0 obj <> endobj 24 0 obj <> endobj 25 0 obj <> endobj 263 0 obj <> endobj 275 0 obj <> endobj 264 0 obj <> endobj 754 0 obj <> endobj 9 0 obj <> endobj 509 0 obj <> endobj 22 0 obj <> endobj 23 0 obj <> endobj 755 0 obj <> endobj 21 0 obj <> endobj 756 0 obj <> endobj 280 0 obj <> endobj 17 0 obj <> endobj 757 0 obj <> endobj 413 0 obj <> endobj 113 0 obj <> endobj 114 0 obj <> endobj 758 0 obj <> endobj 13 0 obj <> endobj 12 0 obj <> endobj 20 0 obj <> endobj 11 0 obj <> endobj 759 0 obj <> endobj 408 0 obj <> endobj 760 0 obj <> endobj 27 0 obj <> endobj 403 0 obj <> endobj 28 0 obj <> endobj 761 0 obj <> endobj 10 0 obj <> endobj 394 0 obj <> endobj 26 0 obj <> endobj 5 0 obj <> /Doc-Start<> /0<> /page.2<> /page.3<> /page.4<> /page.5<> /page.6<> /28<> /30<> /32<> /33<> /34<> /35<> /36<> /37<> /39<> /40<> /41<> /42<> /44<> /45<> /46<> /table.1<> /61<> /63<> /64<> /65<> /table.2<> /110<> /112<> /113<> /114<> /115<> /116<> /117<> /118<> /119<> /121<> /122<> /123<> /124<> /125<> /126<> /127<> /128<> /WEBSITE<> /130<> /131<> /132<> /133<> /134<> /MAILLIST<> /136<> /137<> /138<> /139<> /140<> /141<> /142<> /143<> /144<> /145<> /146<> /147<> /148<> /149<> /150<> /151<> /152<> /154<> /155<> /156<> /157<> /158<> /159<> /160<> /162<> /163<> /164<> /165<> /166<> /SECFTP<> /168<> /169<> /172<> /173<> /table.3<> /176<> /177<> /table.4<> /206<> /208<> /209<> /210<> /211<> /FAQREF<> /213<> /215<> /216<> /217<> /218<> /219<> /220<> /222<> /223<> /224<> /225<> /226<> /227<> /228<> /229<> /230<> /231<> /232<> /233<> /234<> /236<> /237<> /238<> /240<> /241<> /242<> /FILEUTIL<> /244<> /245<> /246<> /247<> /248<> /250<> /251<> /252<> /253<> /254<> /255<> /257<> /258<> /259<> /GHOSTSCRIPT<> /261<> /262<> /264<> /265<> /266<> /A2PS<> /268<> /271<> /272<> /273<> /ENSCRIPT<> /275<> /276<> /278<> /279<> /281<> /282<> /283<> /TEXTPS<> /285<> /286<> /287<> /288<> /290<> /291<> /292<> /PSUTILS<> /294<> /295<> /297<> /298<> /299<> /NETCAT<> /301<> /302<> /303<> /304<> /306<> /307<> /308<> /309<> /311<> /table.5<> /380<> /381<> /383<> /table.6<> /404<> /405<> /406<> /407<> /408<> /409<> /410<> /411<> /412<> /413<> /414<> /415<> /416<> /417<> /418<> /419<> /420<> /421<> /422<> /423<> /424<> /425<> /426<> /427<> /428<> /429<> /430<> /431<> /432<> /433<> /434<> /page.7<> /435<> /436<> /437<> /438<> /439<> /440<> /MODELSELECTION<> /443<> /444<> /447<> /448<> /449<> /450<> /451<> /452<> /453<> /454<> /455<> /456<> /457<> /458<> /459<> /460<> /461<> /462<> /463<> /464<> /465<> /466<> /468<> /470<> /472<> /473<> /CONFIGENTRIES<> /477<> /table.7<> /page.8<> /page.9<> /page.10<> /page.11<> /page.12<> /page.13<> /page.14<> /page.15<> /page.16<> /page.17<> /page.18<> /1663<> /1664<> /1665<> /1666<> /1667<> /1668<> /page.19<> /1669<> /1671<> /1672<> /1673<> /1674<> /1676<> /1677<> /1679<> /1680<> /1681<> /1682<> /1683<> /1684<> /1685<> /1687<> /1688<> /1689<> /1690<> /1691<> /1692<> /1693<> /1695<> /1696<> /1697<> /1699<> /1700<> /1701<> /1702<> /1703<> /1705<> /1706<> /1707<> /1708<> /1709<> /1710<> /1711<> /1713<> /1714<> /1715<> /1722<> /page.20<> /1770<> /1717<> /1718<> /1719<> /1720<> /1724<> /1725<> /1727<> /1728<> /1729<> /1730<> /1731<> /1732<> /1733<> /1735<> /1736<> /1737<> /1738<> /1739<> /1741<> /1742<> /1743<> /1744<> /1745<> /1747<> /1748<> /1749<> /1751<> /1752<> /1753<> /1754<> /1755<> /1756<> /1758<> /1759<> /1760<> /1761<> /1762<> /1763<> /page.21<> /1765<> /1766<> /1767<> /1768<> /1772<> /1773<> /1774<> /1775<> /1777<> /1778<> /1779<> /1781<> /1782<> /1783<> /1784<> /1785<> /page.22<> /1786<> /1788<> /1789<> /1790<> /1792<> /1793<> /1794<> /1795<> /1796<> /1797<> /1798<> /1799<> /1800<> /1801<> /1802<> /1803<> /1804<> /1805<> /1806<> /1807<> /1808<> /1809<> /1810<> /1811<> /1812<> /1813<> /1814<> /1815<> /1816<> /1817<> /1818<> /1819<> /1820<> /1821<> /1822<> /1823<> /1824<> /page.23<> /1825<> /1826<> /1827<> /1828<> /1829<> /1830<> /1831<> /1832<> /1833<> /1834<> /1835<> /1836<> /1837<> /1838<> /1839<> /1840<> /1841<> /1843<> /1844<> /1845<> /1846<> /1847<> /1848<> /1849<> /1850<> /1851<> /1852<> /1853<> /1854<> /1855<> /1856<> /1857<> /1858<> /1859<> /NETWORKPROTOCOLS<> /page.24<> /1890<> /1862<> /1863<> /1864<> /1865<> /1866<> /RFC1179PC<> /1869<> /1870<> /1871<> /1872<> /1873<> /1874<> /1875<> /1876<> /1877<> /1878<> /1879<> /1880<> /1881<> /1882<> /1883<> /page.25<> /1884<> /1885<> /1886<> /1887<> /1888<> /1889<> /1892<> /1893<> /1894<> /1895<> /1896<> /1897<> /1898<> /1899<> /1900<> /1901<> /1902<> /1903<> /1904<> /1905<> /1906<> /1907<> /1908<> /1909<> /1910<> /1911<> /1912<> /1913<> /1914<> /1915<> /1916<> /1917<> /1918<> /SOCKETPC<> /1921<> /1922<> /page.26<> /1923<> /1924<> /1925<> /1926<> /1927<> /1928<> /1929<> /1930<> /1931<> /1932<> /1933<> /1934<> /1935<> /1936<> /1937<> /1938<> /1939<> /1940<> /1941<> /1942<> /1943<> /1944<> /APPSOCKETPC<> /1947<> /1948<> /1949<> /1950<> /1951<> /1952<> /1953<> /1954<> /1955<> /1956<> /1957<> /1958<> /1959<> /1960<> /page.27<> /1961<> /1962<> /1963<> /1964<> /1965<> /1966<> /1967<> /1968<> /1969<> /1970<> /1971<> /1972<> /1973<> /1974<> /1975<> /1976<> /1977<> /1978<> /1979<> /1980<> /1981<> /1982<> /1983<> /1984<> /1985<> /1986<> /1987<> /1988<> /1989<> /1990<> /1991<> /SNMP<> /page.28<> /1994<> /1995<> /1996<> /1997<> /1998<> /1999<> /2000<> /2001<> /2002<> /2003<> /2004<> /2005<> /2006<> /2007<> /2008<> /2009<> /2010<> /2011<> /2012<> /2013<> /2014<> /2015<> /2016<> /2017<> /2018<> /2019<> /2020<> /2021<> /2022<> /2023<> /2024<> /2025<> /2026<> /2027<> /2028<> /2029<> /2030<> /2031<> /2032<> /2033<> /2034<> /2035<> /2036<> /2037<> /2038<> /2039<> /2040<> /2041<> /2042<> /2043<> /2044<> /2045<> /2046<> /2047<> /2048<> /2049<> /2050<> /2051<> /page.29<> /2052<> /2053<> /2054<> /2055<> /2056<> /2057<> /2058<> /2059<> /2060<> /2061<> /2063<> /2064<> /NETWORKPRINTSERVERS<> /2067<> /table.8<> /page.30<> /2220<> /2221<> /2223<> /2224<> /2225<> /2226<> /2227<> /2228<> /page.31<> /2229<> /2230<> /2231<> /2232<> /2233<> /2234<> /2235<> /2236<> /2237<> /RWTIMEOUT<> /2240<> /2241<> /2242<> /2243<> /2244<> /2245<> /page.32<> /2247<> /2251<> /2252<> /2253<> /2254<> /2255<> /2256<> /2257<> /2258<> /2259<> /2260<> /2261<> /2262<> /2263<> /2264<> /2265<> /page.33<> /2267<> /2268<> /2269<> /2270<> /2271<> /2272<> /2273<> /2274<> /2275<> /2276<> /2277<> /2278<> /2280<> /page.34<> /2281<> /2282<> /2283<> /2284<> /2285<> /2286<> /2287<> /2288<> /2289<> /PSONLY<> /2292<> /2293<> /2294<> /2295<> /2296<> /2297<> /2298<> /2299<> /2300<> /2301<> /2302<> /PS-EOJ<> /PS-EOJ-AT-START<> /PS-EOJ-AT-END<> /PCL-EOJ-AT-START<> /2307<> /page.35<> /2308<> /2309<> /2310<> /2311<> /2312<> /2313<> /2314<> /2315<> /2316<> /2317<> /2319<> /2321<> /2322<> /2324<> /2325<> /PHASER<> /2329<> /2331<> /2332<> /2333<> /2334<> /2335<> /2336<> /page.36<> /2337<> /page.37<> /OPTIONS<> /2340<> /2341<> /2342<> /2343<> /2344<> /2345<> /2346<> /2347<> /2348<> /2349<> /2350<> /2351<> /2352<> /2353<> /2354<> /2355<> /2356<> /2357<> /2358<> /2360<> /2361<> /2362<> /2363<> /2365<> /2366<> /2367<> /2368<> /2370<> /2371<> /2372<> /2373<> /2376<> /2377<> /2378<> /2381<> /2382<> /2383<> /2384<> /2385<> /2386<> /2387<> /2388<> /2389<> /2390<> /page.38<> /2392<> /2393<> /2394<> /2395<> /2396<> /2397<> /2398<> /2399<> /2400<> /2401<> /2402<> /2403<> /2404<> /2405<> /CONFIG<> /2408<> /2409<> /2410<> /2411<> /2412<> /2413<> /2414<> /2415<> /2416<> /2417<> /2418<> /2419<> /2420<> /2421<> /2422<> /2423<> /2424<> /2425<> /2427<> /2428<> /2429<> /2430<> /2431<> /2432<> /2433<> /2434<> /2435<> /2436<> /2438<> /2439<> /2440<> /2441<> /2442<> /page.39<> /2444<> /2445<> /2446<> /2447<> /2448<> /2449<> /2450<> /2452<> /2453<> /2454<> /2455<> /2456<> /STATUSFILE<> /2459<> /2460<> /2461<> /2462<> /2463<> /2464<> /2465<> /2466<> /2467<> /2468<> /2469<> /2470<> /2471<> /2472<> /2473<> /2474<> /2475<> /2476<> /2477<> /2479<> /2480<> /2481<> /2482<> /2483<> /2485<> /2486<> /2487<> /2488<> /2489<> /2491<> /2492<> /2493<> /STATUS<> /2496<> /2497<> /2498<> /2499<> /2500<> /2501<> /2502<> /2503<> /2504<> /2505<> /2506<> /page.40<> /2508<> /2509<> /2510<> /2511<> /2512<> /2513<> /2514<> /2515<> /2517<> /2518<> /2519<> /2521<> /2522<> /2523<> /2525<> /2526<> /2527<> /2529<> /2530<> /2531<> /2532<> /2534<> /2535<> /2536<> /2538<> /2539<> /2540<> /2541<> /2543<> /2544<> /2545<> /2546<> /2547<> /2548<> /2549<> /2550<> /2551<> /2552<> /2554<> /2555<> /2556<> /page.41<> /2617<> /2558<> /2559<> /2560<> /2562<> /2563<> /2564<> /2565<> /2566<> /2568<> /2569<> /2570<> /2571<> /2572<> /2574<> /2575<> /2576<> /2577<> /2578<> /2580<> /2581<> /2582<> /2583<> /2584<> /2585<> /2586<> /2587<> /2589<> /2590<> /2591<> /2593<> /2594<> /2595<> /2597<> /2598<> /2599<> /2601<> /2602<> /2603<> /2605<> /2606<> /2607<> /2609<> /2610<> /2611<> /page.42<> /2613<> /2614<> /2615<> /2618<> /2619<> /2621<> /2622<> /2623<> /2625<> /2626<> /2627<> /2629<> /2630<> /2631<> /2633<> /2634<> /2635<> /2637<> /2638<> /2639<> /2641<> /2642<> /2643<> /2645<> /2646<> /2647<> /2649<> /2650<> /2651<> /2653<> /2654<> /2655<> /2657<> /2658<> /2659<> /2661<> /2662<> /2663<> /2665<> /2666<> /2667<> /2669<> /2670<> /2671<> /page.43<> /2672<> /2674<> /2675<> /2676<> /2677<> /2678<> /2679<> /2680<> /2681<> /2682<> /2683<> /2684<> /2685<> /2686<> /2687<> /2689<> /2691<> /2693<> /2694<> /2695<> /2696<> /2698<> /2699<> /2700<> /2701<> /2703<> /2704<> /2705<> /2706<> /2707<> /2708<> /2709<> /page.44<> /2710<> /2711<> /2712<> /2713<> /2714<> /2715<> /2716<> /page.45<> /2717<> /2719<> /2720<> /2721<> /2722<> /2724<> /2725<> /2726<> /2727<> /2728<> /2729<> /page.46<> /2730<> /2732<> /2733<> /2734<> /2735<> /2736<> /2738<> /2739<> /2740<> /2741<> /2742<> /2743<> /2744<> /2745<> /2746<> /2747<> /2748<> /2749<> /2750<> /2751<> /2752<> /2753<> /2754<> /2755<> /2756<> /2757<> /2758<> /2759<> /2760<> /page.47<> /2762<> /2763<> /2764<> /2765<> /2767<> /2768<> /2769<> /2770<> /2771<> /2772<> /2773<> /2774<> /2775<> /2776<> /2777<> /2778<> /2779<> /2780<> /2781<> /2782<> /2783<> /2784<> /2785<> /2786<> /2787<> /2788<> /2789<> /2790<> /2791<> /2792<> /2793<> /2794<> /2795<> /2796<> /page.48<> /2797<> /2798<> /2799<> /2800<> /2801<> /2802<> /2803<> /2804<> /2805<> /2806<> /2807<> /2808<> /2809<> /2810<> /2811<> /2812<> /2813<> /2814<> /STRINGESCAPE<> /2818<> /2819<> /2820<> /2822<> /2823<> /2824<> /2825<> /2826<> /2827<> /2828<> /2830<> /2831<> /2832<> /2833<> /2835<> /2836<> /2837<> /2838<> /2839<> /2840<> /2841<> /2842<> /2843<> /2844<> /2845<> /2846<> /2847<> /2848<> /2849<> /2850<> /2851<> /2852<> /2853<> /2854<> /2855<> /2856<> /page.49<> /2857<> /2858<> /2859<> /2860<> /2861<> /2862<> /2863<> /2864<> /2865<> /2866<> /2867<> /2868<> /2869<> /2870<> /2871<> /2873<> /2874<> /2875<> /2876<> /2877<> /2878<> /2879<> /2880<> /2881<> /2882<> /2883<> /2884<> /2885<> /2886<> /2887<> /2889<> /2890<> /page.50<> /2891<> /2892<> /2893<> /2894<> /2896<> /2897<> /2898<> /2899<> /2900<> /2901<> /2902<> /2903<> /2904<> /2905<> /2906<> /2907<> /2908<> /2909<> /2910<> /2911<> /2912<> /2913<> /2914<> /2915<> /2916<> /2917<> /2918<> /2919<> /2920<> /2921<> /2922<> /2923<> /2924<> /2925<> /2926<> /2927<> /2928<> /2929<> /page.51<> /2931<> /2932<> /2933<> /2934<> /2935<> /2936<> /2937<> /2938<> /2939<> /2940<> /2941<> /2942<> /2943<> /2944<> /2946<> /2947<> /2948<> /2949<> /2950<> /2951<> /2952<> /2953<> /2954<> /2955<> /2956<> /2958<> /2959<> /2960<> /2961<> /2962<> /2963<> /2964<> /2965<> /2966<> /2967<> /2968<> /2969<> /2970<> /2971<> /2972<> /page.52<> /2973<> /2974<> /2976<> /2977<> /2978<> /2980<> /2981<> /2982<> /2983<> /page.53<> /DETAILS<> /2986<> /2987<> /2988<> /2989<> /2990<> /2991<> /2992<> /2993<> /2994<> /2995<> /2996<> /2998<> /2999<> /3000<> /3001<> /3002<> /3004<> /3005<> /page.54<> /3006<> /3008<> /3009<> /page.55<> /3010<> /3012<> /3013<> /page.56<> /3014<> /3016<> /3017<> /page.57<> /3018<> /PCL-USER-OPTS<> /PS-USER-OPTS<> /3022<> /3023<> /3024<> /3026<> /3027<> /page.58<> /3051<> /SETUP<> /3030<> /3031<> /LANGUAGES<> /3034<> /3035<> /3036<> /3037<> /3038<> /3039<> /3040<> /3041<> /3042<> /3043<> /3044<> /3045<> /3046<> /3047<> /page.59<> /3048<> /3049<> /3050<> /PJL-JOB<> /3054<> /3055<> /3056<> /3057<> /3058<> /3059<> /3060<> /3061<> /3062<> /3063<> /3064<> /3065<> /3066<> /3067<> /PJL-ENTER<> /3070<> /3071<> /3072<> /3073<> /3074<> /3075<> /3076<> /3077<> /3078<> /REMOVE-PJL-AT-START<> /3081<> /3082<> /3083<> /3084<> /3085<> /3086<> /3087<> /3088<> /NULLPAD<> /3091<> /3092<> /3093<> /3094<> /page.60<> /3095<> /3096<> /PJL-CONSOLE<> /3099<> /3100<> /3101<> /3102<> /3103<> /3104<> /3105<> /REMOVE-CTRL<> /3108<> /3109<> /3110<> /3111<> /3112<> /3113<> /3114<> /3115<> /3116<> /TBCP<> /3119<> /3120<> /3121<> /3122<> /3123<> /3124<> /3125<> /3126<> /3127<> /3128<> /3129<> /3130<> /3131<> /3132<> /3133<> /3134<> /SYNCPAGE<> /page.61<> /3207<> /3137<> /3138<> /3139<> /3140<> /3141<> /3142<> /3143<> /3144<> /3145<> /3146<> /3147<> /3148<> /3149<> /3150<> /3151<> /3152<> /3153<> /3154<> /3155<> /3156<> /3157<> /3158<> /3159<> /3160<> /3161<> /3162<> /3163<> /3164<> /3165<> /3166<> /3167<> /3168<> /3169<> /3170<> /3171<> /3172<> /3173<> /3174<> /3175<> /3176<> /3177<> /3178<> /3179<> /3180<> /3181<> /3182<> /3183<> /3184<> /3185<> /3186<> /3187<> /3188<> /3189<> /3190<> /3191<> /3192<> /3193<> /3194<> /3195<> /3196<> /3197<> /3198<> /3199<> /3200<> /3201<> /3202<> /3203<> /3204<> /3205<> /3206<> /page.62<> /3208<> /3209<> /3210<> /3211<> /3212<> /3213<> /3214<> /PAGECOUNTOPTIONS<> /3216<> /table.9<> /3266<> /3267<> /3268<> /3269<> /page.63<> /3270<> /3271<> /3272<> /3273<> /3274<> /3275<> /3276<> /3277<> /3278<> /3279<> /3280<> /3281<> /3282<> /3283<> /3284<> /3285<> /3286<> /3287<> /3288<> /3289<> /3290<> /3291<> /3292<> /3293<> /page.64<> /3294<> /3295<> /3296<> /3297<> /3298<> /3299<> /3300<> /3301<> /3302<> /3303<> /3304<> /3305<> /3306<> /3307<> /3308<> /3309<> /3310<> /3311<> /3312<> /3313<> /3316<> /3317<> /3318<> /3319<> /3320<> /3321<> /3322<> /PJLINIT<> /3325<> /3326<> /3327<> /3328<> /3329<> /3330<> /3331<> /3332<> /3333<> /3334<> /3335<> /3336<> /3337<> /3338<> /3339<> /3340<> /3341<> /3342<> /3343<> /3344<> /3345<> /3346<> /3347<> /3348<> /3349<> /3350<> /3351<> /3352<> /3353<> /3354<> /3355<> /3356<> /3357<> /page.65<> /FILECONVERSION<> /3358<> /3359<> /3360<> /3361<> /3362<> /3363<> /3364<> /3365<> /3366<> /3367<> /3368<> /3369<> /3370<> /3371<> /3372<> /3373<> /3374<> /3375<> /3376<> /3377<> /3378<> /3379<> /3380<> /3381<> /3382<> /3383<> /3384<> /3385<> /3386<> /3387<> /3388<> /3389<> /3390<> /3391<> /3392<> /3393<> /3394<> /3395<> /3396<> /3397<> /3398<> /3399<> /3400<> /3401<> /3402<> /page.66<> /3405<> /3406<> /3407<> /3408<> /3409<> /3410<> /3411<> /3412<> /3413<> /3414<> /3415<> /3416<> /3417<> /3418<> /3419<> /3420<> /3421<> /3422<> /3423<> /3424<> /3425<> /3426<> /FILE-UTIL-PATH<> /3429<> /3430<> /3431<> /3432<> /3433<> /3434<> /3435<> /3436<> /3437<> /3438<> /3439<> /3440<> /3441<> /3442<> /3443<> /3444<> /3446<> /3447<> /3448<> /3449<> /3450<> /3451<> /3452<> /3453<> /3454<> /3455<> /3456<> /3457<> /3458<> /3459<> /3460<> /3461<> /3462<> /3463<> /3464<> /page.67<> /3506<> /3465<> /CONVERSION<> /3468<> /3469<> /3470<> /3471<> /3472<> /3473<> /3474<> /3475<> /3476<> /3477<> /3478<> /3479<> /3480<> /3481<> /3482<> /3483<> /3484<> /3485<> /3486<> /3487<> /3488<> /3489<> /3490<> /3491<> /3492<> /3493<> /3494<> /3495<> /3496<> /3497<> /3498<> /3499<> /3500<> /3501<> /3502<> /3503<> /3504<> /3505<> /page.68<> /3507<> /3508<> /3509<> /3510<> /3511<> /3512<> /3513<> /3514<> /3515<> /3516<> /3517<> /3518<> /3519<> /3520<> /3521<> /3522<> /3523<> /3524<> /3525<> /3530<> /3531<> /3532<> /3533<> /3534<> /3535<> /3536<> /3537<> /3538<> /3539<> /3540<> /3541<> /3542<> /3543<> /3544<> /page.69<> /CRLF<> /3547<> /3548<> /3549<> /3550<> /3551<> /3552<> /3553<> /3554<> /3555<> /3556<> /3557<> /3558<> /3559<> /3560<> /3561<> /3563<> /3564<> /3565<> /3566<> /3567<> /3569<> /3570<> /3571<> /3572<> /page.70<> /GHOSTSCRIPTCONFIG<> /3575<> /3577<> /3578<> /3579<> /3580<> /3581<> /3582<> /3583<> /3584<> /page.71<> /3640<> /3585<> /3586<> /3587<> /3588<> /3589<> /LANGUAGEINIT<> /3592<> /3593<> /3594<> /3595<> /3596<> /3597<> /3598<> /3599<> /3600<> /3601<> /3602<> /3603<> /3604<> /3605<> /3606<> /3607<> /3608<> /3609<> /3610<> /FILETRANSFER<> /3613<> /3614<> /3615<> /3616<> /3617<> /3618<> /3619<> /3620<> /3621<> /3622<> /3623<> /3624<> /3625<> /3626<> /3627<> /3628<> /3629<> /3630<> /3631<> /3632<> /3633<> /3634<> /3635<> /3636<> /3637<> /3638<> /3639<> /page.72<> /3660<> /3641<> /3642<> /3643<> /3644<> /3645<> /3646<> /3647<> /3648<> /3649<> /3650<> /3651<> /3652<> /3653<> /3654<> /3655<> /3656<> /3657<> /3658<> /3659<> /page.73<> /WAITEND<> /3663<> /3664<> /3665<> /3666<> /3667<> /3668<> /3669<> /3670<> /3671<> /3672<> /3673<> /3674<> /3675<> /3676<> /3677<> /3678<> /3679<> /3680<> /3681<> /3682<> /3683<> /3684<> /3685<> /3686<> /3687<> /3688<> /3689<> /3690<> /3691<> /3692<> /3693<> /3694<> /3695<> /3696<> /APPSOCKET<> /3699<> /3700<> /3701<> /3702<> /3703<> /3704<> /3705<> /3707<> /3708<> /page.74<> /3709<> /3710<> /3711<> /3712<> /page.75<> /3713<> /3715<> /3716<> /3717<> /3718<> /3719<> /3720<> /3721<> /3722<> /3723<> /3724<> /3725<> /3726<> /3727<> /3728<> /3729<> /3730<> /3731<> /3732<> /3733<> /3735<> /3736<> /3737<> /3738<> /3739<> /3740<> /3741<> /3743<> /3744<> /page.76<> /3745<> /3746<> /3747<> /3748<> /3749<> /3750<> /3751<> /3753<> /3754<> /3755<> /3756<> /3757<> /3758<> /3759<> /3760<> /3761<> /3762<> /3763<> /3764<> /3765<> /3768<> /3769<> /3770<> /3771<> /3772<> /3773<> /3774<> /3775<> /3776<> /3777<> /3778<> /3779<> /OFOPTIONS<> /page.77<> /3782<> /3783<> /3784<> /3785<> /3786<> /3787<> /3788<> /3789<> /3790<> /3791<> /3792<> /3793<> /3794<> /3795<> /page.78<> /3796<> /3798<> /3799<> /3800<> /3801<> /3802<> /3804<> /3805<> /3806<> /3807<> /3808<> /3809<> /3810<> /3811<> /3812<> /3813<> /3814<> /3815<> /3816<> /3817<> /3818<> /3819<> /3820<> /3821<> /3822<> /3823<> /3824<> /page.79<> /3826<> /3827<> /3828<> /3830<> /3831<> /3832<> /3833<> /3834<> /3835<> /3836<> /3837<> /3838<> /3840<> /3841<> /3842<> /page.80<> /3843<> /3844<> /3845<> /3846<> /page.81<> /3847<> /3849<> /3850<> /3851<> /3853<> /3854<> /3855<> /3856<> /3857<> /3858<> /3859<> /3860<> /3861<> /3862<> /3863<> /3864<> /3865<> /3866<> /page.82<> /3867<> /3868<> /3869<> /3870<> /3871<> /3872<> /3873<> /3874<> /3875<> /3876<> /3877<> /3878<> /3879<> /3880<> /3881<> /3882<> /3883<> /3884<> /3885<> /3886<> /3887<> /3888<> /3889<> /3890<> /3891<> /3892<> /page.83<> /3893<> /3894<> /3895<> /3896<> /3897<> /3898<> /3899<> /3900<> /3901<> /3902<> /3903<> /3904<> /3905<> /3906<> /3907<> /3908<> /3909<> /3910<> /3911<> /3912<> /page.84<> /3913<> /3914<> /3915<> /3916<> /3917<> /3918<> /3919<> /3920<> /3921<> /3922<> /3923<> /3924<> /3925<> /3926<> /3927<> /3928<> /3929<> /3930<> /3931<> /page.85<> /IFHPOPTIONS<> /3934<> /IFHPOPTIONSTABLE<> /3939<> /table.10<> /page.86<> /page.87<> /4235<> /4237<> /4238<> /4240<> /4241<> /4243<> /4244<> /4245<> /4246<> /page.88<> /4248<> /4249<> /4250<> /4252<> /4253<> /4254<> /4255<> /4256<> /4257<> /4259<> /4260<> /4261<> /page.89<> /4262<> /4263<> /4264<> /page.90<> /page.91<> /4265<> /page.92<> /4267<> /4268<> /4269<> /4270<>>>endobj 2 0 obj <>endobj xref 0 762 0000000000 65535 f 0000252865 00000 n 0000564784 00000 n 0000252014 00000 n 0000234501 00000 n 0000325301 00000 n 0000252997 00000 n 0000000015 00000 n 0000000633 00000 n 0000308323 00000 n 0000322874 00000 n 0000318047 00000 n 0000316846 00000 n 0000315707 00000 n 0000253052 00000 n 0000253082 00000 n 0000234661 00000 n 0000312087 00000 n 0000000652 00000 n 0000003186 00000 n 0000317985 00000 n 0000310798 00000 n 0000309528 00000 n 0000309589 00000 n 0000304729 00000 n 0000304792 00000 n 0000324162 00000 n 0000320471 00000 n 0000321667 00000 n 0000253147 00000 n 0000234805 00000 n 0000003207 00000 n 0000006607 00000 n 0000253234 00000 n 0000253359 00000 n 0000253484 00000 n 0000253609 00000 n 0000253734 00000 n 0000253858 00000 n 0000253983 00000 n 0000254108 00000 n 0000254233 00000 n 0000254357 00000 n 0000254482 00000 n 0000254608 00000 n 0000254734 00000 n 0000254860 00000 n 0000254986 00000 n 0000255112 00000 n 0000255238 00000 n 0000255364 00000 n 0000255490 00000 n 0000255616 00000 n 0000255742 00000 n 0000255871 00000 n 0000256000 00000 n 0000256126 00000 n 0000256252 00000 n 0000256378 00000 n 0000256504 00000 n 0000256630 00000 n 0000256756 00000 n 0000256882 00000 n 0000257008 00000 n 0000257134 00000 n 0000257260 00000 n 0000257397 00000 n 0000257534 00000 n 0000257661 00000 n 0000257788 00000 n 0000257915 00000 n 0000258042 00000 n 0000258169 00000 n 0000258296 00000 n 0000258423 00000 n 0000258550 00000 n 0000258677 00000 n 0000258804 00000 n 0000258931 00000 n 0000259058 00000 n 0000259185 00000 n 0000259312 00000 n 0000259439 00000 n 0000259566 00000 n 0000259693 00000 n 0000259820 00000 n 0000259959 00000 n 0000260098 00000 n 0000260227 00000 n 0000260359 00000 n 0000260487 00000 n 0000260618 00000 n 0000260752 00000 n 0000260886 00000 n 0000261012 00000 n 0000261139 00000 n 0000261266 00000 n 0000261393 00000 n 0000261520 00000 n 0000261647 00000 n 0000261779 00000 n 0000261912 00000 n 0000262040 00000 n 0000262168 00000 n 0000262296 00000 n 0000262424 00000 n 0000262552 00000 n 0000262680 00000 n 0000262810 00000 n 0000262940 00000 n 0000263067 00000 n 0000263195 00000 n 0000263325 00000 n 0000314434 00000 n 0000314498 00000 n 0000263455 00000 n 0000235531 00000 n 0000006628 00000 n 0000010278 00000 n 0000263523 00000 n 0000263654 00000 n 0000263785 00000 n 0000263913 00000 n 0000264041 00000 n 0000264171 00000 n 0000264301 00000 n 0000264435 00000 n 0000264569 00000 n 0000264699 00000 n 0000264829 00000 n 0000264957 00000 n 0000265085 00000 n 0000265213 00000 n 0000265341 00000 n 0000265469 00000 n 0000265597 00000 n 0000265725 00000 n 0000265853 00000 n 0000265981 00000 n 0000266109 00000 n 0000266237 00000 n 0000266365 00000 n 0000266493 00000 n 0000266621 00000 n 0000266749 00000 n 0000266877 00000 n 0000267005 00000 n 0000267133 00000 n 0000267261 00000 n 0000267389 00000 n 0000267525 00000 n 0000267661 00000 n 0000267786 00000 n 0000267914 00000 n 0000268042 00000 n 0000268170 00000 n 0000268297 00000 n 0000268425 00000 n 0000268553 00000 n 0000268681 00000 n 0000268809 00000 n 0000268937 00000 n 0000269065 00000 n 0000269193 00000 n 0000269321 00000 n 0000269449 00000 n 0000269580 00000 n 0000269711 00000 n 0000269839 00000 n 0000269967 00000 n 0000270096 00000 n 0000270225 00000 n 0000270358 00000 n 0000270491 00000 n 0000270622 00000 n 0000270753 00000 n 0000270886 00000 n 0000271019 00000 n 0000271162 00000 n 0000271305 00000 n 0000271436 00000 n 0000271567 00000 n 0000271701 00000 n 0000271836 00000 n 0000271971 00000 n 0000272106 00000 n 0000272233 00000 n 0000272361 00000 n 0000272490 00000 n 0000272622 00000 n 0000272753 00000 n 0000272884 00000 n 0000273021 00000 n 0000273159 00000 n 0000273297 00000 n 0000273435 00000 n 0000273569 00000 n 0000273703 00000 n 0000273831 00000 n 0000273959 00000 n 0000274087 00000 n 0000274215 00000 n 0000274343 00000 n 0000274471 00000 n 0000274611 00000 n 0000274752 00000 n 0000274888 00000 n 0000275024 00000 n 0000275160 00000 n 0000275296 00000 n 0000275427 00000 n 0000275558 00000 n 0000275691 00000 n 0000275824 00000 n 0000236438 00000 n 0000010300 00000 n 0000012030 00000 n 0000275881 00000 n 0000276009 00000 n 0000276137 00000 n 0000276265 00000 n 0000276393 00000 n 0000276521 00000 n 0000276649 00000 n 0000276776 00000 n 0000276904 00000 n 0000277032 00000 n 0000277160 00000 n 0000277293 00000 n 0000277426 00000 n 0000277553 00000 n 0000277681 00000 n 0000277809 00000 n 0000277937 00000 n 0000278065 00000 n 0000278193 00000 n 0000278321 00000 n 0000278449 00000 n 0000278576 00000 n 0000278704 00000 n 0000278839 00000 n 0000278974 00000 n 0000279102 00000 n 0000279230 00000 n 0000279358 00000 n 0000279486 00000 n 0000279614 00000 n 0000279742 00000 n 0000279870 00000 n 0000279998 00000 n 0000280126 00000 n 0000280254 00000 n 0000280382 00000 n 0000280510 00000 n 0000280638 00000 n 0000280766 00000 n 0000236897 00000 n 0000012052 00000 n 0000012802 00000 n 0000280823 00000 n 0000280950 00000 n 0000281077 00000 n 0000281204 00000 n 0000305923 00000 n 0000307110 00000 n 0000281331 00000 n 0000281468 00000 n 0000281605 00000 n 0000281747 00000 n 0000281890 00000 n 0000282030 00000 n 0000282170 00000 n 0000237132 00000 n 0000012823 00000 n 0000014989 00000 n 0000305982 00000 n 0000282251 00000 n 0000237287 00000 n 0000015011 00000 n 0000016547 00000 n 0000312020 00000 n 0000303593 00000 n 0000282378 00000 n 0000237434 00000 n 0000016569 00000 n 0000020555 00000 n 0000282494 00000 n 0000237581 00000 n 0000020577 00000 n 0000022687 00000 n 0000302974 00000 n 0000302750 00000 n 0000303445 00000 n 0000282586 00000 n 0000237728 00000 n 0000022709 00000 n 0000023684 00000 n 0000282680 00000 n 0000237875 00000 n 0000023705 00000 n 0000026542 00000 n 0000282728 00000 n 0000282860 00000 n 0000238038 00000 n 0000026564 00000 n 0000029589 00000 n 0000282939 00000 n 0000283073 00000 n 0000238209 00000 n 0000029611 00000 n 0000031910 00000 n 0000283165 00000 n 0000238364 00000 n 0000031932 00000 n 0000035300 00000 n 0000283283 00000 n 0000283415 00000 n 0000283545 00000 n 0000283675 00000 n 0000283805 00000 n 0000238559 00000 n 0000035322 00000 n 0000037284 00000 n 0000283908 00000 n 0000238714 00000 n 0000037306 00000 n 0000039476 00000 n 0000283978 00000 n 0000238869 00000 n 0000039498 00000 n 0000041700 00000 n 0000284048 00000 n 0000239024 00000 n 0000041722 00000 n 0000044084 00000 n 0000284118 00000 n 0000239179 00000 n 0000044106 00000 n 0000046085 00000 n 0000284188 00000 n 0000239334 00000 n 0000046107 00000 n 0000048668 00000 n 0000284258 00000 n 0000239489 00000 n 0000048690 00000 n 0000050617 00000 n 0000284328 00000 n 0000239644 00000 n 0000050639 00000 n 0000052701 00000 n 0000284398 00000 n 0000239799 00000 n 0000052723 00000 n 0000054218 00000 n 0000284468 00000 n 0000239954 00000 n 0000054240 00000 n 0000055918 00000 n 0000284538 00000 n 0000240109 00000 n 0000055940 00000 n 0000057508 00000 n 0000284608 00000 n 0000240264 00000 n 0000057530 00000 n 0000059789 00000 n 0000284678 00000 n 0000240411 00000 n 0000059811 00000 n 0000062460 00000 n 0000284770 00000 n 0000240558 00000 n 0000062482 00000 n 0000064380 00000 n 0000284840 00000 n 0000240705 00000 n 0000064402 00000 n 0000068092 00000 n 0000284921 00000 n 0000240852 00000 n 0000068114 00000 n 0000072398 00000 n 0000285013 00000 n 0000285148 00000 n 0000241015 00000 n 0000072420 00000 n 0000075681 00000 n 0000285218 00000 n 0000241162 00000 n 0000075703 00000 n 0000078751 00000 n 0000302281 00000 n 0000302056 00000 n 0000324013 00000 n 0000285299 00000 n 0000241309 00000 n 0000078773 00000 n 0000082322 00000 n 0000285393 00000 n 0000241456 00000 n 0000082344 00000 n 0000085295 00000 n 0000320531 00000 n 0000285474 00000 n 0000241603 00000 n 0000085317 00000 n 0000087900 00000 n 0000319258 00000 n 0000285570 00000 n 0000241750 00000 n 0000087922 00000 n 0000090933 00000 n 0000313298 00000 n 0000285664 00000 n 0000241905 00000 n 0000090955 00000 n 0000094612 00000 n 0000285769 00000 n 0000242060 00000 n 0000094634 00000 n 0000096912 00000 n 0000285861 00000 n 0000242207 00000 n 0000096934 00000 n 0000098771 00000 n 0000285955 00000 n 0000286088 00000 n 0000286220 00000 n 0000286355 00000 n 0000242386 00000 n 0000098793 00000 n 0000100739 00000 n 0000286449 00000 n 0000242533 00000 n 0000100761 00000 n 0000103042 00000 n 0000286543 00000 n 0000242680 00000 n 0000103064 00000 n 0000105908 00000 n 0000286650 00000 n 0000286788 00000 n 0000286923 00000 n 0000287064 00000 n 0000287199 00000 n 0000242867 00000 n 0000105930 00000 n 0000106389 00000 n 0000287280 00000 n 0000243014 00000 n 0000106410 00000 n 0000108319 00000 n 0000287341 00000 n 0000287472 00000 n 0000287603 00000 n 0000243185 00000 n 0000108341 00000 n 0000111067 00000 n 0000287708 00000 n 0000243332 00000 n 0000111089 00000 n 0000113332 00000 n 0000287802 00000 n 0000243479 00000 n 0000113354 00000 n 0000115809 00000 n 0000287896 00000 n 0000243626 00000 n 0000115831 00000 n 0000117768 00000 n 0000287977 00000 n 0000243773 00000 n 0000117790 00000 n 0000118739 00000 n 0000288036 00000 n 0000243920 00000 n 0000118760 00000 n 0000121160 00000 n 0000288082 00000 n 0000288213 00000 n 0000244083 00000 n 0000121182 00000 n 0000122201 00000 n 0000288296 00000 n 0000244230 00000 n 0000122222 00000 n 0000124093 00000 n 0000288355 00000 n 0000244377 00000 n 0000124115 00000 n 0000126707 00000 n 0000288460 00000 n 0000244524 00000 n 0000126729 00000 n 0000129863 00000 n 0000288541 00000 n 0000244671 00000 n 0000129885 00000 n 0000132738 00000 n 0000288622 00000 n 0000288758 00000 n 0000244834 00000 n 0000132760 00000 n 0000135738 00000 n 0000288828 00000 n 0000244981 00000 n 0000135760 00000 n 0000138895 00000 n 0000308387 00000 n 0000288922 00000 n 0000245128 00000 n 0000138917 00000 n 0000141873 00000 n 0000289005 00000 n 0000245275 00000 n 0000141895 00000 n 0000143604 00000 n 0000289099 00000 n 0000245422 00000 n 0000143626 00000 n 0000146351 00000 n 0000289193 00000 n 0000289321 00000 n 0000245585 00000 n 0000146373 00000 n 0000148064 00000 n 0000289413 00000 n 0000289545 00000 n 0000245748 00000 n 0000148086 00000 n 0000149533 00000 n 0000289604 00000 n 0000289735 00000 n 0000245911 00000 n 0000149555 00000 n 0000151138 00000 n 0000289794 00000 n 0000289928 00000 n 0000246074 00000 n 0000151160 00000 n 0000152642 00000 n 0000289987 00000 n 0000290123 00000 n 0000290259 00000 n 0000246245 00000 n 0000152664 00000 n 0000154286 00000 n 0000290318 00000 n 0000246392 00000 n 0000154308 00000 n 0000156190 00000 n 0000290412 00000 n 0000246539 00000 n 0000156212 00000 n 0000158607 00000 n 0000290508 00000 n 0000246686 00000 n 0000158629 00000 n 0000161798 00000 n 0000290606 00000 n 0000246833 00000 n 0000161820 00000 n 0000164559 00000 n 0000290700 00000 n 0000246988 00000 n 0000164581 00000 n 0000167306 00000 n 0000290781 00000 n 0000247135 00000 n 0000167328 00000 n 0000170453 00000 n 0000290851 00000 n 0000290984 00000 n 0000247298 00000 n 0000170475 00000 n 0000173216 00000 n 0000291078 00000 n 0000247445 00000 n 0000173238 00000 n 0000176625 00000 n 0000291161 00000 n 0000291293 00000 n 0000247608 00000 n 0000176647 00000 n 0000179299 00000 n 0000291400 00000 n 0000247755 00000 n 0000179321 00000 n 0000182377 00000 n 0000291509 00000 n 0000291644 00000 n 0000291771 00000 n 0000291903 00000 n 0000292033 00000 n 0000247942 00000 n 0000182399 00000 n 0000184288 00000 n 0000292105 00000 n 0000248089 00000 n 0000184310 00000 n 0000186303 00000 n 0000292201 00000 n 0000292336 00000 n 0000248252 00000 n 0000186325 00000 n 0000188943 00000 n 0000292406 00000 n 0000248399 00000 n 0000188965 00000 n 0000191186 00000 n 0000292513 00000 n 0000248546 00000 n 0000191208 00000 n 0000194407 00000 n 0000292583 00000 n 0000292718 00000 n 0000248709 00000 n 0000194429 00000 n 0000195273 00000 n 0000292812 00000 n 0000248856 00000 n 0000195294 00000 n 0000198609 00000 n 0000292882 00000 n 0000249003 00000 n 0000198631 00000 n 0000200811 00000 n 0000292974 00000 n 0000249150 00000 n 0000200833 00000 n 0000202158 00000 n 0000293068 00000 n 0000249297 00000 n 0000202180 00000 n 0000204296 00000 n 0000293149 00000 n 0000249444 00000 n 0000204318 00000 n 0000206017 00000 n 0000293230 00000 n 0000249591 00000 n 0000206039 00000 n 0000206492 00000 n 0000293300 00000 n 0000249738 00000 n 0000206513 00000 n 0000209150 00000 n 0000293359 00000 n 0000293492 00000 n 0000249901 00000 n 0000209172 00000 n 0000211951 00000 n 0000293573 00000 n 0000250048 00000 n 0000211973 00000 n 0000214406 00000 n 0000293656 00000 n 0000250195 00000 n 0000214428 00000 n 0000216579 00000 n 0000293739 00000 n 0000250342 00000 n 0000216601 00000 n 0000219848 00000 n 0000293822 00000 n 0000293959 00000 n 0000294092 00000 n 0000294221 00000 n 0000294349 00000 n 0000294479 00000 n 0000294610 00000 n 0000294740 00000 n 0000294878 00000 n 0000295011 00000 n 0000295148 00000 n 0000295281 00000 n 0000295417 00000 n 0000295547 00000 n 0000295675 00000 n 0000295805 00000 n 0000295936 00000 n 0000296067 00000 n 0000296198 00000 n 0000296327 00000 n 0000296460 00000 n 0000296600 00000 n 0000296735 00000 n 0000296871 00000 n 0000297004 00000 n 0000297137 00000 n 0000297272 00000 n 0000297407 00000 n 0000297540 00000 n 0000297668 00000 n 0000297798 00000 n 0000297929 00000 n 0000250753 00000 n 0000219870 00000 n 0000222582 00000 n 0000298032 00000 n 0000298162 00000 n 0000298295 00000 n 0000298425 00000 n 0000298553 00000 n 0000298683 00000 n 0000298816 00000 n 0000298955 00000 n 0000299090 00000 n 0000299225 00000 n 0000299359 00000 n 0000299502 00000 n 0000299632 00000 n 0000299764 00000 n 0000299894 00000 n 0000300027 00000 n 0000300160 00000 n 0000300293 00000 n 0000300424 00000 n 0000300556 00000 n 0000300687 00000 n 0000300816 00000 n 0000300944 00000 n 0000301077 00000 n 0000301207 00000 n 0000301337 00000 n 0000301467 00000 n 0000301597 00000 n 0000251132 00000 n 0000222604 00000 n 0000224546 00000 n 0000301667 00000 n 0000251279 00000 n 0000224568 00000 n 0000227090 00000 n 0000301761 00000 n 0000251426 00000 n 0000227112 00000 n 0000229275 00000 n 0000301831 00000 n 0000251573 00000 n 0000229297 00000 n 0000231501 00000 n 0000301890 00000 n 0000251720 00000 n 0000231523 00000 n 0000233746 00000 n 0000301938 00000 n 0000251867 00000 n 0000233768 00000 n 0000234480 00000 n 0000301986 00000 n 0000302729 00000 n 0000303424 00000 n 0000308255 00000 n 0000310743 00000 n 0000311948 00000 n 0000313243 00000 n 0000315649 00000 n 0000319203 00000 n 0000320410 00000 n 0000322819 00000 n trailer << /Size 762 /Root 1 0 R /Info 2 0 R >> startxref 564922 %%EOF ifhp-3.5.20/DOCS/LPRngT-L.jpg0100644000175100017510000007634407411207206015530 0ustar papowellpapowellÿØÿàJFIF,,ÿÛC  !"$"$ÿÛCÿÀO"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?û.Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ŠÌÖuÍF„ͪê–vQŽóÌùמx‡ãÇôÒÑÙIwªÈ?çÞ-«Ÿ÷›¦k*•éÓøä‘Ý…Ëqx¿àSrôZ}û­E|ϯ~ÑZÜÛ“EÐìì׳Ü9•¿!üë‚Öþ)ø÷WȸñÔ(‚Ûø®ë\53ZønÏ£ÂðFc[Z–‚ów‡ùŸeÞßÙYFd¼¼·¶AÕ¥(ýk”Õ~)xMȸñ-“‘Õ`&SÿŽ_]ÝÝ^Iæ]ÜÏpÿÞ–BÇõ¨kŽyľÌO{áýüjÍú$¿;ŸTꟴ‚m²--õ;â:„ ?÷Ñʹ­CöQ‘§ø]gºÇè×ÏtW4³¸ú?ó¹÷6ã_ kFâ6áÛ¢,êþù<×@Œ¬7)à×çÍnhž/ñFˆÀézö¡l«ÑbSþù<~•×O8þxýlj‰ðÿ­ ßzýWùvQ_*øwãÿŒ,6¦©oeªÆ:–_*Cø¯¥zo…þ=ø?S ¨—ZDÇƒæ¦øóþòÿP+ºžcB§[zŸ3ŒáLÏ «§Ì»Ç_ÃÀõÚ+?FÖ4½bÔ]iZ…µì'£Ã aúV…v¦šº>zP”,•˜QEÉ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (Èõ®Æßü!á@ñ^j+ux¿òëjD’gÐö_ÄŠ‰Ô5y;á°µ±SötbäüŽæ²µÿhº ±¹Ö5;[(‡C,€ôOá_4øÏã׊5o2ßDŠ-Øðy1ïà?òBöóPºk«û¹î§o½$Î]âkË­›Â:SW>Û/àLE[K>EÙjÿÉ~'Ò¾+ý¡3xë\,‰© 2ÿ,ì—aÇûÜ·ê+Îè¯*®>½]Ý—‘ö¸Ëpvq§ÌûË_ø-åÕÍäí=ÝÄ×7W•Ë1üMEV´Ý7QÔî¾cuy)èDÎßÜè?> j»XèâÂ&?~òQ>«Ë~•„(Ô«ð¦ÏN¾; ƒ_½©ú´¿Ï(¯Ðÿg ˆ­ø‘Ö;H ãÌGþƒ]¾ð#À7·º‹÷7$É6×d2¼D·V>Æ™]#'/Eþv>I«ºv«êLNÒïoqû‹v~_lé> ðŽ”Ø<7¥ÂÃøÅ²—ÿ¾ˆÍtŠ«µ@Õ ™ý©}lj_Äÿ.hýïôKõ>,Ó¾|A¿Ç“á{ÔÈÏïöÃÿ¡‘]‡À?\‘ç&›gÇü¶¹Î?ï€ÕõÓ¢ŠÝ¶yUxï1ŸÁÇäßæÏš,ÿguÊý³Ä:t_Þò¢y1ôÎÚØ´ý›mÿKñ\ò×+0ŸÍ{ý²Ëpëìž}N.ͧÿ/mè—ù)kû9ø]Wý'[Ö%?ìÓù©«Öÿ³ï£<úÄßïÜ(þH+×h­¾Â9%Äy¤·¯#Ê×à/ÃñÖ DýnøTƒàOÃÐ9±½?[·¯P¢«ê”?‘}Æ_Û™“ÿ—òÿÀ™åÏð#áët³½_¥ÓTgà€ü²Ô‡Òèÿ…z­}R‡ò/¸{™/ù/½žA?ìõàyRïZ‹ýË„?Í gÝ~Î^cþ¯j±úh¨ÿÈ öú*þÊ6f‘Ú»>z¼ý›~ñ´ñoÑe±þd?ô¬;ïÙÛÅQóg¬i7ÆÒFô_PÑYË,þ‡e>0Í¡½Kú¥þGÇšÁOˆ–`²èÑÝ(Ì1ŸÐJæ5_x·KÉ¿ðÞ«Ž®m\¯ýô+îªÍsË'¤þÑéÑãÜl‰N2û×êÏφVS†O¡•÷¦«áýVjš=…î罺¹ýEq:ßÁ/‡Úc—6Ÿ!þ;IÙñÖÊþ•Ë<¢¢ød™ía¸û /ãRqô³ÿ#ä+èþÎ2¨gУ†ü@ú×ʨÈêpÊÃB)µ,EZ/Üv:±¹^W‚—Ÿ_“>Öð?Ä x½U4ÝAc»#&Ò’QôÅøf»*üøÞ9HÝ‘ÔåYN?ZõŸ‡?§ÕÔVƒüY ø³Nûv‡Â¾3èÊy½^Äd¤®™ð5iN”Ü*+5Ñ…QLÌ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢²üI¯i>Ó$Ôu›èm-“øœòO Iö›QWeB©%+¶jW ñ⇅ü¯ å×Ú¯ÀùlíÈgÿvQõ¯ø›ñÏUÖ„ºw†M.ÄåZàŸßÊ=¿¸>œû×Èï#´’;;±%™ŽI=ɯš¨û´µó>ÿ'à‰Õµ\så_Ê·ù¾‡£x÷ã‹ÞUrÌ’—+q¦»u«<’·<5áxŽ@º.‹yv¤ãÌXñú¹Âξ¦ð‡Á¯xd¯§RéåµéÞ3ìŸwô'Þ½ £†5Ž$TEUQ€ ¯BŽNÞµÜ|¦?aw NþrÓð_æšü/û;ëW!eñ¯o`‡“ ºù²} áGášôï|ðµäÓ¤Ôæ^wÞɼß# ùŠôª+Ò¥€¡OhýúŸ!Œâ\Ï~z­.ËOË_¼«§ØYiöâÞÂÎÞÖÒ8c£ð­QEu¥cÂmÉÝ…QLAEPEPEPEPEPEPEPEPEPEPEP‰Ž0Ãó¯$ñìñ§Ì j²ZIÔ[Ýüñý˜~ ×½Q\õp´«|q=<sŽÀ¿ÜTivÝ}ÏCáßøÅ^bu­&hàÎüœFPÖ´ü¼ÊøîœÚ†6<¯ù–ß5¿Ýsæ/뚯‡µHõ-ö[K˜Ï ‡†„t#Ø×Ôþ.iÞ0DÓ5O.Ç[3„¸÷B{ÿ³ùf¾pñϼIàë¿+Y°e…Ž#¹æ†O£zûç –X&Ià‘â–6 ކR:{⡉«„šÓª>ƒ3Ê09í8µ~’_¯uä~ƒQ^?ð âü%6£B×$Q¬Û¦cñö¤ÿÞýzúãØ+é¨Öh)ÇcñÌ~¶¼¨VVkñóAEV§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQExíuñÅ|;¡^ø^æÞ ¯/)ŒÐ,€¨LŒÓš÷ +åñ{û`ÿÐ+Hÿ¾¬ÿøº>Ûû`ÿÐ+Hÿ¾¬ÿøºW¨(¯—þÛû`ÿÐ+Hÿ¾¬ÿøº>Ûû`ÿÐ+Hÿ¾¬ÿøº.> ¢¾_ûoíƒÿ@­#þú³ÿâëˆñǯŽüi‘ãX4Ç’“\Y,1~ò&çHÉÁÆyíÜQq¨ßcíz+˜øiãâ… ñ‡îDÉòË`I˜åv#ò#‘Á®'ãgÅ»o Å&‹¡¼W:ÓŒ;d2Zû·«zÄúêÖ…(sÉèu`pñõ•»‡›7>+|OѼhÐ’·š»®a´Fû¾ŒçøGê{WÊž3ñf¹âíUµ jñ¦n|¸‡Ä={?Z˼¹¼Ôõ .®¥šêîá÷;±,ÎÆ½cá·ÀÍk\ßø‘¤Ò,"¤H>‡î~<ûWÏU­_.X-?­ÏÕpY~[ÃT=®"KŸ»ßÒ+úó<«HÓ5bù,´»‹Ë—û±Â…˜ûñÛÞ½³À_³íåÆË¿^}’>¿c¶`Ò÷Ÿ? ýE{§„¼) øVÀYèztV©ÀÌ’VcÉ­Úô0ùT!­M_à|¾kÆØœEá„\‘ïö¿ÉZ˜>🇼/kö}K‚Іu\Èÿï1äþu½Ås¿òÚXG)_®Ù+Ô~xº_YÝ\Ëá_xxÛÈG¬Z\ŒîQ“:SŽ¢Š( Š+Æzãøs÷¼z6©¬´³Ó`ón$ÜÁ~UÈÎ3“Ï@hbŠð~ÓZ‡Š{À:Ò÷œ/Úôøâ }ék'þá÷ý Þ'ÿ¿0ñÚW™ôuóü6Ãïú¼Oÿ~`ÿã´Ã`|>ÿ¡{Å÷æþ;EÐYŸGQ^§þÖ .-ž½fñIh¬ýòæ½ Á¿~x¶TƒEñfŸ%Ëœ-¼ì`• Y'ðÍ;…™ÞÑFEC}9µ³šäC,æ(Ùü¨—.øÚ£¹=&¢¼G]ý¢l4+cs­|4ø…§@½e¹ÒÒ5RdÅsÿðØ?¿è^ñ?ýùƒÿŽÒ¸ìÏ£¨¯œá°~нâûóÿ£þá÷ý Þ'ÿ¿0ñÚ.‚Ìú:ŠùÎ?Úûáã6Añ2S'ùKZzí]ð®åÂÎÚÕžŠ[-Àß M 3Þh®Áß>øºd·Ð¼W§Os' o+ecèÀ'ðÜÓQEQEQEQEQEWR±´Ôlä²¾¶ŠæÚQ¶H¥@ÊÃÜùãâïÀÙl–]gÁ‘¼Öã-.œIgOxÏñöO>™é_HÑ\øŒ5:ñ´‘êeyÆ+,«ÏBZu]©ð›{{¤j_YÊö×–²‡XóÅ}£ð¯ÆÞ5ð¾­Ô¹_ÝÝÄú¹G_ÀõƸŸŽ? -¼Go6½áè ii"PÝŽÿGô=úQæ_³oˆ§ð÷Ä&ЯwÃ¥›y#q‚“.v䇪þ5äáÔðUù'ðÈûŒÖ¦ˆò׉¢­Vž­u·U溣ë (¢½ãó0¢Š(¢Šæþ&xÇOð‚oüYªÛÝ\YØù~dvÁL¾EŒ`1«ƒ×¦h¤¢¾qÿ†Áø}ÿB÷‰ÿïÌüvøl‡ßô/xŸþüÁÿÇi]Ìú:ŠùÇþá÷ý Þ'ÿ¿0ñÚ?á°~нâûóÿ¢è,Ï£¨¯œá°~нâûóÿ£þá÷ý Þ'ÿ¿0ñÚ.‚Ìú:ŠùÇþá÷ý Þ'ÿ¿0ñÚ±¥þÖžÔu;M>Ä‹%ÌÉ 3Ãf Ľ9¢è,Ï¡¨¢Šb (¢€ (¢€ (¢€ (¢€ (¢€ (¯ ñí-áï êRXkÞ ñ¥‹¬ŒˆóÙG˃ÈZA‘Þ€=ÒŠùÇþá÷ý Þ'ÿ¿0ñÚë>þоøâèü3£éݵÓÂó .£ˆG„#årsøR¸ìÏb¢Š)ˆ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+æø(Gü‰þÿ°Œ¿ú.¾Ÿ¯˜?à¡ò'ø[þÂ2ÿèºOa­Ï§“î¥.E"}Ñô¯øÃðóâ$ñ>Ô4Tx#‹ì°Û—Q´c9/_¥1#Û²=h¯—ÿá”u/ú+ZÇþ·ÿ«ZGì·¨XjÖwÇ⦭0¶%1›Fö°8ÿ]ߤ;#éjøoö­UÚoc¨em: Aå=}É_þÕòsãþÁðÿ觬qNÔeèÏK&IæSþhþhàôx§án±q­xFõâ´»ŒÅuù“8$z‚r­Øûž«áö“«üGÔ6èQIy4¾æYÔÈÝ»ý{f²]UУ¨e#ÁSÁ~'ñÂ?/‰<6Æm2RúÅØùr¦~éôÇð·P}‰Ï…F¤1|´ë=Wãÿý'…¯‘{\V Æ[¯å}×——OCìÏ…¿ t/EåÂ&£¬ŽZêEùc8éöúõút¯I®c៎tˆ>ƒÄ¹Bÿ,°±Ky1Ê8ìGäG#Šéëè)R…8òÁY–bñ•ñ•]Zòr“ (¢´9‚¼ãö“ðö₾'KûXæ{:kÛgeù¢’$.Oo»ƒê èõÉ|iÿ’9ã_ûï¿ôè~_ÑE§éçÁoiÞø_áí/N¶ŽË1UÁ’W@ÎíêKü»WcY ÿ‘;Dÿ°|ú-k^¬È(¢Š(¢ŠÂñÿ‡ôïx?TÐõKh®-î­¤M® ím§kB=ˆ¯Êúýh»ÿY¿Üoå_“©©eÄJýEÑü1á«ß iñ^xI¹í"Ü²ÙÆá²ƒ9WåÕ~®økþEÍ3þ½"ÿÐR>oý¤¿g-o Þø§Àv §j6Q´óØCŸ&æ5å¶/ð¸ 1ŒšøËr+õ±”0 €Aê ~X|CÓbѼâ- Ž©sl€vT•”*âÏfý›ÿh=_𭝇! ®¥*Á葖ʨöøWéõ~k~Ò¿ò^<_ÿaÿÐV›žw_ Ÿ²6‘¥\þÏ~žçL²žVûVç’f8º˜rHô¯ÏºýýäÝá.¬ ºŒ‚“F²)Á«[M´ŽÆÂ (såÁÆ™ë´ Ò¬ÖªöÔᕹŸ.ÁESW’~Ø_ònž(ÿ·Oý+†½n¼“öÃÿ“tñGýºé\4 n|ƒû<üÔ¾*ës3Ìö ‘l¼ –f<ˆ£Ïˆç=äõý‰áïÙçá&j‘ A i¯¤y½È'hü­¯€^‡Á_ ´-"T¸û2Ü^rÓÈ7>}pNÑ좻ºIgΟµÃ‡þøâcDð–•§êÿfò® „+¦ë˜”àû‚Gã_×è—í…ÿ&éâûtÿÒ¸kó¶“*;~‚+Ÿé6׬Ë{ HŒ2K€Aü+ôhüøRGüˆzþŠüéðWüŽZ'ý„ ÿÑ‹_ªÂ„<âoìÁàir ÚÿÂ9ª€LRBìÐ;v„œuÁý+㈼;«xOâµ—‡µËcmeªÁ¨y÷ŠCÝHÁ¸"¿P+åÿÛ3¯‹üã‹h@vÔáÓ¯½ó‡ˆŸÊAŸ¥6„™õ )’QEQEQEQEQEå?µ¦‘i«|ñ¸…K8’ê#&7I{ew¡5êÕç_´¿üÿØ=¿ô!@Öçæ½{—ì?ÿ%â×þÁ÷?ú¯ ¯rý‡ÿä¼ZÿØ>çÿA½¾è¢Š³0¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯˜?à¡ò'ø[þÂ2ÿèºú~¾`ÿ‚„ÈŸáoûËÿ¢é=†·>žOº>•Åø·â¯Ãï k £øÄÖšuú¢Èa‘°VèxR9®Ñ>èúW ã?„_üe­¶µâO Ũj ÆÓ5ĨJ¯A…p?Jb3á}ü!ÿ¡ãOÿ¿rÿñ5-¯ÇO„÷wPÚÛxÒÂI¦qhL³€>ï­Rÿ†xø9ÿBTøqÿÇ*[?€¬ï!»¶ðtÏ‹$mö¹ÎÖSyQKQèz}|/û[\ÃiûK‹‰q&Ÿæ=³ û¢¸_ü"øwã-mµ¯xn-Bý£XÌÍq*«Ða\Ò¦¬=¤_S|&!á«Â´V±iýÎçÃð‘hŸôò?áHþ ÐÝ =ôL¬0AS‚?*û/þãàçý Pà]Çÿ£þãàçý Pà]Çÿ¯/û"Ÿó3ìŸc³§ÇüÏ‹üñ÷ጓ]ð¥ú\ØÎBÞéìÄ$ÉŸº}Ç;[¨÷ïÿ†ž4Ѽá_èO!µŸ*É"íx¤y¸=Çã>ü.ð÷Â?kz7…!µÔ,ìÌL.fb‘ÎÈ?ˆ­_ØsþHDö¹þb½:qpJ-ÜøìUhש*‘Šú-t¢Š+C˜+’øÓÿ$sÆ¿ö/ßé;×[\—ÆŸù#ž5ÿ±~ûÿIÞ€GåýQPj~«x+þDíþÁðèµ­zÈðWü‰Ú'ýƒàÿÑkZõfAEPEPWñë7ûü«ò`õ5úÏwÿ³¸ßÊ¿&SRʈ•ú»á¯ù4Ïúô‹ÿ@ùE_«~tO i¬ìª¢Î,’pÈ(A#HœWå—ÄB-[â/‰uXè¯5k«„>ªó3ç_fþÓ4 øfûÞÔá¿ñÜmëg¶A†Ù‡ÀΨ<žœü%CcŠ ýý’t)ô€ÚWQ˜ç¼Y/YOe•Ë'æ›ã_-þÍßujöÚïˆ,æ²ð´$f‘Jµö?‚1×iîÝ19é÷ÌG) (±ÆŠFÀzP…&>¿5¿i_ù//ÿ°ƒè+_¥5ù­ûJÿÉxñý„ÿAZl"yÝ~‰~Ç¿ònžÿ·¿ý+š¿;kôKö=ÿ“tð¿ý½ÿé\ÔäzÝ2yc‚šWT³3$Ñ4±Ä†IQÉf8¾jýª¾ ˜ŸýWÄ,´“GÞ¿³çljüy¤ø§Vñe¶•¡Øè)níîùÍ‰ÙØþÒ_-¯>Ðþ'ŽåsŸ&k(vnÖ¾¥ýœ~;Ø|OI4NÖ-7Ävñù 7î®PuxóÈ#ºž™ÎO8øCźWöŠõ} ÈdþϾš×yþ/.F\þ•©ðŸ^¹ðÏĿ떲4mk¨D_ïFX+¯Ð©aøÒLm#õŠ5—âÍrËÃ^ÔµýEˆ´Óížâ\u*ªN¹Æ¹« Íø‡ã¿ ø EþÖñ>©œ$â4ûÒÌßÝD±þ]ñ^ íC¬ø³ÅVþøs࿺¹¬-}s´•Y•FÉ%¸¯–þ(xç[øƒâë¯ëwí#·ƒwÉmNØÔz^ç$òké?ø'¿‡ û‰¼U"9–=>Ç* yŽ?cÿ¾jo©V²=†÷RøÛ¦è¯¨É ø?Vž4.ö—3Ç)gj3¬ß•pš_ímàŸ)â×¼?¯iwð¹ImÖ4”+ÎTðxÁ¾‹¯ÏÛ/ÃÐh?õ-bEªÛŨQ¹²®F?Ri°ZŸCÿÃZü1ÿŸ_à"ñuÞü ø½áoŠ3jQxrB6Ó–6›íP„È}ØÆçîšù‡öEÖ¼ ®j‰à?øCB¼¼˜3i·òÙ¡yŒNqÉÀ%O¶=+ìO ø;ÂÞk‡ðæ§iMrLm`ùsŒã®2:Ú(¢˜‚ªêºvŸ«XIaªXÛ_ZK2 ˜–Hß•`AÁý@«TPÀéKE䟶ü›§Š?íÓÿJá¯ÎÚýý°¿äÝ<­§qáý=Ú6~VàÌG÷Ÿö¹Ðýü?½ñÓL{˜–X´È%¿*Ã#r¨u?P*nRZµegû^]ik¬ZÚ"Éæ-„«j²‘Ž…v`bÀÖ„?jßèZ»é?¼= Ø‚S ËAÙîa`pÙCò’9ãåú×Ù•ðÇíßá»m'╎·kÆ5‹ó€1ºhÛioÅ|¿ÊžÀµ>ÅøãOxï@[ð֣嫮:IwG^ªßþ±‘]~g|ø‘©ü3ñ½¶³k$’iò°Q´‰áÏ<xuSëìM~”iwÖºž›m¨ØÌ³ÚÝD³A*ôt` °ö Џš±f¸‹ü/ðÏD‡ˆ.Y§›"ÖÊ®ëØìx\ èݧ“[…äàr+ó;â_5xÆ÷Ě̥¥¸|El¤»ú?3“ÔÐØ%sÛu/Úcâ§xÿ†Áðý ~$ÿ¿pÿñÊtµïež8—Ã~#Ø(%!Ç'óÒ¾€þÇÑÿècÿ€ëþcéÈÒìAÿ¯uÿ ZŽè¾EQLAEP~ÒÿòAü_ÿ`öÿÐ…r°çüˆ?ì#süÅuÿ´¿üÿØ=¿ô!\‡ì9ÿ$"ûÜÿ1K¨úéESW%ñ§þHçì_¾ÿÒw®¶¹/?òG££Ú=×Å eíæ_Èû1Ú»” ÊGJøâ¿W|5ÿ"æ™ÿ^‘脇'cç[ØïÂ1¸7¾+Ö®qqÇŸÌô/~Ï? <-×°´µ°´ŠÎÊÞkx”,qDìà ü¯ð‡ˆu_ x–ÇÄ:-É·¾²”I‡ÕHî¤dÜ_¥|w¥|EðEŸ‰4ÆÒ.êß9ky€ùÿ0{‚zi“$uôQEQ'Îß·÷ü‘Í'þÆôžâ¾¯¹?oïù#šOýŒÿé=Å|7RËŽÇÖßðNßùžíÃÿnkëzù#þ Ûÿ3Ïý¸íÍ}oMlL·?0>4 |bñ¯ý‡ï¿ô¡ë”Ú)ã•q¹0Ϩ5Õüiÿ’Çã_û/¿ô¡ë’_¼>µ%£õ­~èúW’þØ-:þÏ>%ò$ý˜>;/ÚbÍzÒ}Ñô¬ox~ÏÅ~Õ<9}ž£jöìÀd¡aÃppG¸«3Gåe}Íû¢¯Á½I† 6»6}ÔÁ_üAð†·àoÝøw^µhnmØí||“&~Y÷R?诪ÿàŸ:Ü2xKÄž2=µò^'’² BGÐÄ3õµ+rÞÇÔUñüWþކùùΊ a<¸þf¾Ý¯¿n n [ã|–HiZ|6ƒÀ|´¤~`…7±1Üòφw7ü5shÌ'V¶höõÏš¼Wêe|ûü4¿ñ_Ä+?]Û:hzÂãÍa5Âój{àá w÷½r (¢™!EPEP’~Ø_ònž(ÿ·Oý+†¿;kôKöÂÿ“tñGýºé\5ùÛRËŽÆ¿‚¿ärÑ?ì!þŒZýVùSà¯ù´OûAÿ£¿U…R òßÚ«Ärøgàoˆ.­¤1ÜÝÆ¶0°8#Í`­}…Ïá^¥_<þß-*üÓ„yÚÚì"Lzy3ŸæSÜøb¾“ÿ‚[†ø™¯]c˜ôr€únš3ÿ²×Í•ô÷üáAñ§‰Û¸Ó£þþõªå½³ëä_ø(Œ`Mà‰GÞe¾SǧÙÿƾº¯’?à¢DgÀã<ÿ§ñÿ€õOb#¹òM~€þÅ~"—]øgmq&ùt‹©l 'ƒŸ’Èþ_ŸÕöüÝ¥>ñ*œùCSB¿_(gúREKboÛ÷Ä’Øx DðÔ2:µãK0ïGiöÞèà5ñE}Gÿ iŠ|(‡>P²œ¯n.¹ý¯—({„v>Øÿ‚}Û…øqâ ¬s&¯åçýØPÿìÕô­|ëû(õvîuùAü-íÿÆ¾Š¦¶%î|ûnFãÕó¯clÇþøÇô¯VdpèÅYNAkÜ?mòÇ‹¬š}¶ï“^R÷-l~¢|$ñø«áŸ‡|A+š÷OŠIÈÿž»pÿøðjÃý¥ÿäƒø¿þÁíÿ¡ ÌýÚVýž<,eÎí— gû¿i—¦+Oö—ÿ’âÿû·þ„*ºÔüׯrý‡ÿä¼ZÿØ>çÿAáµî_°ÿü—‹_ûÜÿè"¤·±÷ÝQVfQEQEQEQTµWOÒ-MΡu¼^®y>Àu'é@h$¦¼§Ä_˜–‡B²tóî?¢ê á5ëÚ«{©Ü:Ÿùf­µ?ï‘Å5+žû¨x‡DÓÉš­œ,:©”ü‡5š¾=ð™m¿Úñrå_>ÑUÊ+ŸKØkº=þž§i9?Â’‚.µ£_+òG¶tøƒJeû©p¨?å›¶ôüŽE.QÜú>Šòâ¹cÖôñކkê§úôT°ÕìÖïO¹IáoâSÐúØû›åÚ(¢€ (¢€ ùƒþ ÿ"…¿ì#/þ‹¯§ëæø(Gü‰þÿ°Œ¿ú.“Økséäû£é^#ñƒÄ¿t¿IiðûÂV¦† ’y£Œ„ÙW§Ò½¹>èúRÓòÿü&ßµ‡ýÝ'þü¯ÿ§Áã_Úµ§ŒKðÿIXËÄB¼ óÿ-ëéÚ)à:QEÄQEy×í/ÿ$ÅÿöoýW!ûɃþÂ7?ÌW_ûKÿÉñýƒÛÿBÈ~ßòB ÿ°Ïóº¡î”QE1r_äŽx×þÅûïý'zëk‹øís§ÁË3VÐîãžï*Í…Ìj(¢ ÔýVðWü‰Ú'ýƒàÿÑkZõÉü Öì|CðËú…ÄsG&¾Æd‹‡Ð†í]eYQQÜÜCm Mq4pă,îÁTrkæÚsö‰Òí4{¯ø PKÝBå½JÌvèxe‡Þr8Ü8_\ô•Î+Ä~,â?íŸáág ŸLÒµ8m¬Êœ«Èî=ráˆ>kíŠüóýì¾×ûAh2•¶Žæcÿ~Gê¿C)!ÈŠïþ=fÿq¿•~L¦¿Xµ‹ˆ­4›Ë©˜,PÀò;Ê’kòs¹¤Â!_«¾ÿ‘sLÿ¯H¿ô_”Uú¥à+¤½ð>…y‚DŸM·‘\hÔçõ¡FÝQT@QEWæ·í+ÿ%ãÅÿöoýkô¦¿4?h›˜î¾8øÂX˜2RXòu;Oê &TN¿D¿cßù7O ÿÛßþ•Í_µúû\Ç?ìóáøÑky.£pCö‰ù0¤‡#׿Š9¢x¥ExÝJ²°È`z‚=+óãö¦øM'Ûí.ÿ„oUv{6"Ýú´ûu_UõÁ¯Ðªæþ%ø7Hñ¼5¬Ç˜.SäšÝ‘}Áüù 6‰NÇåµzŸìÙñN†^8InžGÐ5°êPŽvŒü²¨þòçñ•Åü@ð¦­à_økZ‡Ëº³“nà>YPò²/ª°ÁãX%î~³Ù][ÞÚCwk4s[Ì‹$RFÛ•ÔŒ‚ê©«äØ—âàP¿ |Cv;¶4øµ¾UüG÷E}qT™ XùÛöþÿ’9¤ÿØÁþ“ÜWÃu÷üT´x³ó¶½ì Ÿ?ÌWÃÔžåGcëoø'oüÏ?öáÿ·5õ½|‰ÿî™ãÆÖä1ÒÅÔz€gÿBõÝ5±2ÜüÀøÓÿ%Æ¿ö0_éC×$¿x}k©øÁ2\|[ñŒñÑɮ޺‘ÜÜŠå‡Qõ©-­i÷GÒ–£µ•&·ŽhÎQÐ2ŸPFE=Ø"–b$žÕfgñWÁž ñ‡%‹Æ¶–inŒâòW=¯«,ŸÃüpkçÏ |ñO…|agã/ƒ%ŽëNt9:²£¸ˆveFeFà†Ú£€A=kÊhŒw¿üoöežeð…ÐöhØ §WõfÆ~è?\ýéá-gE×´ MO@»·¹Ó¦‰Z„ŒÀÂà}Ò:c·J[•ª8nûãMælô¿x[MÔ$i½—U’hâ$cr§” =ÆN>µã–ÿ³^•£Åwâï‰Þ$¸×¯dÍ-µ©1­ÄÌs†üÍ’rp½}a^;ñCþ]wTòàÑu§["ýË|íÝÏôöúÓJäÞÆÏÃøv+ Á§ZèIÉm ,ÏAèyïÔ÷æ½&¾]º´º´}—VÓ@Þ’!Sú×¥|5ñùÊѵÙFϻӞžŠçúþuN=„™ëR)dAî)jFQEQEy'í…ÿ&éâûtÿÒ¸kó¶¿Bÿl»˜ ýž|A° q%¬q‚z°¹°?'ð¯ÏJ–\v5üÿ#–‰ÿa?ôb×ê°¯ÊO O¯‰´«©X,pÞÃ#“ÐàšýZR(Bµä_µö.¿ð#Z!yôóú;Fß9ü¹ü+×j+Ëh/-&´¹‰e‚dhä†C© B*‰?%ëéÏø'̪¾9ñ,?Äúb0ú @þ¢¼‹ãÏÛ>»Ñ¥IM™ŒÚmÃ%„ž¼¿tûŒô"»O؇]ƒGøß¥Ä«ê¶Y¦ã€_+"©òÈæ¡nhö>ú¯¿à¡³Õ|oÆR ·ÿ¾š!ÿ²×Ø5ðÇíç­AñfÃI‚Es¦iˆ³~ä’;>ü¡üjžÄGsçšûßöÐ¥Ò> %ôÈUõkù®×#ƒlKø~ìŸÆ¾3øQàmW⬼7¥#5·ÜÏŒ­¼ ò7Ó°îHëôÏÃÚM–ƒ¡XèºlB+;t·=Tõlÿ‚‚ø~[Ÿ xoı!e°»–ÖbE™AR}‹ð*øÒ¿Rþ%xRÇÆþÕ |A·¾¼¶'ÃúD«qzì>YX¤#Ô±ÿ²¨¤_Cí¯‚žøIát)=¾™û²0Þãðf5™ûKÿÉñýƒÛÿBèµæß´ôÑÁðÅÏ#¦Ë`>ìê£õ"¨…¹ù·^åûÿÉxµÿ°}Ïþ‚+ÃkÛ¿bYã‡ãÝ‚;ÓY\¢{›±ù)¨-ì}ÿEU™…Q@Q@W%ñűøsNÀUõ ÁòPó°|OæOøÖÏÛxÀ¸Ô]r‘g„ô/è=ºŸÖ¼KZÕµ fõ®õ—žCÓ'…€v^êy®®d¹¹•åšF,îÇ$šŠ´JÄ7p¢Š)€QEQEVŸ‡5ÍGA¿[½>r‡øã<¤ƒÑ…fQ@Cø/ÅV>%°ó`ÄW1ç@Ç”>£Ô{×C_1èú摨Åc1ŠhϱÁÁô¯ðWˆ­|I¤-Ü8IÓ <9æ6ÿØÖmX¤ÍÚ(¢Â¾`ÿ‚„ÈŸáoûËÿ¢ëéúùƒþ ÿ"…¿ì#/þ‹¤öÜúy>èúWˆü`ø;ãOøÒMsCø™áë6‚8Åœ&m¡”rß,Š9úW·'ÝJÇÕüG—Ä^$“J{a§ËBÖv‘ÄŒÉØ¨ãhjúÆ’xŽ/\?„­ôë`ò#Ô’7 ÛŠó÷wcß³E17sç?‰^ý¥ø¯›öQø¯<ÒM5Þ$²1wv¾–$ä’|¾M}ÛE+çÁÿðÉŸ¿ç¿‡¿ð5ÿøÝzÂO…Ÿ´/Ã/>ê>–ÆáüÉl®®dx‹ã†l28Î}_Ecøq?Äi–ôxþÃÃÖ¥|¿±*iÞß¿OàÆ=MuôQLGŒþÓ¿Sâ~‡mw¤kX¶óLJ¤ÑóFäp2Xâ5ó¯ü2gÅ/ùïáïü þ7_xQJÃNÇÂvÿ²—Å‹kˆî-ïtf‰ƒÇ"_H¬ŒAGÁ¾œø%§üaÓâÏâ^§£ê6±Â«i=³œ¾yóÕc¾3šõ (°7säÿŒ_ þ>üQ»¶mzë°YÚ6ö–·R,hÇ«¡,ØÉ?N¦¼ÿþ3â—ü÷ð÷þ¿ÿ¯¼(¢ÁÌ|yð·àoÇ_†þ#:߇/¼2²¼fášéÚ9v°ØP ‚+Þ>$Eñ†÷Â:U¯ƒ‡lµ{‹R5yç‘ñ¥Sþ=ø9Œœ°Î×¥ÑE‚çÂ2þÉÿe‘¥’ëÃîîK35ë’IêOîé¿ðÉŸ¿ç¿‡¿ð5ÿøÝ}áE3<§à^—ñ{B·‹CñüÚæ•ieåZ\ÚÈír]J„WÈ Wnîqœ×šôÝRØ^é×6eŠ áx‹ÛýjÍC}uoei5åÜñÁo %–F ¨ d±' ½2OÊ¿èz—†¼E êöííŒí ¨AƒŒPzƒÜj7VÕtÂN©ÞYg¯Ùçhóÿ|‘_V|_ñ‡Ã_Œž"žð•׈uü2E¬G(³Hyg2KFO̸ôëPø{ö>¶º±ŠæÿÇr6ñ¸}›O‘ìY³øâ Òú\ùø«Å“âM`ÿÛìŸüUMmã?[8{ë‘0èRþQÿ³WÕ-ûhŸÃã@}lÿìÕÈk¿³W†tÝBK ~!ÝÚÜ'k•>à«ò=éÙ‹™qáO?4IcKÍhëÖþòÏUQ:8ôÜ~aõ½ãKÔô_øFׯ^íí&”Û^Y;nk+2S?ĤTú{ñ_:|UøW¯ø-ï®g´Õ4{§1Ûê6LZ&qÎÆ8?<×¥~Éo+xâ2û2gºç —ÌqîFsô§Ó°¤“W>šø-âO´Z>w&f„¶,~òw_ïÐûW¥×Ì]õÆ™¨ÁjÛféþ‡Øô¯£ü;ªÛëz=¾¥j~I—%{«wSî T•ˆF…QHa\ÄYþ"Áöø@tÿ]îó>Ùý«4‰·îìÙ³®~|çÐW]E|¥ñ{áoí ñ8Á½áhl-ß̆ÊÖæDˆ>1¸å fÁ#$ñ“ަ¼óþ3â—ü÷ð÷þ¿ÿ¯¼(¥aóÿÃ&|RÿžþÿÀ×ÿãuîÒio èiIàÝjÞÝp=õÌÞj¨àÊ£p×'Þ¾€¢‹îfø]õ™4Gñ6pêÆ0n’Í™¡WôBܑӭiQE1ŸÅ‡ÞøáÆÑ|Eiæ"’Ö÷ñ-»ã‘»{އ½|ãÙ‡âW…µeÔ<#œå‰þñÃyyü1í\'‡ÿfïŠþ6ñÚÇŒ$‹H7“®®¯%Î䜒 çØ•÷]X.q?þxgáž‚tÍÝšypnï%Ášá‡v=€ì£õ$žÚŠ)ˆ+Ì~8üð×Å{ÜØk0&ÛmFÀë±Çñ¦{uˆÉϧQ@/Àßß üW»á;eÔ&µrbºÓ¦Vܽգ|àŒ]׈> ~Óž"Ñ¥Ñ->ͤM2异Íã|Ö‘¶©>£§júÖŠVψþþÉþ-Õo"ºñµä:%ŽCI2 ®dƒUú’~•ö‚¼-¡ø7ÃÖú‡¬#²±·*/%˜õf=YrkjŠ, Ü+æ¿^øÿñ"Öm[ Øè>~õ··¸‘Z`­”2¤œpp8ÏÐWÒ”Sðü2gÅ/ùïáïü þ7Z~ýš~3xgÄ6Zþ‰©x~×P²“Ì‚Qxç¡ðA‚;‚kíÚ)X®fr? â is¯Ä(4(ïQÀ´·r®¸ä°n‡>•×QE2BŠ2=i (êE-ß2?ï¯çIçEÿ=SþúS]Õ-´}*}Fé±)¸Žì{îO󦿪ÝkZ´úÛfI[!sÂ/e»Œž#û~¨º-¬€ÛZÊTðòãú>¤×ŸÕÅØQE:4y$XãRîÄP2Iôªˆ¯#ªF¥™Ž$šô |2¿¿.uyMŒMȈ ÈG¿a]ÃÁ¢[%þ¡É©8ÎÈ„ÃßÔ×qPåØi¶›à Ù(Æœ· ?Šv,OáÓô­/øF<=·oö-Ž=<…­z*J9m[À¿…X-«ž’@v‘øtý+ÍüUðãWÒ•îlOö…ªòv.$Qî½ÿ ÷ŠMÃÔ~tÓb±òÁÁ¨¯aøà«këy5}%;Ô¥‰xäï:ñîAÁëVÉh+gÁÚýLJu¨¯b,ѶxÁáÓ¸ú÷õE0>¡ÓîླŠòÚA$3 taÜž¼«à—ˆ÷¾¹|Œmrï¥þ¿z­dÕ‹ ùƒþ ÿ"…¿ì#/þ‹¯§ëæø(Gü‰þÿ°Œ¿ú.“Økséäû£é^Uñ3ྠø¥üG¯Ë«-ë‘or¨›T`pTÿ:õTû£éKLGÃ&|-ÿžþ ÿÀÔÿâ(ÿ†Lø[ÿ=üAÿ©ÿÄW¾ÑJÈwgÃ&|-ÿžþ ÿÀÔÿâ(ÿ†Lø[ÿ=üAÿ©ÿÄW¾ÑE]žÿ ™ð·þ{øƒÿSÿˆ®ûáÂ_ |.þÓÿ„iõþÓò¼ÿµÌ$ÿW¿nÜ(ÇúÆý+¿¢‹Ï:ý¥ÿäƒø¿þÁíÿ¡ ä?aÏù!ØFçùŠëÿiù þ/ÿ°{èB¹ØsþHDö¹þbŽ¡Ð÷JòÚŸÇ^0øwàÝ?Ä^K #ûgÙïVê&ÐÊJ0à r¤À…zýqß¼0°²þf¼ëþ¹ø¡áÏ‹navº¶ÿK´Ï8c)šP?݉ ÿÀ…‘õ?ÇÿŠòø/àý‡‹|:øŸQøƒ/Éš|VšÞæŽ Ö?(ùª7ÝGËÈ«/޹´ÿa»¾ OknÑýªßT›í(>öYP«b¸ÿ²}+Ì>*2_~Ýi ¯4ZŽœ.L|òZLý#?JÇeñ÷ãߊþüd‹ÃÖ–º}ƉvÓ\#@LîŒs VÝ€HÎ8â´>ø÷ã^³­xŠ÷Æz'ö^‘5õšO§€cËEc‚Ã'$ž;Wœ~жÐÞþÙ¾³¸@ðÏw¥G"‘U¥PGäkëßÿÈ­ÿØ>ýÔÁŸ,ü1ý ~/xå5=DðÖ™ªkÌ#{Yc‹Ê·µˆn<¥ŸäÆdwëÒ¬x[ãÅO |[±ð_ÅK+7Žòâ(\¤( ÊÛRDhþV\žzô<äTðNèÐÉãyJê,Tà´gù Êý²´¯ƒñŽl,sÿ“R[ÙûM|c 4;8tÛXo5ÝKwÙ£—>\H¸Ý#€ry ÆN}+Íôïˆß´_†|<Þ1ñ†-oü<ð™dUŠ8çµF,…îdtêGQÍþÜJÖŸ|#©_«6˜,"# ”¹v{ü¬Ÿ¥}Añ/XÑ­þëÚµåÝ»éri3&àRUxÈP¾»²õȦ-4ý’¾,ø§â‡ü$ß𒦞¿Ù¿eò>É ýg»9cŸõkú×¼×ÉðNßùžíÃÿnkêû{ë+‰š.íå‘A,‰ f§ P„÷>sø³ñÃÆWŸá§Â].ÞóTÌWr Þ(Ë… B¨NAfÏ Œzåx{ã?Åo|F°ð§ÅÝ"Þ[kí‡íVñ(h‘›hþVPzŒd`þ<×ì´ÿaý¬<]k«0[éSQ‰7õi…Ê3cßj¹úf¾—ø‰ñ+À¾Ôl-üYªGeqzŽÐfíR'h$ ž=p}(CÛBŸÇ¯ŠoÂß^æ¶_ÜÈa°´Ý·Í|d’{*ŽI÷½xm‡Ž¿j]o@ÿ„ÓKÐìGhÌñZ­¬{¤‹®U¼ÖtÁÉíÔVün¥Ôüz7›¶¸äƒÐWò¯¬ü=y¦ÝxvÆûK–#¦Éj’[º°E´Ƕ(ê-2ýœ¾3ÚüRÒ®­¯-O×ôõêÝ )"‰žqž= œ×Ž|3ý¡þ.xÎþû@Ò<;¥êÚÔ°†³ò¢1Enù唳ò ‘ÉCGö\+¨~Õž-Ô´, ÿhÈ?¸a{åù©Oj_ø'Ê)ñ¿Š$ n]:0p œÿ!Hv-Z~Ðßüã‹ß |IÑmõ;„BÞÞ4ŽE‘—1mdʲTt'Ôb¥ñïůÚ#ÀW"ñ^¥ÙéÒíŠËÉF@q»ËfV.­Œõ=¥gü{$ýµ¼-¨d{í$0#¨3-z?íü?âÎé'¿ü$ÿé=Å{¼Amâ¿é>#´FŽ FÒ;•F9)¹rTûƒ‘øVÕy×ìÑÿ$Âö_ý×¢ÕQY>$ñáÛ¾Öµ,  ‚ÇÑGR}…&ÒWeB©%+·ØÖ¯)ý¤ƒx‹á¦»àþñåªÍŠÉûÙ’9Ýõ*¤ßó®Çß5=^á´ZÉHJ ·\Ìþè½{œŸ¥r^ÒçÓïÿ¶/.å¸ÕÙ·™Ì„˜Ø÷ ݽÿ/ZäŽ+ÛO’’ºêúýLêXw[>F×»äߟeÜòÏÙcÆO€þ*ÈÞ&`´¿³“N–IÓ‹vgFÇP¹M§ØûWßÔîõ¦ûeŠÛ4l<¶üȦB8taÁkçoÚx?ÅÍæxÏÂZ•Ù7öÌm®[Ý™8cõžðž¥Í —„¾ x÷Ã1ÊáVßíÏn¤Ÿî‘Çå]œ­>ä™õs<-ˆô­«µ/¡Á!ÿÐO±ý+”_‡Ÿ*~4ë}ô›mßž)eøBú¢ñOÄOkp°ùíþڶп±X•xö͇‚|x»ø^ÓáF€?·|Q¨jQÝ\ÛY4ZVUBGÉ9<ü s]…|3oðóÀx>9£¸Õn&šÔÑœ¨›n=ÕsþÑ5èþ1ð¶›ðóE|¥Zi·Åw4þýÏQºS– óÞ¼ë¾MTUÝØ›ÒÁ[žñV· [Ëo¦Ýâ‘·²²Æ23Óÿ­XtU’uçâG‹Oü¿Åÿ€éþ‡â?‹è!þ§øW#E+ ¹Öˆž-?óQô?š~ ø´ÿÌSHSü+•¢‹ :ƒãÿŸù‹7ýúOð¦Ÿø·þƒß´ÿ æh¢È—þÏÿÐf_ûöŸáIÿ ׋?è37ýðŸá\ÝYÎŒøãÅgþcSÿß+þÃã_ùÜþŸá\ýX.ox ÿÌrïþú¦ŸøœÿÌr÷þþVX.mŸø˜ÿÌvÿþþšOøK(ñë®j÷ý¿Æ±è¢ÀjŸx€õÖµûþßãM>!×]fÿÿük2Š,4¿·µÃ×X¿ÿÀ†ÿC®kgþb÷ÿøÿãYÔQ`¹¡ý·­Ð^ÿÿüiµ¬ºµÿþ?øÕ (°N¯«º¥éÿ¶íþ4Ó©êG®£ví³T¢˜N¡~zß\ŸûjßãHooO[»ûøj½1»»?òõ7ýü4}¦çþ~fÿ¾ÍCErO´\Ïyï³Ažùí/ýôj:(þl§¬¯ÿ}O2Nò1üi´PEP^—ð_Ãbâw×îãÊBÛ-[»~Ïé^ueo-Ýä6.éf‘Q¹8ô¦ƒ§C¤éÚtä‚0¹õ=ÏârjdÆ‘z£¹š;x$žV j]‰ìÉ©+ø½©ÿgø>h‘±-ÛèyoÐcñ¨(ñý{Ć£¬]Þ­ÝÄi,¥‘B¯aùb³Úúù¾õåÁúÈÆ«ÑZX‚oµÝÿÏÔÿ÷ðÑö»¿ùùŸþþ†Š`Kö»¯ùù›þû5É9'$ÑEQEZÒ/çÒõKmBÜâX$¾øê>„q_Ki×q_ØA{nŠxÖD>Äf¾_¯mø)©›Ï ½”™,¥(¾aúî…LÑÝו~ÑŸ çø±¢é:|ÜzI°¹y‹½±—~åÛŒ¯U¢ £åÿøf¿ˆ_ô[µûæþ=Gü3_Ä/ú-Ú¿ýó?ÿ¯¨(¥aÝŸ/ÿÃ5üBÿ¢Ý«ÿß3ÿñê?ášþ!ÑnÕÿï™ÿøõ}AE ³å›ÏÙ¿â,V²ÉÆ^gD,©‰Æâ>wÅü.ømâßÇq µ?R¶cæÙÊÓ³mé¸8dv2Gã…ñM§E«6£›ö2 åÑ7ïÆ±Û ®£öŽø$Ÿ&Ñî Ö£Ò.´õ–7‘­Œ¾j1RÞÁþú5ì”R°îrÿ ¼#oàO‡úO…-¦‹v¼Á6ù²1,e˜œdוü}ýžÄïÃâ[?Å£Ê-ÞáÐËæ•-‡Èaƒ‚üW¾QN¹ç_þØø£àÔ º[(ííí¡´¹1oòŒ;pÛr3¤ˆÖgìçðz/„Úf­ šªj·šŒÈÏ:ÛùAcE;Svsœ÷ëQ`¹æŸ´/¸¾+xVÏIŠi—vwbâ–‡ÍÀÚU“ƒ×øEIðCáu§Ã¯‡3øJâò=PÝÏ,·s|±.ðrxÚ u¯G¢€¹óÏÁOÙ¶?‡¿bñ]ψÓU[hå[XŸ–QÜm [qΰéÔÖÏíð:çâη¥j0xŽ-$X[´%ÐË¿snÎC W¶ÑJùå_´_Âiþ+èšN·’l.bïleߕی\Ví£7‡d ß=À¸m/NÓ,ÌÁ6‰ SÛ¦ìdã;sŒš÷JÀø…á-+Ç>½ð¾¶n…ï—æù±þIAƒƒŽPv¡…Ï‘¾| ñ‰~Ûx·Àþ6½ðγ-Äö×J²:ÅpŠß/(rÉìGÓ¿³|ømà zoxƒX:ïˆä m¤$%þûß39ÉŽ8'ŽkÓ>ø#Eø}átðæ€nM’Jò´H÷1Éä]5 g‰xÿàuÇŠ>9i?“ÄqZǧÜYÌl¡v!ÿpÆqŽœW°k¶gQÑo´õ,Ý[I|gnå+œ~5vŠb¹ãÿ³Á›„ÛÞ~¿¯ý«ö|lµ0ù~W›êÍœùžÝ*—Ư×þ'hÞ1‹ÄQiɦÛÁ ¶kC!“Ë™äÎíÃߎ«Ûh¥aÜð_ÚÞ÷á•Æ™¦øwâ êv7‡¸ÓuK_7Èe°ëÈ9\®9ã¡Åyå¿Áx{Á×ZçŠ~*¯ˆ4++9.4í=.<»v}„Çòù¸çU'ò?I|Lø}áoˆš"i>'°ûDq6ø%F),-Ó(ç¸è{Šò¿d?‡kyæ¾³â)!Î|“<@cÓ"<Ña¦s_ðO 9ÓLñ– ÈDMi 68,‚bÃò‘:ô‚ß®~|NÖ|c/ˆãÔSR·žl¶†3™2IÛŽq³;רøÂz‚¼=ƒá˲±„–¤’Ìz³1å˜úŸjÜ¡!6x?ÆŸÙî/xµ|ká~O ø„°ydU>\Ž£@T†GÇŒçÓ9'ÁŸ³f©?Œí|SñCÆ2xž{VVŽß.áÊœ¨ws’ ó´Ÿ^µôX.ÎKâ¿ÃýâG…$ðþ½ˆ÷‰mçˆ%¼€Iö$x ×Ïëû5|I³°“Ú_Åy"ðÜ»ƒ[2§¨1ÚsÜd_VÑE;}ðSáNð»ÃÒéúK=ÕíÑy}*€ó8º£' îzæ¹?ÙÛàuÏÂ}oUÔfñZ°¿·XB%¡‹fÖÝœ–l×¶ÑNÁsļð:ãÅ´Ÿ‰Iâ8­cÓî,æ6Fл?áˆß¸c8ÇN+¥ý¡¾KñWÁ–~‡WM)­õ¼óž(`±È›pÏLç=«Ðîg†ÞšâXâFYÝ‚õ&¼ïÅßü oŠ+æÕnGU3îÿwõ5J¦¯'c§ ƒÄâåÉBOÉ'Âÿ 7ƒ|£ø^Kżm6ØBgTØ$äœíÉÇ_Z·âh>´ûN·ª[Ù¦2ªïó¿ûª9?…|Ùã>*ÕƒA£G‹nxÝï&#ýâ0?^m Z߉µ‘­î«¨NsÕ¤vúšó*æ°^í%v}ŽëÉ{LlÔ#Õ-_ß²üOmñçíîÓÁö#í—k“õTþ­ùW’”ñ5Ôu[ùçÉÃ\Ü1 ²ƒú>•Ôh õ‹|M©è÷×õ¬±~§ý:}k¦ׂ…]ýT ¶Ì€cŠTð•ñO›ì»âs¼·&‹£•ÁJ}fõüzü¬ŽHÓ,ô«*Õ>f’FûÏõööÿõÕÚÔÿ„s_ÿ .¡ÿ€íþŸsöÓ½½ÌO ¨pÈêC¨5íS§ q傲>‰­Š¨êÖ“”ŸVGJ pG"’гé/êÚž°¿-–’ÞÚ7ê kWð>ìÏáIm˜äÛܰÀ€žk½¬™fOŒ4µÖ|9{`W,ñ³ŽWõós¬TŒpE}O^âŸkíâ;÷°Ó%–Õçg‰†1‚së±4qTWJ< â³ÿ0‰ï¥ÿQà/ù„Iÿüj®‰±ÌÑ]?ü >-ÿ KßÔÿ_øWþ-ÿ Kßäÿ.‚Ç/Eu#á÷‹Oüˆÿ¶Éþ4áðóŧþa Ûdÿ.‚Ç)Eu£á׋ü¸ ÿ¶Ëþ4áðãÅóåÿ¶ËEÐXä(®À|6ñ_üúCÿ–”|5ñ_üúÁÿÖ‹ ±ÇQ]øiâ¿ùö·ÿ¿ëGü+Oÿϵ·ýÿZ.‚ÇEvc៊ç…·ýÿõøcâsÕ-Gý¶¢è,q4Wp>ø—¿ØÇýµÿëS‡Âï~ÈÛSþ]ŽŠîÿáVxþzØûj—þ_ˆÿ罇ýüoþ&‹ ±ÁÑ]ïü*¯w¸Óÿïãñ4£áWˆ{Üéÿ÷ñ¿øš9ìp4W~>ëÿó÷aÿ}·øS‡Âs½íˆü[ü(æAcϨ¯C õ®÷öCþúÿ Qð›Xï¨ÙþMþs ±çtW£¦տè'gù7øRÿÂ¥Õè)gÿ|µÈ,yÅéð©uOú Ùÿß-@øK©ÿÐZÏþøj9Xóz+ÒGÂMG¾­kÿ|58|$¾ï«Ûÿß¶£™4¢½4|#»ï¬Aÿ~øÓ‡Â;žúÌ_÷äÿÈ,y…êð¨çï­Gÿ~øÒ„RÿÐm?ðÿñTs ±åÔW©¢ú/þÿöT¢~úàÿÀoþÊŽd0>é¢ûÆ ;®c³¦?ït_Ôçð¯u®OÀ_ ý­çÚžãh åíÚxê}Jë*¸ÐWüv¿2jÖ:r·Ë &Fí1Çò_Ö½‚¾ø§rn|s¨xŒ¬cÛ ?®iÇp{½QVHQ]‡|/Š4éïP[UŠ_(ýÇúZè‡Â&ï®üÿì©s!ØòÚ+ÕGÂ%ï®Âßÿ²§„P÷Öäü-ÇÿK™™åW¬ÿ£¶ï­Íÿ~øÒÿ£´ÿ Üÿ÷àÈ,Ï%®ÿàuéƒÄ×E°·6äêÊA¡jÛìûësÿßþ5¥áφðhšÄ•¾¯;ÉìåJúûÐÚ°$w”QEAAEPEP\ÅOZxÛ³i“mK¤ýå¤Ä«?Ð×]ELà§lͰõêaêÆ­7iEÝjv:§‡uÉl®ãšËP³—†F#óW´|1øõ=šÅ¦xÊ7¹„aVþ!™ýõþ/¨çØ×¥|døee㋵[¶Ö LA9,€s±ýºàö¯“|A£jz©.™«YÉkuÃ#޾à÷â¾r¤+`*^Oësõ¬'.â|*…x¯h·]Wš}¿¦}Ñ ëZ^»`—ÚEü–î8x›8ö=Áö5£_øw_Ö|=z/4]FâÊ`y1¾{Э{_‚¿hi£ mâÍ/Í ÝŸ õ(x?Jô(f´§¤ôò¹ŸâðíË ý¤~çÿå÷EÑ\×…üuáO¢ÿcëV³ÈßòÅ›dƒþØ5Ò×§ÆJñw>:­”eÉR./³V (¢¨È(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢©jZž¦ÀfÔo­­#^iUæM&ÒÜq‹“²W.Ñ^qâ>Ò7*j¨Ê?‚Î2ÿøñÂþµæþ#ý£/¤Ý‡ô`^ÒÝÈ\ÿß+€?3\µ1Ô)ï#ÛÂpÞg‹ø)4»½?3èúÍÖ5½H„ͪj–vHY¦Tþf¾>×þ*ø÷Z,.tƒóÂþ†¼b´ü?áýkÄb×FÓ.od'D„…úžƒñ® æ8š®Ñvô>“ÂyN <õW5ºÉéú"Ox£Ä>!˜Ë­k—¹9 $‡`ú/Aø β´º¾¹Kk;yn'ác‰K3`+Ü|û=ßNRçÅz‚ÚÇÁ6¶§sŸbçøf½ÃÂ~ðç…­Ä:.—±ÆLn‘¾¬y5­¶µgÍQÛó91Üa—à#ì°‘æk¶‘ûÿÈð‡ÿ5PÇyâyÿ²íO?gL4ì=eýM}áx–fÑ4è­<˜Ì’¼Ç“[ôW³CJ‡Âµî~{šgØÜÉþú^ïe¢ÿƒó (¢º+À~,¨_j8Ï”ò׿Wü[ÿ‘ûPúEÿ¢Öª;‰ìrtQEY'ªü”ùz´$ñ˜˜ûèé^§^Oð´j­Ûdcõ5ë›Ü¥°QE†QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEó\¿‹õv'?é’À1Å}!_7øÙ xÃWVãý2Cø$UDLÇ¢Š*É=«à`Ç„.­ëÿè ]õyÿÀ§ áK´Ï+zÇÅÿ¯^Y²–ÁERQEQEQEQEQEQEW1ãÏh>3ÓM¦±j Š?uqÄ}ô'2\%±Òïߟ´Z€¡ûKÐþ‡Þ¼\FSÖ“ù¡åÖ\»6§§-Eò†è÷þÑ·(5ïG/÷¥´”©ÿ¾[?λÝã—€5«5õΜç·0?5ȯ‘¨®šy¥xîîxø® Ë+ë¸?'ú;Ÿvi^,ðΪÓµý6äŸáK•-ùg5¶# ‚=«óà9¥§xƒ^Ó±ö kPµ ŠåÔÈ×\3Ÿæâxuü?ëF·Þ¿Éþ‡ÞÔWÅv~ ÙxžõÂôm“ÿB¶í>;|ABÉyesï-ªçÿÅn³z/tÏ.§føeóä}sE|µíãÀ“MÑ¥õ&)?“ÕøÿhípÞxsOcþÌÎ?ƵY¦õüIpfl¶‚öò>–¢¾nOÚGTþ? YŸ¥ËéNoÚCQíá{Qõºoþ&Ÿö–ù¿GúŸ›ÿϯü™™ô}óaý¤5sÓÃ6#þÞü*½ÇíâF¸Ð´¸ÏûlíýE'™áûþ kƒsgÿ.×þ¿ÌúnŠùVãöƒñ´‹ˆ­4xOªÀçùµeÝüqø‰?ÜÕ-íǤV‰ÿ³Pój ¹ÑÌå¿*ùÿ’>¾¤$’@¯Š/¾(xþñYfñN  ÿÏ&ÿè V ÿˆuëýßnÖµßxKrìæk)gúEôøÿ‰V+Ñ7þGÜz–¿¢iÀ›ýcOµ¯p‰üÍs¯Å¿‡ÚvDž#·™‡ðÛ«KŸÅAñ“31ËO©4•Ï<âoá‰éPà <‹U¿D—ùŸPêÿ´?…-à ;MÔï˜t,«ŸÄ’Jã5ŸÚ/^œ2éZ…˜=giX~[ExÍ<Ë.¶ô=¬?åTw§ÌüÛÿ†;oâ×õmË7ˆg·Œÿªˆ@öÊŒþµÆÞ]Ý^Ìf»¹šâSÕåräþ&¡­ÂÞ#×.“¢_]îèÑÂvÿßGÖ¹\êÕvm³Ù§‡ÁàcxÆ0_$cÑ^·á߀^1¿Úú”¶zTg¨wóÀWÖ½/Ã<'§•“W¸»Õ¥•fòãü—ŸÌ×M,º½N–õ<Œge˜]=§3í¿åû;[«ÉÖ Ki®%n‰cø ô? üñ¶¸VK‹4Ò­›þZ]œ6=sù⾪Ðü=¢hpt.ÒÉéAIúž¦µkÑ£”AkQÜù,w×ã…¦£æõvß™ä>ø áM+dÚÃͬÜ/$HvEŸ÷G_Äšõ :ÃNÒ,„6¶öVѯÝ*ô«ÕCÄVò^h…¤_ë'µ–4ú²+Ô¥B%h+ŒÌ±xÙsb*9~_vćTÓG]BÐÛeÿiÕô¡×S²ÿ¿ëþ5ó%¿)çÜúdëZ8ëªØûxOñ¤þÜÑ¿è-aÿ)þ5ó=ùBçÒÿÛº/ýôÿü Oñ£û{Dÿ ÆŸÿ)þ5óEr…Ï¥¿·´?ú éßøŸã^ñFâ ¯_Ïm4sDÂ=¯SûµèEs4P•»…QT#Ö¾BE–«qÙ¤à þ¢½:¸‚¶¦ßÁ¢b9¸Üa…þ†»zÍîZ §6©¦Á+E>¡i‹Õ^eR?jáâ¾kñe÷ö—‰uÕ9Yn§û¹Àý¡+‰ŸBsFu}<ÛÊ'öî‰ÿA?ÿSükæŠ*¹Eséííþ‚úþ§øÒ{Dÿ Å‡þ'ø×Í4QÊ>–:þ‰ÿA{ü_ñ¤> Ðÿè/cÿ×ükæª(å ŸJhCþbö?÷ùÆ“þ=þƒ?÷ùkæÊ(å ŸIø|ÌfÇþÿ iñG‡‡üÆlïð¯›è£”.}|UáÁ×Z±ÿ¿¢š|[á¡ÿ1»ûú+ç*(å ŸFÿÂ]áŸú ØÿßÑIÿ w†è7cÿE|çE¡sèÏøK¼3ÿA»/ûú(ÿ„¿Ã?ô²ÿ¿•ór…Ï¢ÿá0ðÏýìÿïåÆ>ÿ Ý§ý÷_:QG(\ú(øËÃþcVŸ÷Õ'ü&~ÿ Õ¯æ¾v¢ŽP¹ôAñ¯…‡üÆm¿_ð¤>7ð¨ÿ˜Õ¿äßá_ÑG(\ú þï Ð^?ûöÿáIÿ ÷„ÿè,Ÿ÷íÿ¾~¢ŽP¹ôü'Þÿ ²ß¶ÿ Cãÿ ÿÐUïÛ…|ÿE¡sßÏÄ ÐLß¶ÿ Cñ ŸôÿÈmþà4QÊ=ôüCð§ýOýúoð¤?|)ÿAÿ¿MþàtQÊ>‘ð÷ˆô|Mý™peòq¼+Œç~•¯^ðoSû‹–ÕÛÞÆb?ïWùø×¹Ôµa ¯Ÿþ*[›j\¨¯ +Ç~:ؘµ»+õS¶xLlqüJÀŠ#¸3Îh¢ŠÐ“°øãQák[»vÓÍÚÏ"¸Ä»6à`ö>ÕÓÂÞþ€/ÿ_ýyM¬‡sÕ¿áoÇÿ@ÿÀ¯þÆü^^ÚÿÀ¯þƼªŠ9P\õ3ñtöЇþÿö4ÓñvNÚÿàGÿc^]E¨.zø»7m?ûþøš}¯Å{Ë‹…†=2Íœ1'¦}+Ë+³ø=§­÷ŒY4v°¼Œà’6ÿ~”š@™î´QEAAEPEPEPEPEPXÚÿ†4 ~±¤YÞŽÆXaô=ElÑIÅIY—N¤éËšÏÈñ¿þϾ½-&“wy¥¹ä o6?ɹýkÎõßÙ÷ÅÖe›L»°Ô£ãŸÀñú×ÕWL»>–ô>‡ Å™¦OiÌ¿½¯ã¿â|=¬ü=ñ®‘“}á½ETqy‹ù®kœž }“Å$Mý×R§õ¯Ð23Áªwºf›z…/l-nTõĬ?Q\sÉãöd}ê­+QOÑÛó¹ð%öÍÿÃO_gð¾¸òLql'ñ\V çÀ߇·ìÓnmÉïÓÐ’+žYEU³G«Kp2øá%÷?ÔùŠú–ëöyðl‡÷7Ú´ÚUoæµBÙÇAoõ Ô¶ˆßÈ Éåx…Ñ}çd8×*–òkäÏšh¯£[önÓ¿‡ÅCëj¿ãIÿ ÝcßÅ?ø ¿üUOöf#ù_õÇ)ÿŸÿä|çE}¿³v›ü^'»?KeÖ¬Áû9xxßkÚ£ö5þ`ÓþÌÄvüI—å+í·ògÍWÔö¿³ß‚ã¾»ÕgúÌ«ü–µ->ü<·~™q;ò]?ò µ”×}ŽyñÎY”ŸËþ ò%*‚Ä“ØWÚ¶_ üiÌ^ÓØúÈžaÿdz[ö:‰b1e¤XÛñÝÀ«ü…mžoy#‚¯á×ðè·êÒÿ3áý?Ã~!ÔX Q¸ÉÆc¶r??ÕWGð­íÞà%d1EîíÀü¹?…|ëß5Þ|cñÔµ¥Òí¤Íµ‘!ÈèÒwüº~uÁÕÅhK (¢¨AEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPÖW2ÙÞCwm–¡ô äWÒº¡«¤Ûj’xÃcÜ~"¾d¯Oø+â5‰ŸÃ÷Rc{-I*é?Ú¾¸(»¦µýü~¼}áùfººGUu*À#â £åŠ+{ž¼Ò¼Cwg¤ï ¹hYP°(yþŸ…e;Q=,.¿ïË…ir ´U¿ìÍKþ÷÷å¿Â”iz™ÿ˜ußýùoð¦:*çöV©ÿ@Û¿ûòßáU]Y£©VS‚Á€EP^»ðOòô»ýM‡3J±!>Š2qø·é^I4’,q©gb€2I5ôwƒ4¯ì_ YiÌ’8ó&?¾yoÔÔÉQEAAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPW‹4˜õÍïM|*~íð¸åOæ|áq ¶÷[Î…%‰Š:ž ƒ‚+êJò6÷cÄ6‘þêbè÷_³~=>£Þª,LóZ(¢¬“CÃï¦&­Õáil™¶Ëµˆeø†==+Ø­þøFâšfxäPÈË9!èExmv^ñÍχ€²»V¹Ó‰ÈP~x‰î¾ÞÕ->ƒG¢´ð¯üû\ßãGü+O ÿϵÇýþ5Ðhšî•­AæéבOÇ*~ªy¥Sv;oü+O ÿϵÇýþ5³á¿ é^óÿ³"t3ãyg,N3ç[4É¥ŽÚI]Qe™ŽZW ®'âoŒbÐìšÂÎ@Ú”ËÆ9òTÿ÷ô›ão‰V¶Šöz [›Ž†àŒÆŸOïÓë^Iuq=ÕÌ—72¼³HÅØä“T6FÌÌŘ’Ää“Þ’Š*É î>ø*[Ý^j2\Emâ1 7SÔr:M…Ƨ©A§Ú&ù§pª==ϰ×ÑþÒíômÛM¶»ç±êXû““S&4ŽCþO‡¿çëQÿ¿‹ÿÄÒÿ©ðïüüê?÷ñøšïh©»Ž |*ðçü÷Ô?ïêÿñ4£á_†ÿç­ÿýýüMwtQv8_øUžþýñÿ¶£ü)GÂß úÞŸûl?»š(» ?ü*ï z^ÿßïþµ/ü*ÿ ÿvóþÿõ«·¢‹°±Ä¯ð¿÷o?ïÿÿZ—þ‡…¿¹yÿÿúÕÛQEÂÇÿ ÃÂßóÎïþÿš?áXø[þy]ÿßó]­]…Ž/þ—…ç×ýÿ4†^ÿŸ{Ÿûþk´¢‹…Ž4|3ð§üû\ßö¥ <)ÿ>“ÿßöÿìh¢ácÿ…má?ùò˜ÿÛÃÿ(øoá/ùð—ÿük¯¢‹…ŽKþÏ„¿èß÷ýÿÆøW^ÿ càDŸüUu´R¸ÎL|:ðýÏþIÿÅQÿ ëÂ?ô ?ø'ÿ]eî'ÿ ëÂ?ô ?ø'ÿKÿ ïÂ?ô ?ø'ÿ]]\Sþß„èÿ‘äÿâ©GÃÏÿÐ+ÿ#ÉÿÅWUE+Êÿ½ðýGýÿ“ÿŠ¥ÿ…}á/ú¯ýþ“ÿŠ®¦Šw—ü%ÿ@…ÿ¿¯þ4Âá/ú'ýýñ®¢ŠW˜ð˜ÿ˜<÷ñÿÆ”x Âô‹þþ?ø×MEÂ~*xb=VŽâÆ-š}ÈùDn+“ùþ~•Æ×Ò^-Ñ`×ô9ôÙð¥Æc|gcŽþ{f¾uÔlîtûù¬nã1Ï ”u>¿áWKEz|Éé<.RHØ20êèi”U÷o‡~4¶×íÒíÒ-MæN‚P?‰¨®Ê¾YŠI"•e‰ÙU”àƒë^…áoжj–ÚÜ&ò!€&N%ß³~†¡Ä¤ÏcÚ(À¬-ÅþÕ•~Ë©B²ùg)ØÿL¿…mÉ4Q¦÷•?¼XR1ø£ŠÁÕ|cáÍ5OÚ5HÇðDÞc~•çÞ(ø¥spo¡Û›e1ý£ò£þ[(þ¨íù};ª(å† ŒUÁVS‚Á’½§â7€“X/©é*±jd¢Íþ ïß¿­xÝݵÅËÛ]BðÍãŒ~•¢w!¢*(¢˜9¥‘†W#б¦Ñ@Q@U2ÂóR¼K; y.'~ˆƒõ>ƒÜÐ0E,ó$0FÒHä*"Œ–'°¯lømà„ÐTjWÍ¿Qxñ´}ØAê©ìM?áߢðöo¯š;E—¨ÊÂ;…ÏSïÿ×ÏmPår’ (¢¤aEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPUõ+]FÑí/`Iàa‘ÆAÿëûÕŠ(ÆüeðÒòÌÉw î»·êmÏúÔßÞ¯Ö¼öDxähäVGS†V úúš²u¯ èšÈ'QÓ¡™ÈÇ™¯ÿ}j”…cæÚ+×5Ÿ„ör}+R–yλ×ó#õ¯8Ö´Í'R–ÂâHXˆÜcbTäg¸I¦MŒª*ÏØ¥þò~gü+¨ð‡€o|Alnþßomn¡;K¾G·õ¢ácŽ­ï øOXñ€ÚAåÛg q !ÓÔûÒ½OCøgáë [Ÿ:þEç#Ïû£ú“]¤1¤1¬q"¢(ªŒ*\‡cžðwƒô¯CºóïÃÜÈ>o¢ÿt“šé(¢¤ ¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¬Ox_Hñ ¾Ëø1*ŒG<|HŸqìx­º(¼Mðç\ÒÙå³ûFØróî½,×êÈåJ°8 ŒkêzÍÕ4TmÚ†›kpý7¼cwçÖ©HV>i¢½æçáÇ„æ9[ !?ôÎwþ¤ÕøUþÝœ^ãÓÎãùSæB±áÕ%µ¼÷S,6ÐÉ<­Ñ#RÌ^ïiðëÂví¸éÍ1<Ù˜Ë8®ŽÃN°Óâò¬lí퓸Š0¹úâŽ`±ãÞøeªß²Í«·ö}¿]œX}:/ãùW«x{@Òô+_³é¶Ë?}Ï.çÔžÿʵh©nã°QE†QEÿÙifhp-3.5.20/DOCS/LPRng.jpg0100644000175100017510000005546107411207206015210 0ustar papowellpapowellÿØÿàJFIF,,ÿÛC  !"$"$ÿÛCÿÀõî"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?û.Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š;Vf³®èú4>n«ªYÙ'¬Ó*:M¤®Ê„%7ËviÑ^Yâ޾Ó7%­ÅÖ© ím ÿ}6åšóýsöÕ%ÊèÞµ·žæS!ü†?rTÇáá¼¾ãÝÂðÆi‰Ö4š^z~zŸIÔWÚXâP2K°¾8Ö¾/üAÕ2¯¯=¬gø-cXÿP3úשjº¦¤åõFîí9žfækŽyÄÃÏÀ8™ª^‰¿ò>ÓÕ> ø+Lȼñ6˜Œ:ªÎ¿%É®[Søïà L‹{«ÛÒ?ç³ù¶+äš+–y½Wð¤n‡`aüIÊ_rý?SéGöÒ#OðåôÞ†y–?庹ëïÚ7]Ÿ±xO€vó%yü±^EsË1ÄKí¥.ÊiÿË«ú·þgªÞü|ñìç÷M¦ZH­‰ÿИÖEׯ?ˆÓ“ÿ Dhíãû.k¢±–.¼·›ûÎúy[O᡹dß¼{(!üU©z&?•R“ÆÞ1s“âh»{ þF°(¬Ýjy?¼êŽ_…‡ÃJ+äy|QâiNdñ®çý«Éõ¨¿·õÓ×ZÔOý½?øÖm<òîl°ôVÐ_r4×Ä> ^W\ÔÇÒéÇõ«ø¿Å±ŒGâi¢ßÊ?öjÄ¢Ÿ´—F'…£-à¾ät–þ>ñ¬1ø§Vý«–oækF×â¿Ä;oõ~(¼oúè©'þ„¦¸ª*•z«i?¼Æyn(¿ûu—iñËâ¨ÚÜzù¶«ÏåŠÜ±ý¢|WÿKÒt›÷§þÌkÆ(­c¯¤Î*œ;•Ôø¨Gä­ùDiß´…¹ÀÔxïåµçµ¾à?ï‚käú+xf˜ˆîîyµ¸/+©ðÅÇÑÿÏ·´ˆ^ Õ€û‰tæsü0¿&Á®šb•Å":žêr+óî´4wZÒ\>—«^ÙÿwÁ¹žXÅMy?ÑÙžõEržø…àïíM/]µy[¤27—'ýòØ5Õdt®èN3W‹¹óU¨U¡.Z±q~jÂÑEFAEPEPEPEPEPEPEPEPEPEPEPEPEWP¾´Óí^êúæhe¤•ªýI¡» ''dZ ×øÏã×…´ðh‘ˬ܎7'É?ï“ø^/âïŒ7ñxÿ´Ž›lÙýÍ–cãݾñüë‚¶eFž‰ÝùO—ðŽcŒ´¥H÷—ùn}Kâx[ÃHNµ¬ÚÛ>3åoÝ!ú Éý+ʼQûEiî‹Ãº4÷l:MtÞZ}BŒ“úWÎ2»Ë#I+³»³1É'ÜÓkÊ«›UžV>ÓÀø:×noî_r×ñ;ï|_ñæ¸Y[XkþYY/”ü ï~µÂÜÜ\]Jf¹žYä=^F,Çñ5çάê;ÉÜúÌ6 …-(ú ¢¦²³»¾œAei=̧¢Cv?€®ËEøKñU ÑxrâÞ3Õ®™aÇàÄ7éD)N l1ì6^µEV‘ÃÑ^×£þξ#ŸiÕ5½6ÉOQ ´Ì?´~µØi?³§†¡ÃjZÖ§xôA"Sú1ýkªn"_fLJ_‹òª?òó™ù&ÿà~'Ì”WØÚgÁ¯‡v  ‹——¸žGÏáœ~•ÓiÞð¾°øsI·#¼vˆçŠéŽOQüRG[°±þ)?[/ó>´°¾¼8´³¸¸=1LÿÈV埀¼mwþ£ÂšÉï—´t›_q""¨ ªè§WDrhu‘æÔñ³þ½[ä|gið{â=ʆO JŠ{ËqøµmþüA”ö¶ç»Ý?,×ÖôV«( ·láŸæRøcòæ|±ìñãVÆýGBAÿ]å'ÿEÕÈÿg/óëÚRŸeÿJúnе•á×OÄæ—f¯i%òGÍ+û8kŸÅâ=<}!sRÙ»VÇüŒö_øßã_IQUý™†þ_Å™ÿ®·üüÿÉWù5?ìá­ÿˆôóõ…ÅDß³ˆ‡_ÓÕJújŠ?³0ßËø±®1Í—ü¼_ø ÿ#å©ÿgo)>V©¡È=å•Oþ‹5ŸsðÇð±ç\Xî±ÿ¡_ZÑPò¬;ï÷›C³HîâþGÆ·>#Û-áÇ‘Gx®"|þ³úV-ï€|miþ¿ÂšÀd”´wñPkîJ+'“Òé&vSãìjøéÅýëõgçõÝå£m»´žÝ½%Œ©ýj ý–(åB’"º‘‚dçõ?ø?RR/|3¤ÊHÆï² oûè Ö2ÉŸÙŸàz4|A‹þ-¹ÿšGÃTW×Z·Àχ·Ù0é÷Vs–¶¹oäû€ü«ŒÖ¿føæÑ¼K*v;»pßøò‘ÿ ×,ò¼DvÔöpüm•Õø›ªÿ+Ÿ”ðgí ¥]l·ñF%„§ƒqo™"ú•ûÃðÍ{ƒ­é:í’Þé…½ì üQ8l{àûø&¯è:Þ­ ß-ö¨\Y\ã‰ñŸb:ìkÓ¡›TŽ•×â|neÀØZÉË .GÛuþhûæŠùëá÷í3—Œmíöëeý]?ªþUîÚ&­§kZ|wú]ä7vÒ ¬‘6GÿXûWµCJº÷ùÖe“ã2Ùr×…—}Óù—袊è<À¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠŠyc‚&–gXãA–f8z“@nKT5½[MѬ^ûU½‚ÎÙZI\(ÿëý+È~$|xÒô¿6ñ¦¥x2¦å¿Ô!öîÿ†½|÷âŸëÞ'½7zÞ¥=ãçåVl"º£øW™‰ÌéÒÒ¿Àû£ƒqxÛT¯îCÏwòéó=×ÇŸ´¤"KOY™:}®åJ ÷TêW†x£Å^ ñ=ѸÖõ[‹³œª3aýÕʱ©T30URXð“^|]ZÿÓ±úF[‘`rÕz0×»Õýÿä%ÝøKá'ŽéXh‹}(ÿ–—®eÏÕOËúW Ñ^…< {Dùl_æX¯âUvì´_…Šš}…–Ÿ‚ÂÎÞÖ!Ñ!Œ"þ@Uº(®”¬x͹;°¢Š)ˆ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š*+ˆ"ž&ŠhÒHØa•ÔG¸5-v8?|$ð¼¦Ñ"³¿åµ—îX{à|§ñ¼·Å?³¥äAåðÖ¹Àê ½Mÿ}®A?€¯£¨®Z¸*~(žÖ ˆs•:®Ýž«ñý…üUà¿x^BºÞum8mßú:å ×?_ ³G±´r¢º0Ã+ ‚>•æÞ6ø+àïžÖØè÷‡‘-š€„ÿµÝ?†½yu²†µ¤ïäϴ˸ö´q”íç¾íÿ3ä:Þðg‹õÿêóD¾xrG™ |ÑJ={ýz×O㿃¾/ð¿™s·öµ‚äý¢ÐÊ=Y>ðü2­yÕyr…Z×F}¥,F3¢ùœý~ô}ð£â¶‹ãH’Êbš~°ÍlíÄž¦3ßé×ùפWçÔËÉ4¦!òÇEØýk&áœ&UmY©MnÞËÓüÊUsFÒu=fõl´› ‹Û†é1–?^:s^éàÙí›Ë¼ñîÑ×ì6­ÏÑäþ‹ù׺x{AÑü?b¶:.ocþ“½ÉêO¹æ´ÃåU'­Mârfœm…Ã^UÏ.ÿgþËï>{ðWì÷ªÞ¹ñN ºtG“mo‰&#зÝ_Ãu{gƒ¾øKˆ­¤é‹€9¹˜y“øéôÖQ^Í ? ×¹ùîcÄüÂê¬ýÞËEÿçp¢Š+¨ñ‚Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ô¯9øð‹Ã.]$CKÕ'ívè0çý´èß^½z5«:”¡V<³WGN_ QT¡'ä|Iñáï‰<sR×̳fÄWå¢lÿ ö8öÍr`•`TG ŽÕ÷íý®¡i%õ¼Wò®Ù"•+B |çñ‹à”ÚbÍ­ø>).,ÆZk–’!ܧv_n£ß·…‹Ë%Oߥªì~›‘q•׳ü=¿öyøœÞ"´_ k·µhýg<ÜÆsÝÇQÏ­{=|¥_]iz•¾£c3Csm ’'C‘_m|6ñE·Œ<#g­A…’EÛ<`ÿ«”pËùôö"»2Ü[«g=ÑóÜa‘GUbh/r[®Ïü™ÒÑEêŸåµÅÕÍ—ìýâ[›;™­§O²í’'(Ë›¨Áô$W«×‘þØŸòn¾'úÚé\4 n|ûð¯à—ÄøMñmŸÄy¬ ¿ó6Ã,Ó³.É^3’PŸÆºøf‰ôU?ò%Çÿ^¹ûɺø_éuÿ¥sW­Ž´¬6ÙòOü3įú*ŸùãÿŠ£þƒâWýOü‰qÿÅWÖ»—ÔQ¹}EÙòWü3įú*ŸùãÿŠ£þƒâWýOü‰qÿÅWÖ¹ˆ¥¢Áv~liþ0ñïÉWÿañíõÆ…{5µÂË3Éë…21û§QÁÈ#5÷oÁŸ‰ºÄß &­¤¸Šî úÉÛ2[Iè}Tó†ïìAáÍyUþ9øåX§U¿sþ’k9'ñ€õy5ÿ jK,mâ&ÇÈÜ>ª}zƒ‚0@5ÆñqgIü~ZÙ|q´õWj^Vëæ­~;|`w†¼)r Þ ]^ÆÔö(‡ûÞ§·nz|âKË!$³»œ’y,Oó©þXj_oRÏ@µ{‹£ƒ:“Ä»;v_~ÿ^+ë/…?t_$w×ë§­›Ïuù!>‘©éþñçéÒ¼©PÄcj¾}ü¹¥˜å\=‚Š ùå%}7~o²þ¬y'ÃÚÆ¼"Ô|HÒé:s|¸¸”}ÜçŸjú7Â~м+§‹-OŠÒ?ã`2òVcÉ?ZÜ¢½Œ>î­{ŸŸæ¹ö33—ïehôŠÛþÌ(¢Šêø—ÇúΩ=¿‹>Â-hoŠçûn Ï2MÀlÛpIÉãŒw­O…ú-Ÿ‡¾è:E„ 6öª1–* 1÷,I>æºJ¢QE(¢Šó_xÓân­Ý[h_¤×ôȱäß&¿&o”û¢¥†G¾+ÉZ4;å¸Ô6†7ÜFÍŽ¤·_j·ð“Ǻ?Äo[xH%þîâÝŽ^ÞQ÷þy¸ ×\jˆ>fñí;â¯^%¯‰þ ßiRIŸ,Ï«adÇ]¬ Úß5…ÿ ÿTãÿ+_ý¢½“ö©Ñlõ¯~$P$’Y[ý²#&7Œƒ‘éÆGКüä©l¤“>·ÿ†Îÿªqÿ•¯þÑGü6iÿ¢nðuÿÚ+äŠý6ø  üðoþ@¶¿ú-hCi#À£ý³Sv%øt꾫¬dÿè‘ZV?¶?‡]€¾ð^« ÷0ÝG!˜ZúCXÐ4MfƒWÒ4ýB&dº¶IAüù£öý›tQ ^x«áý¡±»´C5Ι&)rÆ0yV'hàãÕê-óÂÿµÂjT†æÿPÑdsý¡jBçÝ£.Ô‘^ǤêZ~¯a¡¥ÞÛ^ÚL3öò‰dz ~NWwð{≾ëÑßiO-ƒ¸7š|Ž|›…ïÇð¶:0ä{ŒŠWôÊŠÀø}âÍ'Æþ°ñ.‹){KÈ÷mo½Ñ”äߪ$(¢Š(¢Š(¢Š(¢Š(¢Š(=(¢€<ã÷ÂE»ŽoøVÌ ¡™/¬â_õ£©‘÷½@ëÔs×ý”«Ÿûæ¾=+çߊ_üJÐüu¢Ãåióê1‹ÈÐq ³`E`O¶~ W•ˆÃ{*ª½?™ö¹Voõìò¼S»iò?5ª_å÷v>‚¢šFiÕêŸä¶'ü›¯‰þ¶ŸúW zåyí‰ÿ&ëâ­§þ•Ã@Öã¿cïù7_ ý.¿ô®jè>9|>ÿ…™àI<.5ì÷1Ïö³ùØØOw/\õÍsÿ±÷ü›¯…þ—_úW5zÑ8ëHçÉ?ðÆGþŠAÿÁ/ÿo£þÈÿÑH?ø%ÿíõõ®åõn_QEƒ™žðàøSâëÍþÏí´Ø5Ÿ“ýŸämÝ$o»w˜Ùû˜Æ;õ¯q¤ÈìE-1œzçü—_ØZÿÿJMi²†R¬R0AÌ×?äºøãþÂ×ßúRkR¾c3¿ÖÈý—ƒ-ý”“îÌ=SñÃ?Ãâß \4j‡Àrct'˜ÜwCùƒ‚0@5÷WÁŸ‰šÄÏ &­¤8Šî0úÉØ-¤ô>ª{7qèAâ÷Uu*À#†±t]SÄ ¼W‹|%pcT8ž’Ž„óŽè0px îËñüß»©¹ó™ú”ÿt*}Y‘ùÁûShñh¿> §å__×Ãÿ°ŒÓ|TÕõSå[i žÙycÀÿÇå_pUGb%¸Q\Å/Ùü>ÑbÕ¯ô-{U·y ?öU ˜Â'|™e ¼uÍy'ü5ÿÃ_úø³ÿmÿøõ \ú&ŠùÛþÿá¯ýÝ¢¼Wàoí ៈ÷‰¢]Ú¶‡¯8&;ieÆ>[àdñ¤éœöªb°QEQ^#ñOö—ðƒ.eÓtó/ˆõ8‰WŠÉÀ†6ÂÒœŒÿºñ^>ßµŸÄ-gRK/ x'J’i"·)=Ô­ì2“ø W™öuQÖôË]cK¸ÓoPIèU‡§¡„}E|¢ÿµÄ ÝÃŽþGh$ä!ŠâÅØw+æîÍwúGícðÂêÅ&¾‹Z°¸?~µm>̤‚?/¥ÏF8¹E©-Ñï0¦ÈÕ ÉP}jJðßøjŸ„¿ó÷«ÿàðÕ? ¿çïWÿÀÿf{•yí‰ÿ&ëâ­§þ•Ã^¹^GûbɺøŸëiÿ¥pÓ¸ïØûþM×ÂÿK¯ý+šºŽ_¿áfxO _û'}Ìsý£ìþv6ÆÝË×=s\ÿì}ÿ&ëá¥×þ•Í^¥{gaÚ/® µ‡ &"äöÉâ=Ï”áŒýƒÿ‚_þßGü1‘ÿ¢ðKÿÛëéÿøIü3ÿC‘ÿ‘ÿð“øgþ†#ÿ#ÿ,g’üø~øºó_ÿ„³ûcí6 gäÿgùwIîÝæ6~æ1ŽýkÜMP°Ö´‹ùŒ­Ü¡w‚á€õÀ=9~˜—|cû$ÿÂCâíg_ÿ„ÿìßÚwóÞy?Ùü¿2F}»¼áœgÀÏ¥eÿßú(ÿùEÿíõõµ¬ŠS’ê|“ÿ cÿUÿ(¿ý¾þÆ'þŠ9ÿÁ/ÿo¯­è4r ç—sãÿØ*×ì>;ñµ™æ}žâߌnÛ+Œã·Jû¾Iý‡ÿä§üAü?ô{×ÖÔ!=Š(¦ ¯›ÿà _òJôOû §þˆš¾¯›ÿà _òJôOû §þˆš“Øksâ*QIJ*MÕÏ È»¦ÿפ_ú­ Ïð×ü‹ºoýzEÿ  Ы2 (¢€ (¢€ ð¯Û—þH\¿ö·ÿÙ«Ýk¿n_ù!rÿØJßÿf¤Æ·>«:Wü…m?ëºèB«T¶¯$wP¼K¾Eu(¸ÎH< “Cõ–õ)þèþUãŸi ð½ïˆµË•‚ÎÒ2Ç'ævþQ݉à ù‘¾4~Ò3Û-¾¼2mÿ[ýƒ{ùÏÏ5æž6ð¿íñ*þ;x{Ä›a†X¼1gû¨v¨úõõ5W"Ç•øÏ^ºñG‹5_^ñ>£u%Ã.s·s{øV\1K<É 1¼²ÈÁQrÌÇ€M{¯…?eo‰ú´ÈuxôÝ~f¸¹¾=–-ÀŸbE}-ðcöðoÙ£Ôþ}k\AÅõÒ"=ü¨ù õ$ŸzI™"—ì•𮇞 –ÿY„G¯kd¸ŒŽmãr#ïÉ'Üãµ{eUÎö…ÿ’!ãûÏÿ ×æm~™~пòDjÿµ»3HÔô»'µŒK7Úå`Û Á(ª l½1‘Ï5öOÁÙãÁÿnbÕî]õÝv>Rîâ0±Â}b§Ü’}©H¦ì²_Ã+‡¿ÚãW‹ÊÖõ†[‹¤=a@?w÷’}ØŽÕìôQVfÀô¯ÍÿÚ“G´Ðþ;øšÊÆ঎u ¦H’C€:rÆ¿H+óËöÈÿ“†ñýsµÿÒhé2£¹ãõë¿ µOøãÂ6_|Ù­f¸–ïR¸Tëã£b0GÖ¿U+ó»öÂcý¡¼H¸¶cõ6ÑmÏ)±º¹±½‚öÎy-îmäYb–3†GSÀö Šý8ø3â¦ñ¯Ã ÄÒ'¼µh`yªJImÊÕùƒ_ ±5ÁŸàlù—1éûÂßû5r=¶¾Ký³þ3^YÞKðãÂ÷mnÂ1ý±sa¾a‘‘Ð`å¾ xWÖ‡¥~Sø¿VŸ^ñ^­­\»<××’Ü9n¹g'úÓbŠ2«ïïØóÀ:w…þiúûZÇý±®D.§¸+—±ÌqƒÙvá±ÜŸ¦>¯Ôï†öéið÷Ö¨X´«dz”RC‘[⟃4Ïø#Qðæ§n."o³ÈË“À’)ìAüÆGBkòúê mne¶ K”u=UÁ~´ž•ùuñvÝ-~+øºÖ0C­Þ"Ø ÜPÅ{àOýâ_ˆ%ðýߋީ”ßgX Öä–¼ÅÃÎ1ÈϬÈ(¢Š(¢Šá?h_ù"1ÿ°Lÿú ~f×é—í ÿ$CÆ?ö ŸÿA¯ÌÚ–\B¿L> ÚÛß| ð•Ü1Ïo>…o±È¹WSÜ_™õúoðþH¯ƒì kÿ¢Ö„>ý¤~Ü|3ñÃÃnŽú Zm6cÎ<ÄO÷—8÷=ëËkôïã€tψþ¼ðæ %aæYÜÉ·˜•Ç·b;‚E~lx«AÔü1â+íY¶k{ë)LR¡õõ`ƒÜI‚w,ø ÅZ·‚üYaâMo.îÎMÀ»"ôdaÝHÈ5úUðËÆZO|câmLÃrŸ¼ŒŸšÞ½Áüø= ~\W²~ËánjŎ§;j®±Þ)<@ý`=º7¨õÀ¦‚JçèMÈdI¢YcetpYNA¡ú¢¿<¿lù8oÿ×;_ý&Ž¿CkóËöÈÿ“†ñýsµÿÒhéH¨îxù¯½¿aù!‰ÿa;ý–¾ 5÷·ì1ÿ$1?ì'qÿ²Ò[Ž[ï_ž?¶?üœ?ˆÿÜ´ÿÒh«ô:¿<lù8ÿ¹iÿ¤ÑS£¹ä¾øý†¿ä…Eÿa+ý–¾5÷Çì5ÿ$*/û \ì´–ã–Ǻž•ùyñoÃwø•¯ø~â6O²ÞÉådctLwFߊ•5ú‡^#ûNü‹âe„ZÆŠðÚøšÎ=‘´œ%Ü}Dn{IÚÞønÿ†8ð×ýZ¿þÇGü1dž¿èrÕÿð:÷/øYÿ è øOÿ6ÿü]ð³þÿÑAðŸþmÿøº,‚ìâ> |Ò>xªãÄ ¾Ô%žÍ­ SÄŠ 3£g#¿È?:öZäágü5ÿ¢ƒá?üÛÿñtÂÏøkÿEÂø9·ÿâè§]Er?ð³þÿÑAðŸþmÿøº?ágü5ÿ¢ƒá?üÛÿñtÀë¨5‹áÿø[ÄRˇüI£êòB¡¥[èç(BÁ ÀúÖÑ ’aÿù)ÿýõõµ|“ûÿÉOøƒøè÷¯­©!½ÂŠ(¦ ¯›ÿà _òJôOû §þˆš¾¯–ÿà ºÕšø[þ¡¼–ù¯ @å–5FMÇÐü}¥'°ÖçÆÔ¢’Š“CõwÃ_ò.é¿õéþ€+B¼¯àŸÅx—À9oi–šŒ‘Awisr‘J’*…l+J’2ãŸZïá(ðÏý :GþÇþ5fF½}ã_XÂf¼ñ^…o/.¡̵x¿Åïڋ„Ö^ ‘|A«U%U"Öýæc‚ÿEàÿxP;ß·WÄhl|;ÃÝ:pooÊϨ?êàS”SîÌú/½uÿ±—Ù>ÚM·îúâsïóÿÙ+á?k:Ÿˆ5»½kX¼’òþîC,ÓHyf?ÈvpÅ~‰~ËÖBÃà/„áÇ/ff>þc³ÿìÕ+qµdz]xWíËÿ$._û [ÿìÕuý¼õ«;_…6:3O¼¾Ôct‹?1Ž5bÍ@JŒûÓb[ŸU+þB¶ŸõÝ?ô!U©ð9Šd” ”`Øú“Cõžõ)þè§ÖW„5[=sÃn¯§Î“ÚÝÚÇ,n‡ ‚£ÿÕZµfAEPEá?h_ù"1ÿ°Lÿú ~f×èßíS­Yè¿üGö©Ò9/mþÇn„àÈò0=xÜ~€×ç%K.!_¦ÿäŠø7þÀ¶¿ú-kó"¿HeíjÏZøá—µ$kKE³AÉãùp}8ý¡L¯¿lŸ„ð–xxøÏB¶Ý®iq´Æ‹ó][ŽOÕ“’=FG¥}AäzUÉ*+Þ¿kð„x ø£D¶ÛáýZRJ"ü¶·–OenJþ#°¯¨4ZŸf~Å??µtäøsâ ¬ßÚFN•,ÌÐÌ^샑þÏûµõ ~OhÚ•ö«ZjÚeËÛ^ÚJ³A*QÔäýø ñ;Lø›à¸58(µHG©Zù¡—@뱺ƒøušdɇ_ž_¶Güœ7ˆë¯þ“G_¡µùÓû[ÞÃ}û@øšH]cxa$âHQX~M„w< ×Þß°ÇüÄÿ°ÇþË_×Ý_°n¡ÇÁË»u3Zj²‡\ò"0?CÏäi-Ç- ëóÇöÇÿ“‡ñû–ŸúM~‡Wç'í_¨ÛêüQqm"ȑ˔änŽFR)±GsËM}ñû É ‹þÂWû-|_vþÁ÷ÐÜ|žÑ-uY•×<ÊŒëúR[Ž[@W?ãïhðÕLj µ6þÐ,tÅa‡x£ÌŽ?Úå›ñ&¼ÀþÕ? sÿš±ÿ·ÿ·eûNü¸ I¯]Úçþzéóß*iè'sÙè®KÂ|âéVø«K¿¸a•·YÂÌGýsl7é]m1yí‰ÿ&ëâ­§þ•Ã^¹^GûbɺøŸëiÿ¥pÐ5¸ïØûþM×ÂÿK¯ý+šºÿоÒ>#øMü5­Üß[Ú<É1{7U“rt商9ô®Cö>ÿ“uð¿ÒëÿJæ¯K×u­#A°7úÞ©c¦Zg¼¸Hc z Ì@Éô¤sÁá>ÿÐsÅŸøoÿÆhÿ†@økÿAÏàU¿ÿ¯[ÿ…Ÿð×þŠ„ÿðsoÿÅÑÿ ?á¯ý ÿàæßÿ‹£@»<“þá¯ýÿÐsÅŸøoÿÆhÿ†@økÿAÏàU¿ÿ¯[ÿ…Ÿð×þŠ„ÿðsoÿÅÑÿ ?á¯ý ÿàæßÿ‹£@»0~|ð¿ÂËýB÷ÃÚ†±s%üI¢úXܤ‘·dkÏ=ó^˜kÃþ-𷈥–/ø“GÕä…CJ¶7ÑÎP…‚õ­£LGÉ?°ÿü”ÿˆ?‡þzúÚ¾Iý‡ÿä§üAü?ô{×ÖÔÞáE#2qÀõ¯øYñ÷Gñ×Ä+®}¥_À“ÓÊŒ¢l2`sž§ð4Äjx£Áu=^ú}+ã3étò‚Í<9o!EóKlzõ¯'×ÿd½__Õ%Õ5¿‹7Zì¿~{$»ŸA“?AéÚ½Ïã7ÄM7á—ƒˆõ+I¯Ü%¼pBáYÙ²x'Ž'ð®KàÇÍâ‰.´+-÷L¹‚ÔÜ©žUa"† @Çq¸Zìò¿øcú¨ÿùEÿíôÃÿÕGÿÊ/ÿo¯wøáñCKøWáËMcR°¸¿ûUжŠU‰ÚÌ[žÃ¨­Ÿ…þ.Ç^ÓüS>Ÿ ðvŽ ˜3…T\géE]Ÿ7ÿÃÿÕGÿÊ/ÿo¤ÿ†1ÿªÿ”_þß_[ÑEƒ™Ÿ$ÃÿÕFÿÊ/ÿo¥ÿ†1ÿªÿ”_þß_[QEƒ™Ÿ$ÿÃÿÕGÿÊ/ÿo¯§ü¢'†ü%¤ø~9¼õÓ¬âµìÙ¿b…ÝŒœgÆMkÑNÀÝÏ5ñ·ƒ>&ë:ÝÕÎ…ñvML—o“bšp Þ– rr}³^Iâ?ÙC[ñ&¦úž¿ñrïS¼qƒ5Δ]±Ø ÏÀöWÔ´R°\ù'þÇþª?þQû}ðÆ?õQÿò‹ÿÛëÔ¾|}Ò>"xòçÂVZõŒðC,¦i¥FR#`¤`sÎkÙ(² ³ç_þÏ~<ð\&ßÃ?¯ôûrÛŒ £‡‹ws±æ+Ÿ|W±ü<Ñ|W¢i×x³Æð•\¼¡¡¸þÌŽÏÊL³ld†ç''žk§¢˜\(¢ŠÃ|CðǵÍF¼)ñ$øVÑ!Ù-°Ña»2>âwïvx `z{×sE|ÍãÙ‹Å>1¼K¿üd¾Õ%ŒŸ¤åcÏ]«çí_À Âÿ†1ÿªÿ”_þß_[QJû>Iÿ†1ÿªÿ”_þß[Þ ý™|WàÛ§¹ðÇÆ[í-äǘ Òp’c¦ä3íoÄúbŠ,gðïÃ><Я®%ñ_Äsâ«W‹d0CäûÐ’Üd`ú×qEÄcxÛÃZW‹ü/áÝj5•ìF7Ôöe=˜}E|Äc“·â1¶t_þß_[QE†’áŒê£ÿåÿ·ÕýöMÖ|?¨®£¡|[¼Ó/`Mk¥´oL‹ŽGµ}OE+Ùçþ,ðgŒõ_i^Ò~$]èú´Iöª– $·¸M¤à¸1’~l«gÞ¼.ØÚiç’yþ%¼²ÈÅÝßFË3I$ÏÉ5õ¥ì ´|“ÿ cÿUÿ(¿ý¾ºþÌÞ*ðF¢÷þøÅu¥Í '•£’Ð24Å[²+éj)X.Î3â—…üOâ3Þ8¸ð¬»Ún`³<ÈWAÜ¥9ç*s_>¿ìfîìïñ%™˜å˜è¹$úÿ¯¯­h§`NÇÉ?ðÆ?õQÿò‹ÿÛë¡ð7ìÕâÏ_Iyá_Œ—Zd’àJ#ÑC$˜é¹b­Œœdµô­¬cP˜c“ŽN:×Áß¶¯µ â„þ*[wm']Úé0TP+ÆÇ±;wPN:ûξiý¥?h éGQð%Ÿ‡­•È~Çßòn¾ú]é\ÕëTî|íÿ ð×þƒž,ÿÀ«þ3Gü2Ã_úx³ÿ­ÿøÍ}EAv|íÿ ð×þƒž,ÿÀ«þ3Gü2Ã_úx³ÿ­ÿøÍ}EAv|íÿ ð×þƒž,ÿÀ«þ3Gü2Ã_úx³ÿ­ÿøÍ}EAvyŸÁÏ‚¾øY¨^ø{PÖ.d¿‰"”_K€’6ìyç¾kÓ b>Iý‡ÿä§üAü?ô{×ÖÕòOì?ÿ%?âáÿ£Þ¾¶¤†÷ øwÄIÿ ëö܆ì~êÖïUŽpO˺]®wü«î*ø÷öþÑÓÄ>ñuº•i"{IvhÛzèOùPÁnOÿñ’óÃ>…òUd¾™îO—ò“ó¯:øIk{ðŸöžÑ4JB¥ž+iØŒ·0®?Î?ïš•õoø]?µ0KId´VR:E bIF?Þ~uÕþÞ<º?Äx¾ÌÚêÛauãÀáúá×þù¥æW‘cöýÖ÷ÅÞð­¹ÜÐÛ=Ë ä—•Â/öÌþuÞ|Vø™®üмáÍ?ö†œÚZCçI#« b qÇ9ñ5㶤?kPˆy–&kivž‚8!8ÿ¾•‡ã^ÿûiøWþƒ:„1ïºÑ'[Ô såýÙÓknÿ€Ð.Èíükãû=àýÏÄtKˆFœ—vѳ`JÒòÔŸrÀWž~Î?.þ)x¢ÿAÕ4k=2h->Ó‚Vo0 ÀîôÜç_>x¯âAÔ¿e/ x8\n½MRKi×<˜!Ó>ß½Œ÷*Ç4˃´Gƒ×Q•£·Ô,íšv~[˜¶H²ÉŸûäQp±îÿ>=jÞø¯gàhZµÌë;M+)Y¥l*a}ŠŸÆ“á'Ç­_Åîþø@²Òî!7$ÊÌZh+†ìUXþ¼Ÿà4 ñ7ö°Õ¼e:™l¬'šý ä—üü—öŒ·†¿µ&ã{d1ÚßKû•à§Ë?ïÑp²ØöÚSã½×ÂÍKÑ´ÍÓS¸º¶k‰üùY|µÝµ1·× ù ï~|A´ñ?Â+_]G¬fÎ[‹¨Õ²±4[ƒ€à'òGÄ->_´Ÿ‰,ôÉÚ[k+9ÖÞD9·„…Ù¥ÇýõT|ñèÿ²ç‹ü Ó”½—PŽ u'Ÿ*q™öÄOÿ}Ñp¶‡Ñ?³Æ⿈5[kŸYiÚvŸ»O®Ì]›¼ñÐ1ü+ÝJð¯Ø—Â¿Ø?#ÕfeÖ¹p×LHçÊ$cô'þ^êzSBgñwüœV©ÿ^7Ÿú5+Ö~0~Ñ7Þø¼Þ“C²—L…­Œ÷#ù‰ЬìpHà{W“~ÅßòqZŸýxÞèÔªŸ´í¥­ÿíh–7 [‹:)8ùc úH®§qâŸÚ{â»wHøqö ¼˜†ïPµ¸ýòç‚%R#R}>lzš÷¿‚_4ŠþÚÓck[˜_ʽ³vÜÐIŒã€WÊÞ%ý¨|S¬ø–ãIøUàŸí˜ 'Ím5Ä“(8."ˆ‚«é’}ñÒ½—öŸ»¹²ø âÙí ˜Œ•<íyÿc^Yÿú²´_ø‹PT_¶I©ˆ]ñÎʼnJ¦]¨µÍ€ß´YñŸŠ¿áñ~‰‰­¹e¢,#’EÎèÙæGàã$çàã>©ñkâƒð×Â’kÚã;‚ÞUµ´Xó.$#!W?L’xð;¯…Þ¹ñ¡ñ”þ¶}xÌ“ý³Ì“p‘ ÁwmÛžõóüúíüoá½1™¾ÇœÓ ÏG«~ˆ´t 4?á§>,jqM­h? ­¤Ð cæÍöK›Þ™  ?ðö€´OŠ–ÓÚ}”ézíªožÉ¤Þ®™ÆøÛ#$d‘‘×­z‚ô­?Fð†•¤é‘G•µ¤qĨ íûç©=ó_ørü1ûpýƒÃè"µþÚ’*>G"ëA¸ñÛhô z3Ö~,þÑ·¾øÅ7ƒ§Ð¬åÒ­¥¶óï æ¬r";°QÁ 1ÀïŠäüYûPüCÓnàÕ ør¶¹|ZË©[ίr½AYATÉàÇ©®7ö€³·ÔlȬ.ã[ÜêzT2¡2²@ü{ßí· gà%á(¿»½¶)ÇÝ;ñÇàHüi‡%®þÓÚ®µcmÂÿ_ëZ—Ù„ú‡›m,Éf{¦Ø°XüYQúãoöqý¡gø‡â7ð§‰t‹m;W14–òZ–M·ï!V$«“Ôç¦9wì!akÁ©ïb‰VâëT›Í|rÛUŒú3^5ðÅÛ¦â(@Dö¨¡W“ñ@YsQED…àþ!|S𿃒H..E‹+f àÿ¶z úóìj*T5Í'dta°µ±U:1r“ìv×3ÃmÏq*E)gw`@êI=~Ux¦ ›oêp]Ü-ÍÂÝH$[p”î?8=ÁëŸzúÈ_|@øÛ¬›HÛìN<ÕLˆ"í²?·èz'ˆ?g/‡:߆mô«‹Kˆo ^5HmÃ1ë» «.„Ž;b¹¨ây^1÷{÷=\Ç)§–ÒQ«RõžñZ¤¼ßs›ýˆ|Aàû¯‡£FÓ¼›[³hDì<É—qÙ"çª`€@èsž Ÿ¢kãMoöHñŽ“~/|ã š&ß ÏæZLŸFMÃ>ù…\¶ðÏí{¡Æ!°Ög¿U࿵œŸÆ~:êŠåVHñ§7QóIÝŸ_Ò3RÌ@d’käÈ­ÿl»œÇ-Ò[©þ&:`ýPMŸàÇϯ“ãˆñÛØÉÄ É%÷éÆ:w"ÆíÇñþ'Ô4 x~îA´¹$šòæ »¢5aÃ'tAÇuû|%¹Ð´‹¯x–ÇË»Õ ØÛLœ¥¾C`z*¸ô Ÿâ®·ágìÕà/ÝC©_ù¾#Õ"!’[ÔØteˆqŸ÷‹c¶+Û@Åê;ôBך~Ô­âOþ Ñt+ ¯õ ³y6ñ ³í¹‰Ž>ФþétS$ø³Àwߴ)eáÁ³&Ÿg¿ÉØ£°Þìç'w?3Üÿ„ãö´ÿ¡Cÿ)©ÿÅWÖôR°î|‘ÿ ÇíiÿB‡þSSÿŠ£þÚÓþ…ü¦§ÿ_[ÑE‚çÉðœ~ÖŸô(å5?øªÎ×þ)~ÓÚ ‡ÛõÅek¸'›&œ˜Éè>õ}‘\׼xŸÁ¦æM0ŸIæ_Ô ™ó(·ÍðÊœ«F5t‹jþ‡Ìö_j»ÛH®í<-öó xäM:2®¤dwTßðœ~Öô(å5?øª»ðCâ”þ¼ÿ„sÄM!ÑÌ…Uˆ%¬ß<ñýÌõºŽùúŽÖâ¨#¸·•%†E ’#V¡u†D.·êG9Ê+euù&¯ð¾Ÿt|Ÿÿ ÇíiÿB‡þSSÿŠ£þÚÓþ…ü¦§ÿ_[Ñ]6<{Ÿ0þƾ ñ·†|Yâ­KÅÞ¼Òÿ´!Œ£ÌC¿˜ÌÀ`û×ÓÔQL¸WŽþ×þ½ñwÁ˨t« ‹ýJÂê+»x-â2Hø;*¨$®ÇJö*(ñ×ìOðãÄzWÄ]GÄ%ðæ­¤¥ŽÔßÙIù$` ]àg xWªþÙþ Ô<[ðª)4m6ëQÔ´ÛèçŠ XZY](áUA'ïqýÜö¯p¢•‡}O?b/‡^#Ñüu«ø‡ÄžÕtmb µû}œyd®ð3…B?¼+ë-wM¶Ö4[Ý&ñÛ^[¼©UÔ©ý ]¢‹w?;¼ð[ÆÏñsMÑ5O ki¥ÅªˆîožÂU·hQòÎ$+·iUà眊÷_Û›áþ³â+Oë¾Ñ/õ[Ëg’Òx¬­žil7+@NÐC ÿµ_NQE‚çÏÿ±7€õ/ øSÔõÝ.ëMÔõK¼yP4R¤1Œ.U€#,\ý1RþÚÞÔ<]ðòÇPÑ4ËGTÒ®Ã,°´²¼R ®TpB 5ïtQ`¾·>[ý†¾kž—ÄZÿˆô=CI¹•c³¶ŽöÙávN]ÈÆv ûñ‰Ÿ|hŸu}+Eðžµ>—q©Ÿ³^Ca+[¬r°`|À»@PØ'<`×èeX.yÅåñOƒ>O†Ðݶ¯§Ekmf––BæMŠÈ­ˆÊ°?.sÇš?f_ÇÚ×ù¯>#E²/åE[Ëi'’6üŒ–çʽBŠasãÙ'Áþ.Ñ>œÕî´S°®|oáoxºÛBm~o kqé\¼”_µ„¢Ü£$›[ÌÛ·#=ëëÍmMö8ÕÚÞ@ª£$’§W(¦³ä/ØwÂ>+ðïµË¯xcZÒ`—KÙ—Ö2À®Þj º€N8®—öíð׈üE¦øM<= jº»A5јXÙÉ9Œ¶Œàõô¯¦(¥`¾§Xø¼aû0hþÕâ›N½}Ùž"¯mpŠ¥w)äa†ëŒ×€|9´OÂ»Ï h~ ŸRµ¸˜² lžâÔ9ãÌIQ”.@y±ê3_W|dðƥㇺ–‡£j’ézœŠ²Z\Ç+G¶D`À^@8ÁǯzùƒÃ^)ý§~Û\h“xCTñK$×¶“ê%8ÆXŸîñœ ÑæŸ4?é´ÓãMAoüC©}šöïËX™Üã‚(qØg©û#ö˜Õü¢|<‚ïáÄ:„ºÉÔ#G[+w'’Q÷|…Œ…çœó^ à/†¾&üa³ñçÄ2]*ÎÞx§”\F!gœ¤1Å÷€È-Û<“_fPžSðÆËÄž?øtωqÞŪêÜÛÞ ›1m2©‘ÕË  »Hãœ_8xI¾0~ξ"Õ,aðœºÎ“xÃ.I%¼Ås²DtûƒÊž}GC_rÑE…sã?†Þø¡ñgãD>>ñu…þ¤E4sK•{u‘#ÆÈcF;˜rÝ>÷98¯^ý¬>^|JðÝöƒå{J.aØ(¸‰±º<žd3ÇPzä{uX.|]áߌ|áÈ|uà«»ûX…½ÍÎ9”(\…âL„uÀÎk¯ý–þxž×ÆWþ!Å,¤¦I--§Çœd“;æ Á /^N@ÀÏÔTQ`¹ñ¿ÅÿøºûöÁ³×l¼-®\éKªér5ô6¼QaÞÆ@»p¸99ã5íµþ‘«kŸï´ýK½ÔïîÝ–ÞÒšB‚HUñ^ÁE ž-ûèÚÆƒðil5Í*ûK»þÑü‹Ëw†M§nÖàú×xÁÞ.¶ý´.uûŸ ké\Ô¥òXJ¶å'ÚÞa]¸99ç"¾À¼º·³·{‹¹â·…ZI\*¨÷&¼ËÆ_ü¢+æÉ&·v¼¶â,ûÈxǺî¬êÕ…%y»˜<'.\=7'åþ{#Õk‹ñÇÄÏøI]5Ef¼QÅ·ï%Ï¡…ÿ_8øÛã'ŒüH$·Žìi6MÇ“fJ±í?Þ?†µr¾ð®¿âíKìz-Œ·/œÉ)á#ÏvcÀþuåÕÍyŸ-Ýÿ]³ÁpJ§m˜ÔQŠÝ/Õí÷}çqãÿÞ(ñ™i¤‘¢Ø6W6fqîý¿à8úš·ð«à¾«â7‹Wñ/a¦6Fxžà~?tSϧ­z—Â߃:'…ÄZ†¯å꺰ä3'î¡?ì©ê}ÏáŠõ`0*èàgUûLK¿‘Ž?‰0Ø:o ”AEu—Wé׿þE IÓ´M6-;J´ŠÒÖ!„Ž5ÀúŸSïZQ^ªI+#áå)NNRwl(¢Šd…Q@Q@Q@Q@Q@Q@,þÓ>mÄ?ð“XC?RßG?ÁºýsX_ ¾+jþ •l®ê+7Ïl[æ‹=Z2z}:nµõˆ´{ F¹Òu8ö—(QÐþ„zy¾6ø£à]KÀúûÙÜ«Ke)-iuŽ%_Cèø¯BxjžÚ–ÌýC‡3,6o„þÎÆ«Ém~«ËÍ]O¯|⽠ź`¿ÐL2<âH‰ìëÔçÛ5½_è:Ω¡j1ê=ôöWIÒH›„t#Øñ^÷ðóö·‘RËÆvÆ: ëd%ûè9UÏÐWV4…M*hÿÅÎ8/…n¦߇o´¿Ï寑ïôV~‡¬izÝ’Þé7ö÷ÖíÒHd >‡ÐûЯQ4õGÅÊ2ƒq’³ (¢™!EPEPEPEPEPEPEPEPEPEPEPEPEŒ@'´W+¯üBð^…¹u/ØG"õ‰$ódðÉý+ÏõÿÚÛ“HÓ/õ'ñ gñ9oüv°©Š£Oâ’=<.MÅÿ“k½¬¾÷¡íUÄðÛÂÓO*E ³»÷&¾VñÇßj“LK-&#ÐÇ™ ÿ>Gþ:+Î5Ïkšì¾n±«^ß6ró3úÀü+‚¦oJ?¿à}61•u¯5÷¿òüO­Îã§Ñ:÷ÍGÓ4K°Òl ³¶O»K´}O©÷5¡E{t0´è+AœfyÎ/2Ÿ5yiÙh—ËúaEWAå…Q@Q@Q@Q@Q@Q@Q@Q@dx¯ÃÚO‰ôyt­bÕ.-¤Ç̇³)ìG­kÑJQRVeÓ©*rSƒ³[3ãŠß uŸÜ=ÔJ÷ú37îî‘yÑd¿CúWŸWèÄ1\BÐÏI‚¬Œ2ÄWˆüKø c¨<š„eO¸?3YÉŸ%Ïû'ø>œ¥xX¼­¯z—Ü~—‘ñ¬&•~ùº?^Þ§Ï:µ«èw‚ïGÔnlgÅ …sìGB=zç„?hMvÅRéÐꑎ ð‘¿R>éü…yG‰|=­xrüØëztöS‚EùXz«}+.¼ÚuëPv‹kÈúìVY€Í ¥R IìÖÿz>Èð·Åïká5…°¸oùc|<’ûÇå?®î ¢ž%– HØeY ­~~Vž‡âwC—ÌÑõ{Ûœ‘Ì ýGCø×¥K8’Ò¤~ãäqœNZáªÛÊZþ+ü½h¯’ô/^:Óö­ëØêˆ:ý¢ ­ªmýA®ëFý£ôÇu ÝÀ{µ¬Ë(úá¶ÿ:î†g‡žîÞ§Ìâx;5¡´—“ý™ïTW›é?>_€X’ÉÏðÜÛºþ ýk©Ó¼eá=D±x“IœŸá[´Ýùg"ºá^œþ'óޤbÉ zùXøãñÿp‡PµÓÔÿ ­²ÿ7ÜZã5Ÿx—YÈÕuíJñOðKpÅ?ïœãô®Yæô—›=¬?cgüZ‘ÞßéùŸfkž8ðŽ‰¸j~"Ó uëžOûårߥpzïíàÛ Ë¦Ûê:¤ƒî²EåFÁÿÇkåz+ЦoV_ H÷𼂧­iÊ_‚ÿ?Äö_~ÐÞ)¼,šF›a¦Fz3fiâp¿øíyψ¼kâ¿–þ×ׯ®QºÄe+ýð¸_Ò°(®˜ªÕ>)3ép™.­I>ö»ûÞ¡Ekhñ¿ MG¼½ÉÆèâ%GÕºÄשxOö|ñîɼA¨[éqLQþö_§(üͰÕjü78ÀàWïê$ûnþå©âõÒøGÀž*ñS¯ö><°“ÍădCþx?†kê/ | ðG‡vHš`Ô.Wþ[Þ~ðçÔ/Ý€®ú4HÐ"(U½J9CzÔqñ™‡Å^8Jwó—ù/ó<#ÁŸ³Í„.%¢¾ñìç¦Ë¹ô-zâØõÝF$_¦FýkÏõß~<Ó‰k[[]J>ÆÞpäøþµçÔÀb!¼oé©õX^(Êñ;UIùéùèy…µ«xOÄúI#QÐ5+`?‰íÛoçŒV)pA¹eEÙ£Û§ZUxI5å©=¥íí™Í¥åŹïåÈWùVÕ§Ž|ghG‘â½i@à)½‘‡äN+ž¢œjJ;2ja¨ÕøàŸªGmkñgâ%·ú¿]7ýtŽ9?ô%5~ßãgÄxÍ®G7ûö‘EçTV‹Y}·÷œrɲùoB?ø ÿ#ÓÇÇoˆC­í‘ÿ·E§_Gü¼içþÝGø×–ÑUõÊÿÎÌ_åþ\Gî=A¾<|A'‹»ô´Zcüuø†Ã‹û5úZ%y•}r¿ó±¬ƒ,_òâ?qèRüiø“!8ñAè¶pÿT¬ûŸŠntž)¾þ™íAÿŽ\m/Yï'÷›G'ËãðЇþ¿ÈÞ»ñ§Œ.· k2+uS{&?,â².¯/.ˆ7WSÎGO2BßΠ¢²s”·g\0ÔiüKÑ ¢ŠšÒÎîíöZZÏ;zGcúRI³W(Å]»Ñ]N™ðëÇ:‰e𾥃ÞX¼¡ù¾+­Ò>xæók]ÿgéèzù³îaø(?ζ†´ö‹<êùÎüJÑ_5úSE}£~ΫµµM'÷’ÖŸøóü«·Ðþ |?Ó³éO þ+¹YÁÿ€Œ/é]pÊëË}ÆÙe/¹ú/ó±ò¼ÜÊ"·†I¤=±?€®ËÃß |y­áíô íâ?òÒïɹý+ì+EÒ4¨¼­3L³²OH!T ­ì§“Å|r¹óØ®>­-0ô’ónÿ•œ¼;û9]9YIÔí‰?Áp?ï h¢°–Œ·Š= 9ÞaKHV—ÞÌkÏÙÏÃå³kâ N5ô‘Ïèa\þÏöÂB°ø¢eçø¬ƒìâŠ+ à0ÿÊzø^%ÍõŸÜ¿ÈÉÕ¾}7ÂOæÛ†?ö¥`ËðËË$mçôëÿÙÑEpÕÂQOEùŸIƒÏ1Õ!yTüù Ã4ãûsöëÿÙÖö™ð<^ŒÿÂNcÿ· ÿíJ(§K FOUù†3<ÇSãSð_äkZþÏÖ¦@³x¢fÿvÌ/ós[–Ÿ³ž€7>!Ôä‘ƉüÁ¢Ší†ü§Íb¸›4OJÏî_äjÚþÏÞ„:mVãýéÀþJ+nÇàÇû\¡yÄuó®$|þâŠ+e„¡ ¾ãË©žæU/Í^_{_‘¿aàOØíû'†4˜Êôo²©oÌŒšÝ·µ··@AJ£"åEº„c²<éâ*Õ¼“~®äôQEQ˜QEQEQEQEQEQEQEQEQEQEQEQEQEÿÙifhp-3.5.20/DOCS/README.tex.configuration0100644000175100017510000000307107462016272020046 0ustar papowellpapowell1. Install the FreeBSD DocBook support 2. Increase the limits for tex so that it has enough memory. See the installjadtex.pdf file #> kpsewhich --expand-var '$TEXMFMAIN' /usr/local/share/texmf #> cd /usr/local/share/texmf #> ls ChangeLog dvips makeindex pdfetex updates.dat aliases etex metafont pdftex web2c bibtex fontname metapost source xdvi context fonts mft tex doc ls-R omega texconfig #> web2c amiga-pl.tcx mktex.opt cp1250cs.tcx mktexdir ... #> find . -name '*.cnf' ./web2c/texmf.cnf ./web2c/fmtutil.cnf ./web2c/mktex.cnf #> cd web2c #> cp texmf.cnf texmf.cnf.orig check to see if texmf.cnf has the following as the first lines % original texmf.cnf -- runtime path configuration file for kpathsea. % (If you change or delete `original' on the previous line, the % distribution won't install its version over yours.) % Public domain. remove or change original Look for hugelatex settings: % hugelatex settings % added by hugelatex package main_memory.hugelatex = 1100000 param_size.hugelatex = 1500 stack_size.hugelatex = 1500 hash_extra.hugelatex = 15000 string_vacancies.hugelatex = 45000 pool_free.hugelatex = 47500 nest_size.hugelatex = 500 save_size.hugelatex = 5000 pool_size.hugelatex = 500000 max_strings.hugelatex = 55000 font_mem_size.hugelatex= 400000 Set the tex defaults to these values (remove the .hugelatex suffix) #> texconfig init ifhp-3.5.20/DOCS/IFHP-Reference.html0100644000175100017510000130066110130541240017017 0ustar papowellpapowell IFHP Reference Manual
ifhp-3.5.20/DOCS/Makefile.in0100644000175100017510000000521410130541267015560 0ustar papowellpapowell########################################################################### # IFHP - An Extended Print Spooler System # # Copyright 1988-1997 Patrick Powell, San Diego, California # papowell@sdsu.edu # See LICENSE for conditions of use. # ########################################################################### # $Id: Makefile.in,v 1.23 2004/09/24 20:18:15 papowell Exp papowell $ ########################################################################## # FAQ Makefile # SRC = @srcdir@ VPATH=${SRC} prefix = @prefix@ MAN = $(prefix)/man SHELL = @SHELL@ DSSSL=docbook-1.54 DSSSL=modular SRC=@srcdir@ CATALOGS= \ -c /usr/local/share/sgml/catalog \ -c /usr/local/share/sgml/docbook/dsssl/${DSSSL}/catalog DOC=IFHP-Reference all: $(DOC).html $(DOC).pdf purge .PHONY: all clean install ci install.zman update purge $(DOC).html: $(DOC).sgml $(DOC).dsl Makefile jade -i output.html -V nochunks -t sgml \ $(CATALOGS) \ -d $(DOC).dsl \ $(DOC).sgml >$(DOC).html -tidy -i -m -f /dev/null ${TIDYFLAGS} $@ @PERL@ ${SRC}/updateheader $@ index.html HTML.manifest: $(DOC).sgml $(DOC).dsl Makefile jade \ -i output.html -V html-manifest \ $(CATALOGS) \ -d $(DOC).dsl \ -t sgml \ $(DOC).sgml -tidy -i -m -f /dev/null ${TIDYFLAGS} `xargs < HTML.manifest` @PERL@ ${SRC}/updateheader index.html check: #nsgmls -s -f handbook.errs handbook.sgml nsgmls -s $(CATALOGS) $(DOC).sgml $(DOC).tex: $(DOC).sgml $(DOC).dsl Makefile jade -Vtex-backend -ioutput.print -t tex -o $(DOC).tex \ $(CATALOGS) \ -d $(DOC).dsl \ $(DOC).sgml TEX=tex $(DOC).dvi: $(DOC).tex echo "==> TeX pass 1/3" ${TEX} "&jadetex" $(DOC).tex >/dev/null 2>&1 echo "==> TeX pass 2/3" ${TEX} "&jadetex" $(DOC).tex >/dev/null 2>&1 echo "==> TeX pass 3/3" ${TEX} "&jadetex" $(DOC).tex $(DOC).ps: $(DOC).dvi dvips -q -t letter -o $(DOC).ps $(DOC).dvi $(DOC).pdf: $(DOC).ps ps2pdf -dPDFSETTINGS=/default \ -dEmbedAllFonts=true \ -dAntiAliasColorImages=true \ -dAntiAliasGrayImages=true \ -dAntiAliasMonoImages=true \ -dCompatibilityLevel=1.2 \ $(DOC).ps $(DOC).pdf clean: rm -f *.errs *.htm HTML.manifest *.tex \ *.log *.dvi *.ps *.aux *.toc purge: rm -f *.aux *.log *.toc correct: correct -d dict *.sgml update: @PERL@ ${SRC}/updateversion *.sgml @PERL@ ${SRC}/updatesgmlmirrors ../MIRRORS *.sgml @PERL@ ${SRC}/supported ../ifhp.conf.in *.sgml ${MAKE} all # # install: realclean: rm $(DOC).html mostlyclean distclean:: clean rm -f Makefile CI= #CO=-kv CO=-l cifast ci: checkin() { \ rcs -l $$1; \ ci $(CI) -mUpdate -t-Initial $$1; \ yes |co -l $(CO) $$1; \ }; \ for i in *.sgml Makefile.in Makefile; do \ checkin $$i; \ done; ifhp-3.5.20/DOCS/IFHP-Reference.sgml0100644000175100017510000071711010130541267017026 0ustar papowellpapowell ]> IFHP Reference Manual 5 Oct 2004 (For ifhp-3.5.20) Patrick A Powell
papowell@astart.com AStArt Technologies addr 6741 Convoy Court, San Diego, CA 92111 Phone 858-874-6543 Fax 858-751-2435
2002 Patrick Powell $Id: IFHP-Reference.sgml,v 1.14 2004/10/05 15:50:15 papowell Exp papowell $ THIS DOCUMENTATION AND THE DESCRIBED SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The &IFHP; program is an enhanced, extended, highly configurable, and portable implementation of a print filter for use with the &LPRng; Print spooler package. &IFHP; supports network, serial, and parallel printers, does page accounting and job recovery, and allows an extremely high level of configuration and tuning. &IFHP; gets its flexibility by using a configuration file to set its operational characteristics. The configuration file can contain multiple separate printer configurations and the configuration selection is done by a very simple command line option. The filter supports text, PostScript, PCL, and PJL printers, and can be configured to handle a wide range of printer quirks and mis-implementations.
Preface Introduction The &IFHP; Print Filter is the primary print filter for the &LPRng; Print Spooler. This document is designed to be the single basic reference for the &IFHP; software; the &LPRng; software is distributed separately and has additional documentation. Acknowledgements I would like to thank all of the &LPRng; users who so relentlessly tried the incredible number of permutations and combinations of printers and software, and whose requests for just one more feature led to the development of the software. Shell Prompts The following table shows the default system prompt and superuser prompt. The examples will use this prompt to indicate which user you should be running the example as. User Prompt Normal user % root # Typographic Conventions The following table describes the typographic conventions used in this book. Meaning Examples The name of commands, files, and directories. On screen computer output. Edit your .login file.Use ls -a to list all files.You have mail. What you type, when contrasted with on-screen computer output. % su Password: Manual page references. Use su 1 to change user names. User and group names Only root can do this. Emphasis You must do this. Command line variables; replace with the real name or variable. To delete a file, type rm filename Environment variables $HOME is your home directory. Notes, warnings, and examples Within the text appear notes, warnings, and examples. Notes are represented like this, and contain information that you should take note of, as it may affect what you do. Warnings are represented like this, and contain information warning you about possible damage if you do not follow the instructions. This damage may be physical, to your hardware or to you, or it may be non-physical, such as the inadvertant deletion of important files. Examples are represented like this, and typically contain examples you should walk through, or show you what the results of a particular action should be. Introduction The &IFHP; print filter is the latest in a long evolutionary path of print filters for the &LPRng; print spooler system. It unifies the low level printer communication facilities and provide a common code base for future development. This document is the complete set of references and installation guide for the &IFHP; print filter. It covers compilation, installation, initial testing, details of system configuration, and configuration options that would be needed by the system administrator. Previous releases of &IFHP; had a large selection of README files which are now incorporated into the IFHP Reference Manual. Information about &LPRng; and &IFHP; can be found on the &LPRng; web page http://www.lprng.com. There is mailing list for &IFHP; and &LPRng; at lprng@lprng.com. In order to reduce the amount of unsolicited spam mail posted to the list you must subscribe to the list before posting to it. To subscribe, send email message to lprng-request@lprng.com, with the single word subscribe in the body. Several presentations of &LPRng; and print spooling software have been made at the Large Scale Installation Administrator (LISA) conferences and are in the &IFHP; distribution and available on web sites. The slides for the LISA 97 tutorial on Printers and Network Print Spooling are the LISA97.ppt in the &LPRng; distribution. During development of &IFHP;, the following documents were invaluable references. For Printer Job Language (PJL) related issues see the Printer Job Language Technical Reference Manual, Hewlett Packard, 10th Edition, October 1997. For PCL related issues see the PCL 5 Printer Language Technical Reference Manual, First Edition, 1992. These manuals are available through the Hewlett Packard Developers Program. See http://www.hp.com/go/devexchange for information on how to join. Copyright and Disclaimer Material included in this document from the &IFHP; distribution Copyright Patrick Powell 1988-1999, where applicable. The rights to distribute this document complete or in part are hereby granted for non-commercial purposes. Partial reproductions must acknowledge the source. Permission to distribute this file together with &LPRng;, &IFHP; and `derived works' is explicitly granted. THE MATERIAL IN THIS DOCUMENT IS PROVIDED WITHOUT FEE AND AS-IS WITH NO WARRANTY REGARDING FITNESS OF USE FOR ANY PURPOSE. THE AUTHOR AND ALL CONTRIBUTORS ARE NOT LIABLE FOR ANY DAMAGES, DIRECT OR INDIRECT, RESULTING FROM THE USE OF INFORMATION PROVIDED IN THIS DOCUMENT. Commercial Support AStArt Technologies (http://www.astart.com) provides commercial support and enhancements for &LPRng;, &IFHP;, and other network software. AStArt provides network and system consulting services for UNIX and NT systems, as well as real time and network software. Web Site Web Page: http://www.lprng.com FTP Sites Main FTP Site: ftp://ftp.lprng.com/pub/LPRng (US) Mirrors: ftp://ftp.u-aizu.ac.jp/pub/net/lpr/LPRng (JA) ftp://ftp.cs.columbia.edu/pub/archives/pkg/LPRng (US) ftp://ftp.cise.ufl.edu/pub/mirrors/LPRng (US) ftp://ftp.cs.umn.edu/pub/LPRng (US) ftp://uiarchive.uiuc.edu/pub/ftp/ftp.lprng.com/pub/LPRng (US) ftp://ftp.sage-au.org.au/pub/printing/spooler/lprng/ (AU) ftp://mirror.aarnet.edu.au/pub/LPRng/ (AU/NZ) http://mirror.aarnet.edu.au/pub/LPRng/ (AU/NZ) ftp://sunsite.ualberta.ca/pub/Mirror/LPRng (CA) ftp://ftp.informatik.uni-hamburg.de/pub/os/unix/utils/LPRng (DE) ftp://ftp.uni-paderborn.de/pub/unix/printer/LPRng (DE) ftp://ftp.mono.org/pub/LPRng (UK) ftp://ftp.iona.com/pub/plp/LPRng (IE) ftp://uabgate.uab.ericsson.se/pub/unix/LPRng (SE) Mailing List To join the &LPRng; mailing list, please send mail to lprng-request@lprng.ie with the only the word subscribe in the body of the message. PGP Public Key The &LPRng; and &IFHP; distributions have MD5 checksum files which are signed with a PGP public key. Here is the key for validating the checksums: Type Bits/KeyID Date User ID pub 1024/00D95C9D 1997/01/31 Patrick A. Powell <papowell@astart.com> Patrick A. Powell <papowell@sdsu.edu> -----BEGIN PGP PUBLIC KEY BLOCK----- Version: 2.6.3i mQCNAzLygTQAAAEEANBW5fPYjN3wSAnP9xWOUc3CvsMUxjip0cN2sY5qrdoJyIhn qbAspBopR+tGQfyp5T7C21yfWRRnfXmoJ3FVtgToAsJUYmzoSFY08eDx+rmSqCLe rdJjX8aG8jVXpGipEo9U4QsUK+OKzx3/y/OaK4cizoWqKvy1l4lEzDsA2VydAAUT tCdQYXRyaWNrIEEuIFBvd2VsbCA8cGFwb3dlbGxAYXN0YXJ0LmNvbT6JAJUDBRA0 XonoiUTMOwDZXJ0BAQ2cBAC7zU9Fn3sC3x0USJ+3vjhg/qA+Gjb5Fi1dJd4solc4 vJvtf0UL/1/rGipbR+A0XHpHzJUMP9ZfJzKZjaK/d0ZBNlS3i+JnypypeQiAqo9t FV0OyUCwDfWybgAORuAa2V6UJnAhvj/7TpxMmCApolaIb4yFyKunHa8aBxN+17Ro rrQlUGF0cmljayBBLiBQb3dlbGwgPHBhcG93ZWxsQHNkc3UuZWR1PokAlQMFEDLy gTSJRMw7ANlcnQEBYBYD/0zTeoiDNnI+NjaIei6+6z6oakqO70qFVx0FG3aP3kRH WlDhdtFaAuaMRh+RItHfFfcHhw5K7jiJdgKiTgGfj5Vt3OdHYkeeh/sddqgf9YnS tpj0u5NfrotPTUw39n6YTgS5/aW0PQfO9dx7jVUcGeod1TGXTe9mIhDMwDJI4J14 =3Zbp -----END PGP PUBLIC KEY BLOCK----- Software Installation and Configuration Before you do an installation please read the following instructions. You will need to: Use GNU Make. You can get it from http://www.gnu.org/software/software.html. Don't even think about trying to use another make unless you are a Wizard. And even the Wizards use GNU Make. Use an ANSI C compiler. &IFHP; is developed and tested with the GNU C compiler. You can get it from http://www.gnu.org/software/software.html. Solaris users should consult the excellent http://sunfreeware.com site for binary distributions. AIX users can use http://www.bull.de/pub/ or ftp://ftp.htwk-leipzig.de Additional Recommended Software The following software is recommended for use with &IFHP;. If your printer does not support PostScript, PCL, or text printing directly you will need to install GhostScript to convert from PostScript to the printer format and use a suitable text to PostScript converter. Unix File Utility The &IFHP; filter will recognize that a file is PostScript, PJL, or PCL by examining the first couple of bytes of a file and applying a simple set of rules. If you require more elaborate file type detection then you can configure &IFHP; to also use the UNIX file utility if it is unable to determine the file type. See ftp://ftp.astron.com/pub/file/ or ftp://ftp.lprng.com/pub/LPRng/UNIXTOOLS/file/ to obtain this software. &LPRng; Print Spooler http://www.lprng.com The &IFHP; filter works best with the later versions of this software, and the two are developed as an integrated unit. GhostScript http://www.cs.wisc.edu/~ghost/index.html or http://www.ghostscript.com If your printer does not handle PostScript and you need to print PostScript, GhostScript is used to convert PostScript to a format usable by the printer. a2ps - Ascii Text To PostScript Converter If your printer is a PostScript only printer or you wish to have enhanced formatting capability for documents, then you will need a text to PostScript converter. http://www-inf.enst.fr/~demaille/a2ps/ This package does a very good job of text to PostScript conversion. It also makes use of the file utility to determine the required conversions. enscript - GNU Enscript http://www.gnu.org/ This package is an alternative to a2ps, but requires careful handling due to the exit codes it produces. Please see Wrappers For Programs for details on how to use enscript with &IFHP;. textps This program is included with the &IFHP; distribution and is an extremely primitive text to PostScript filter. It generates PostScript compatible with even the most ancient of PostScript printers and is useful where a2ps and enscript are just too modern. See http://www.lprng.com. psutils The psutils package developed by Angus Duggan is available from ftp://ftp.dcs.ed.ac.uk/pub/ajcd/. These are a collection of programs for manipulation of PostScript files, and include facilities for doing page selection, page reversal, n-up printing, and watermarking. netcat The netcat utility is extremely useful when trying to send files to a network printer and you need to monitor its activity. Developed by hobbit@avian.org, it is available from ftp://avian.org/src/hacks/nc110.tgz. Installation The installation procedure uses the configure facility to generate Makefiles. By convention, these files have the following variables that install the &IFHP; executables and configuration files in the following locations: Configure File Location Variables Configure VariableDefault Value Expanded Default Value Override ${prefix}/usr/local--prefix=PATH${exec_prefix}${prefix}/usr/local--execprefix=PATH${bindir}${exec_prefix}/bin/usr/local/bin--bindir=PATH${sbindir}${exec_prefix}/sbin/usr/local/sbin--sbindir=PATH${libexecdir}${exec_prefix}/libexec/usr/local/libexec--libexecdir=PATH${sysconfdir}${prefix}/etc/usr/local/etc--sysconfdir=PATH${mandir}${prefix}/man/usr/local/man--mandir=PATH
The following files are installed as shown below: Executable and Configuration File Locations Configure VariableFiles${libexecdir}/filterslpf, ifhp${sysconfdir}ifhp.conf${mandir}/man[1-9]man pages
The configuration you choose should match that of the &LPRng; print spooler. For example: ./configure --prefix=/usr --sysconfdir=/etc \ --mandir=/usr/share/man executables and files in /usr/libexec/filters ifhp /etc ifhp.conf /usr/share/man/man[0-9] ifhp.man1 First, we untar, configure, compile, and install the software: h4: {1} % gunzip -c ifhp-<version>.tgz | tar xvf - h4: {2} % cd ifhp-<version> h4: {3} % ./configure [ ... configuration options ] h4: {4} % make clean all h4: {5} % su # you must do the following commands as root h4: {6} # make install Modify your printcap file to use &IFHP;. Your printcap usually has the following format; older version of :\ at the end of each line of a printcap entry. The :if and :of filter entries are usually the ones of interest. lp: :lp=xxxx:sd=xxxx:.... :if=/usr/local/path_to_old_filters/old_if_filter :of=/usr/local/path_to_old_filters/old_of_filter Your new printcap entry will look like the one below. The MODEL information is described in the next section. lp: :lp=xxxx:sd=xxxx:.... # see text for details about the next line :ifhp=model=MODEL,status@ :filter=/usr/local/libexec/filters/ifhp # only if you are using accounting or banners #:of=/usr/local/libexec/filters/ifhp Select a suitable printer from the entries in the configuration file (/usr/local/etc/lpd.conf or /etc/lpd.conf). These are described in more detail in the next section. Shut down and restart your print spooler and then send a job to the printer. If this works and you do not need any further capabilities of &IFHP; such as error reporting or printer monitoring, then you are finished. If you want to use additional capabilities, then you should read the detailed instructions in the next couple of sections.
Printer Models Supported There are over 500 different printer models, types and configurations supported by &IFHP;. If your printer is not currently supported and you have documentation about the printer then send mail to the &LPRng; Mailing List and support will be added. The default printer is an HP LaserJet 4MP, which supports PostScript Level 3, PCL5, PJL, and has bidirectional communication and a functional pagecounter. The ifhp.conf configuration file contains configuration entries for various models of printers. Each entry has a name usually corresponding to the model of printer or its basic capabilities. For example, the HP LaserJet 4 printer has the model=hp4 configuration entry. The default printer configuration covers a wide range of network printers manufactured by Hewlett-Packard, Canon, Epson, and others and is for a printer that has a bidirectional communications connection that allows it to report status information and the following capabilities: PJL support (pjl) compatible with HP 4 family of printers PostScript (PS) support (ps). PCL support (pcl). Text files printed as PCL (text, default_language=pcl). There is also support for PostScript only printers (model=ps), Tektronics Phasers (model=phaser), QMS (model=qmsXXX) and others. The best way to determine the printers currently supported is to examine the ifhp.conf file. The following is a sample of the various entries in the configuration file. <literal/ifhp.conf/ Configuration Entries defaultGeneric Printer based on HP 4M Plus, PostScript, PJL, HPGL2, PCL, status, pagecount supportappleGeneric PostScript printer, text to PS conversion, status, pagecount supportpostscriptGeneric PostScript printer, text to PS conversion, status, pagecount supportpsGeneric PostScript printer, text to PS conversion, status, pagecount supportpclGeneric PCL only printer, no statuspcl_gsHP LaserJet 4 PCL only printer, write only, no statushpiiisiHP LaserJet III (PCL and PostScript Interpreter)hp3siHP LaserJet III (PCL and PostScript Interpreter)ljet3HP LaserJet III (PCL and PostScript Interpreter)lj3HP LaserJet III (PCL and PostScript Interpreter)hpiiisi.gsHP LaserJet III (PCL, PostScript via GhostScript)hp3si.gsHP LaserJet III (PCL, PostScript via GhostScript)ljet3.gsHP LaserJet III (PCL, PostScript via GhostScript)lj3.gsHP LaserJet III (PCL, PostScript via GhostScript)hp4HP LaserJet 4 Family, HP LaserJet 4 (PostScript Interpreter)hp4mHP LaserJet 4 Family, HP LaserJet 4m (PostScript Interpreter)hp4siHP LaserJet 4 Family, HP LaserJet 4si (PostScript Interpreter)hp4simxHP LaserJet 4 Family, HP LaserJet 4simx (PostScript Interpreter)hp4plusHP LaserJet 4 Family, HP LaserJet 4plus (PostScript Interpreter)hp4mplusHP LaserJet 4 Family, HP LaserJet 4mplus (PostScript Interpreter)hp4vHP LaserJet 4 Family, HP LaserJet 4v (PostScript Interpreter)hp4mvHP LaserJet 4 Family, HP LaserJet 4mv (PostScript Interpreter)hp4pHP LaserJet 4 Family, HP LaserJet 4p (PostScript Interpreter)hp4mpHP LaserJet 4 Family, HP LaserJet 4mp (PostScript Interpreter)hp4pjHP LaserJet 4 Family, HP LaserJet 4pj (PostScript Interpreter)hpljproHP LaserJet 4 Family, HP LaserJet ljpro (PostScript Interpreter)hp4lcHP LaserJet 4 Family, HP LaserJet 4lc (PostScript Interpreter)hp4mplusHP LaserJet 4MPlushp5lHP LaserJet 5 Family, Hp LaserJet 5lhp6lHP LaserJet 6 Family, Hp LaserJet 6lhp1100HP LaserJet 6 Family, Hp LaserJet 1100hp1100HP LaserJet 1000 Family, Hp LaserJet 1100hp4lHp LaserJet 4L, PCL onlyhp4mlHP LaserJet 4mlhp5pHP LaserJet 5php5mpHP LaserJet 5mphp6pHP LaserJet 6php6mpHP LaserJet 6mphp5HP LaserJet 5hp5siHP LaserJet 5sihp5simxHP LaserJet 5simxhp5mHP LaserJet 5mhp4100HP LaserJet 4100hp4200HP LaserJet 4200hp4300HP LaserJet 4300hp5simopierHP LaserJet 5simopierhp4000HP LaserJet 4000hpcolorljHP Color LaserJet hpcolorlj5HP Color LaserJet 5hpcolorlj5mHP Color LaserJet 5mhpdj1200HP DesignJet 1200 Familyhppjxl300HP PaintJet XL 300 Familyhpdj1600HP DesignJet 1600 Familyhpdj200HP DeskJet 200hpdj220HP DeskJet 220hpdj600HP DeskJet 600hpdj650HP DeskJet 650hpdj230HP DeskJet 230hpdj250cHP DeskJet 250chpdj330HP DeskJet 330hpdj350cHP DeskJet 350chpdj430HP DeskJet 430hpdj450cHP DeskJet 450chpdj455caHP DeskJet 455cahpdj700HP DeskJet 700hpdj750cHP DeskJet 750chpdj750cplusHP DeskJet 750cplushpdj755cmHP DeskJet 755cmhpdj2000cpHP DeskJet 2000cphp2500HP DesignJet 2500 - No PCL, PostScript Onlyhp2500cmHP DesignJet 2500cm - No PCL, PostScript Onlyhp2500cHP DesignJet 2500c - No PCL, PostScript Onlyhp2500cmHP DesignJet 2500cm - PCL and PostScripthpdj2500cpHP DesignJet 2500CP, not HP2500, HP2500c, HP2500cmhp4500HP Color LaserJet Printer 4500hp8500HP Color LaserJet Printer 8500hp8550HP Color LaserJet Printer 8550hp4550nHP 4550Nhp5000HP 5000 Model C4111A (LaserJet 5000)hp8000HP LaserJet 8000 Series, HP8000hp8100HP LaserJet 8000 Series, HP8100hp8150HP LaserJet 8000 Series, HP8150hp2100HP LaserJet 2100 Serieshp2200HP LaserJet 2200 Serieshp4050HP 4050 Series Printersqms1725QMS 1725, uses appsocket, no status, PostScript onlyqms2025QMS Laser Printer QMS 2025, appsocket, no status, PostScript and PCLqms860QMS Laser Printer QMS 860, appsocket, no status, PostScript and PCLqms2060QMS Laser Printer QMS 2060, appsocket, no status, PostScript and PCLphaserTektronics Generic Phaser Color Printer, appsocket, snmp monitoring, PostScript onlyphaser360Tektronics Phaser 360 Color Printer, appsocket, snmp monitoring, PostScript onlyphaser740Tektronics Phaser 740 Color Printer, appsocket, snmp monitoring, PostScript onlyphaser750Tektronics Phaser 750 Color Printer, appsocket, snmp monitoring, PostScript onlyphaser850Tektronics Phaser 850 Color Printer, appsocket, snmp monitoring, PostScript onlyphaser740Tektronics Phaser 740 Color Printer, appsocket, snmp monitoring, PostScript and PCLphaser5400Tektronics Phaser 5400 Color Printer, appsocket, snmp monitoring, PostScript and PCLphaser7700Tektronics Phaser 7700 Color Printer, appsocket, snmp monitoring, PostScript and PCLlexmark4039Lexmark 4039, Postscript onlylexmark_optra_e312Lexmark Optra e312, Postscript, PCL and PJLln15sDigital Laser LN15, LN17ps, Compaq Laser LN 16ln16sDigital Laser LN15, LN17ps, Compaq Laser LN 16ln17pssDigital Laser LN15, LN17ps, Compaq Laser LN 16hpij2250sHP Business Inkjet 2250gs_bj10Canon BubbleJet BJ10e gs_bj10Canon BubbleJet BJ20 gs_bj200Canon BubbleJet BJ200 gs_bj200Canon BubbleJet BJC-210 B/W only gs_bj200Canon BubbleJet BJC-240 B/W only gs_bj200Canon BubbleJet BJC-250 B/W only gs_bj200Canon BubbleJet BJC-70 B/W only gs_bjc600Canon BubbleJet BJC-600 gs_bjc600Canon BubbleJet BJC-610gs_bjc600Canon BubbleJet BJC-50gs_bjc600Canon BubbleJet BJC-70 gs_bjc600Canon BubbleJet BJC-80 gs_bjc600Canon BubbleJet BJC-210 Color onlygs_bjc600Canon BubbleJet BJC-240 Color onlygs_bjc600Canon BubbleJet BJC-250 gs_bjc600Canon BubbleJet BJC-1000gs_bjc600Canon BubbleJet BJC-2000gs_bjc600Canon BubbleJet BJC-4000 gs_bjc600Canon BubbleJet BJC-4100 B/W onlygs_bjc600Canon BubbleJet BJC-4200gs_bjc600Canon BubbleJet BJC-4300gs_bjc600Canon BubbleJet BJC-4550 gs_bjc600Canon BubbleJet BJC-6000gs_bjc600Canon MultiPASS C2500 color printer/fax/copier gs_bjc800Canon BubbleJet BJC-800 gs_bjc800Canon BubbleJet BJC-7000 Color. gs_bjc800Canon BubbleJet BJC-4300 Colorgs_bjc800Canon BubbleJet BJC-4650 gs_deskjetHP DeskJet gs_deskjetHP DeskJet Plus gs_djet500HP DeskJet 500 B/Wgs_djet500HP DeskJet Portable B/Wgs_djet500HP OfficeJet 590 B/Wgs_cdj500HP DeskJet 400gs_cdj500HP DeskJet 500C gs_cdj500HP DeskJet 540C gs_cdj500HP DeskJet 690Cgs_cdj500HP DeskJet 693Cgs_cdj550HP DeskJet 550C gs_cdj550HP DeskJet 560C gs_cdj550HP DeskJet 600gs_cdj550HP DeskJet 660C gs_cdj550HP DeskJet 660C gs_cdj550HP DeskJet 682Cgs_cdj550HP DeskJet 683Cgs_cdj550HP DeskJet 693C gs_cdj550HP DeskJet 694C gs_cdj550HP DeskJet 690C gs_cdj550HP DeskJet 692C gs_cdj550HP DeskJet 693C gs_cdj550HP DeskJet 694C gs_cdj550HP DeskJet 695C gs_cdj550HP DeskJet 850 gs_cdj550HP DeskJet 870Cse gs_cdj550HP DeskJet 895Cxigs_cdj550HP DeskJet 970 gs_cdj550HP OfficeJet 590 gs_cdj550Olivetti jp450 gs_cdj550Xerox XJ6C, PCL and Postscript using GhostScriptgs_cdj850HP DeskJet 850 gs_cdj850HP DeskJet 855 gs_cdj850HP DeskJet 870Cse gs_cdj850HP DeskJet 870Cxi gs_cdj850HP DeskJet 890C gs_cdj850HP DeskJet 670C gs_cdj850HP DeskJet 680 gs_cdeskjetHP DeskJet 500Cgs_cdjmonoHP DeskJet 500C gs_cdjmonoHP DeskJet 510 gs_cdjmonoHP DeskJet 520 gs_cdjmonoHP DeskJet 540C gs_cdjmonoHP DeskJet 693C gs_epsoncFujitsu DL-1100 gs_epsoncFujitsu DL-2400 gs_hl7x0Brother HL-720 gs_hl7x0Brother HL-730 gs_laserjetBull Compuprint Pagemaster 415 gs_lips3Canon LBP4+gs_lj4dithHP DeskJet 600 gs_ljet2HP LaserJet II gs_ljet2Xerox 4030 - PCL, PostScript support using GhostScriptgs_ljet3Tandy LP800 With LaserJet III emulation. gs_ljet4Brother HL-660 gs_ljet4Brother HL-760 600dpi gs_ljet4Epson EPL5700 300dpi OKgs_ljet4HP DeskJet 600 margins wrong gs_ljet4HP DeskJet 870Cse gs_ljet4HP LaserJet 5 300dpi or 600dpi gs_ljet4HP LaserJet 5L 300dpi or 600dpigs_ljet4HP LaserJet 6L 600dpigs_ljet4HP LaserJet 1100 600dpi OK. gs_ljet4IBM Network Printer 17 gs_ljet4IBM/Lexmark 4029 Margins wrong. gs_ljet4Lexmark Optra E+ gs_ljet4Lexmark Optra SC 1275 B/W only. gs_ljet4Oki OL410ex LED printer 300dpi or 600dpi gs_ljetplusHP LaserJet Plus gs_ljetplusCanon Laser LBP-600 gs_ljetplusNEC SuperScript 860 gs_pjxl300HP PaintJet XL300 gs_pjxl300HP DeskJet 600gs_pjxl300HP DeskJet 1200C gs_pjxl300HP DeskJet 1600Cgs_r4081Ricoh 4081 laser printer gs_r4081Ricoh 6000 laser printer bjc610a0.uppCanon BubbleJet BJC-610 (color, rendered) 360x360dpi plain paper, high speedbjc610a1.uppCanon BubbleJet BJC-610 (color, rendered) 360x360dpi plain paperbjc610a2.uppCanon BubbleJet BJC-610 (color, rendered) 360x360dpi coated paperbjc610a3.uppCanon BubbleJet BJC-610 (color, rendered) 360x360dpi transparency filmbjc610a4.uppCanon BubbleJet BJC-610 (color, rendered) 360x360dpi back print filmbjc610a5.uppCanon BubbleJet BJC-610 (color, rendered) 360x360dpi fabric sheetbjc610a6.uppCanon BubbleJet BJC-610 (color, rendered) 360x360dpi glossy paperbjc610a7.uppCanon BubbleJet BJC-610 (color, rendered) 360x360dpi high gloss filmbjc610a8.uppCanon BubbleJet BJC-610 (color, rendered) 360x360dpi high resolution paperbjc610b1.uppCanon BubbleJet BJC-610 (color, rendered) 720x720dpi plain paperbjc610b2.uppCanon BubbleJet BJC-610 (color, rendered) 720x720dpi coated paperbjc610b3.uppCanon BubbleJet BJC-610 (color, rendered) 720x720dpi transparency filmbjc610b4.uppCanon BubbleJet BJC-610 (color, rendered) 720x720dpi back print filmbjc610b6.uppCanon BubbleJet BJC-610 (color, rendered) 720x720dpi glossy paperbjc610b7.uppCanon BubbleJet BJC-610 (color, rendered) 720x720dpi high-gloss paperbjc610b8.uppCanon BubbleJet BJC-610 (color, rendered) 720x720dpi high resolution papercdj550.uppHP DeskJet 550C 300x300dpi 32-bit CMYKnecp2x.uppNEC P2X 360x360dpi 8-bit (Floyd-Steinberg)stcany.uppEpson Stylus Color (Any) 360x360dpi 4-bit, PostScript halftoningstc.uppEpson Stylus (Original) and Stylus Pro Color 360x360dpi 32-bit CMYK, 15-pin stc_l.uppEpson Stylus (Original) and Stylus Pro Color 360x360dpi 4-bit, PostScript halftoning, weaved noWeavestc_h.uppEpson Stylus (Original) and Stylus Pro Color 720x720dpi 32-bit CMYK, 15-pin Weavestc2.uppEpson Stylus (Original) and Stylus Pro Color 360x360dpi 32-bit CMYK, 20-pin, Epson Stylus Color II(s)stc2_h.uppEpson Stylus (Original) and Stylus Pro Color 720x720dpi 32-bit CMYK, 20-pin, Epson Stylus Color II stc2s_h.uppEpson Stylus (Original) and Stylus Pro Color 720x720dpi 32-bit CMYK, 20-pin, Epson Stylus Color IIsstc500p.uppEpson Stylus Color 500 360x360dpi 32-bit CMYK, noWeave, plain paperstc500ph.uppEpson Stylus Color 500 720x720dpi 32-bit CMYK, noWeave, plain paperstc600pl.uppEpson Stylus Color 600, 360x360dpi, 32/90-inch weaving 32-bit CMYK, 32-pin, plain paperstc600p.uppEpson Stylus Color 600, 720x720dpi, 32/90-inch weaving 32-bit CMYK, 32-pin, plain paperstc600ih.uppEpson Stylus Color 600, 1440x720dpi, 32/90-inch weaving 32-bit CMYK, 30-pin, inkjet paperstc800pl.uppEpson Stylus Color 800, 64/180-inch weaving 360x360dpi 32-bit CMYK, 64-pin, plain paperstc800p.uppEpson Stylus Color 800, 64/180-inch weaving 720x720dpi 32-bit CMYK, 64-pin, plain paper stc800ih.uppEpson Stylus Color 800, 64/180-inch weaving 1440x720dpi 32-bit CMYK, 62-pin, inkjet paperstc1520h.uppEpson Stylus Color 800, 64/180-inch weaving 1440x720dpi 32-bit CMYK, 62-pin, inkjet paperimagerunner550Canon imageRUNNER 550/600 iR600-550-60 imagerunner600Canon imageRUNNER 550/600 iR600-550-60 hpdj800psHP DesignJet 800pspantherSharp Generic Panther Family, PS and PCL, uses SNMP for status and pagecountar-160Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecountar-161Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecountar-162Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecountar-162sSharp %, Panther Family, PS and PCL, uses SNMP for status and pagecountar-163Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecountar-164Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecountar-200Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecountar-200sSharp %, Panther Family, PS and PCL, uses SNMP for status and pagecountar-201Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecountar-205Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecountar-206Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecountar-207Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecountar-f201Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecountcougarSharp Generic Cougar Family, PS and PCL, uses SNMP for status and pagecountar-335Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-336Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-337Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-s337Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-405Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-407Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-505Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-s505Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-507Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-s507Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-250Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-280Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-281Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-285Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountar-286Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecountleopardSharp Generic Leopard Family, PS and PCL, uses SNMP for status and pagecountar-235Sharp %s, Leopard Family, PS and PCL, uses SNMP for status and pagecountar-275Sharp %s, Leopard Family, PS and PCL, uses SNMP for status and pagecountar-n275Sharp %s, Leopard Family, PS and PCL, uses SNMP for status and pagecountar-m208Sharp %s, Leopard Family, PS and PCL, uses SNMP for status and pagecounttigerSharp Generic Tiger Family, PS and PCL, uses SNMP for status and pagecountar-p350Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecountar-m350Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecountar-m350uSharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecountar-m350nSharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecountar-p450Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecountar-m450Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecountar-m450uSharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecountar-m450nSharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecounttoshiba650Sharp Generic Toshiba650 Family, PS and PCL, uses SNMP for status and pagecountar-650Sharp %, Toshiba650 Family, PS and PCL, uses SNMP for status and pagecountar-800Sharp %, Toshiba650 Family, PS and PCL, uses SNMP for status and pagecountfiery651Sharp Generic Fiery651 Family, PS and PCL, uses SNMP for status and pagecountar-651Sharp %, Fiery651 Family, PS and PCL, uses SNMP for status and pagecountar-810Sharp %, Fiery651 Family, PS and PCL, uses SNMP for status and pagecount
If your printer is not in this this list then you can use the following guidelines. If you have a PostScript only printer you should use the ps model. If you have a PCL only printer, then pcl is recommended. If you want to process PostScript files on your PCL only printer then install GhostScript and use pcl_ps entry and select the GhostScript driver suitable for your printer. The other model entries are used when specific printer functionality or features are needed. For example, if you want to do accounting or use landscape mode, then you should check for your specific printer model in the configuration file.
Recommended -Z options for Users Due to the general nature of the &IFHP; filter, there is no standard set of user options because there is no standard set of user facilities. However, the following are recommended for use by implementors of new configurations or printer support. Input Tray Selection If a printer supports an input tray selection mechanism, then the following options are recommended for use. Local conditions or printer type may require addition options. inupper, inlower, intray1, intray2, ..., manual, envelope The input tray selection options should start with the in prefix and correspond to the various trays, if possible. The manual and envelope options are included to select manual feed or envelope feed. There is a possible source of conflict here as there may be an envelope feeder as well as an envelope media. This is a printer specific dependency. source=name The key=value form allows users to use options such as -Zsource=inbin1, which may be useful for systems that have an unusual or nonstandard input selection mechanism. Output Bin Selection If a printer has an output bin selection mechanism or some other finishing mechanism, then the following are recommended for use. outupper, outlower, outbin1, ... The output bin selection should start with the out prefix. outbin=name The outbin=name form allow users to use options such as -Zoutbin=stapler, which may be useful for systems that have an unusual or nonstandard output selection mechanism. Media Size (Paper) Selection The paper size selection facilities usually are quite printer dependent, and the input tray selection and paper size selection mechanisms may interact in strange and mysterious ways. letter, legal, ledger, oversize, a0, a1, ... These are standard paper size names. 11x17, tabloid These are usually aliases for ledger, but depending on local conditions can select different types of paper. paper=name The paper=name form allow users to use options such as -Zpaper=b3, which may be useful for systems that have an unusual or nonstandard input media selection mechanism. Media Type Selection Media Type is not the same as paper size, and corresponds to the name assigned to a particular media. Of course, the issue is complicated by the fact that some media have standard sizes as well. Again, the input tray selection, media size, and media type selection will interact in confusing and mysterious ways, depending on the whim of the printer firmware implementors. You will also notice that there is no general mediatype=name selection mechanism. This is due to the extremely different way that the media names must be passed for PostScript, PJL, and PCL. plain, preprinted, letterhead, transparency, glossy, prepunched, labels These are commonly used media type names gleaned from various PostScript Printer Description Files, Microsoft printer drivers, and arcane lore of the Printer Working Group. Note that these are not accepted terms in the paper industry for any of these type of media. You are warned. Duplex and Simplex Duplex printing is when impressions are placed on both sides of a sheet of media. Due to a general lack of conventions, the orientation of each of the impressions varies from vendor to vendor, and has changed over the years. duplex, lduplex Print on both sides using the default orientation. The lduplex is an alias for duplex duplexshort, sduplex Print on both sides but reverse the orientation of one page. The sduplex is an alias for duplexshort Which page is reversed is at the whim of the firmware implementors and conventions for the printer. simplex Print on a single side of a page tumble, shortedge This is use to print a single page on one side of the media, but using the (nonstandard) orientation for the duplexshort. This is usually done when a single impression must be generated on the alternative side of the media, rather than the default side. Again, this is dependent on the whims and whimsies of the printer firmware implementors, and may have some unexpected side effects. Copies This option has been provided to effectively allow the printer to make multiple copies of a single page or job. This option tends to be misimplemented on almost all known printers, and it is strongly recommended that users do not use it. However, for completeness, compatibility, and implementor consideration, this is included, even against the better judgement of the implementors of the &IFHP; software. copies=nnn Attempt to make nnn copies of each impression. This usually fails with catastrophic problems unless you have a system that supports all of the various options required, has enough memory to handle rasterization, you do not have a paper outage, and the printer does not stop with operator intervention. You have been warned. Printer Capabilities, Configurations, and Printcaps One of the major difficulties with printer software is dealing with the wide range of different printer hardware configurations and printer connections. This section outlines the printer communication methods, the types of print job languages, and the effects of these on printing software and the &IFHP; filter. Printer Configurations A printer consists of a hardware print engine which marks the output page and delivers it, a set of control hardware that takes a print job in a well defined format and operates the hardware to produce output according to information in the print job, and a communication channel from the computer to the control hardware. The control hardware is sometimes called a print engine. In most modern computers the control hardware may consist of multiple microprocessors, each with their own firmware, and each performing a specific printing task. For example, one may control the paper feed path, one may do rasterization, and one may handle communications with the outside world. In order to set up printing correctly, it is necessary to know the following information about your printer. The capabilities of the hardware. This is dependent on the model of printer, and may be such things as the page feed, output and input tray selection, numbers of columns and/or rows of output available on the output device. This information is readily available from most manufacturers. The print job language recognized by the control hardware. This is the special set of codes, commands, and formats recognized by the control hardware. The protocol used to send jobs to the printer and obtain status about the printing activity. Usually the capabilities of a modern printer are very well known and documented, and the &IFHP; filter and most print spooling software has little difficulty working with them. The following checklist will help you in setting up your printer. The various options that you will need to know about are indicated where appropriate. Printer Model (model=???) What is the exact printer model? Check the serial number or other identification to get this information. You should check the ifhp.conf configuration file to see if your printer is already supported. Print Languages Supported By Your Printer PJL? (pjl or pjl@) The Printer Job Language (PJL) is a high level language supported by many Hewlett-Packard printers that allows some print system configuration to be performed. Due to historical developments, not all printers support all PJL language facilities, and some support them in different ways than other printers. The &IFHP; filter can use the PJL support for a printer if it is available. PostScript (and what version)? (ps or ps@) PostScript is the most common print job language in use. If your printer supports PostScript, then you will have a relatively trouble free time with it. One problem is that it requires a fairly substantial amount of memory and computational support, and is usually not found on the low end (less than $500) printers. PCL? (pcl or pcl@) PCL is another Print Language supported by many vendors, including Hewlett-Packard, Lexmark, and others. It is essentially text with escape sequences to tell the print engine to place markings on a page at specific places in a specific font. It is the second most common format used with modern printers. Text? (text or text@) Text is really just PCL without any control sequences. However, it is easy to have &IFHP; convert ordinary text into PCL by prefixing the appropriate PCL control codes. You may also need to use the crlf option to force CR to CR-LF translation. If you have a simple text printer then you may want to use the much easier to configure lpf filter from the &LPRng; distribution (http://www.lprng.com). Vendor Specific There is a growing trend to have very proprietary Print Languages for very low end (less than $300) printers. These printers usually require all of their jobs to be preformated by software running on the host and to have the job delivered to them in a specific manner. If you have one of these printers, you will need to get a rasterizing program that produces the correct format. Check to see if GhostScript, supports your printer. If it does then you can use GhostScript to translate PostScript to your printer's required format. Memory Size. If you are going to be sending large print jobs or ones with a large amount of graphics to the printer, you will need a substantial amount of memory to deal with rasterization. Most high resolution Laser Copier based printers require a minimum of 16 megabytes for adequate performance, and if you are printing complex PostScript or PDF documents you may want at least 32 megabytes. Color printers require substantially more and 64 megabytes is not uncommon. Communications. The connection between your printer and the host computer. Network Connection This is the most reliable and high speed way to connect a printer to a system. This is especially true if a printer must be accessible to multiple users and is located at a distance from the user. Parallel Port (status@) The parallel port is a unidirectional communications channel and does not do full duplex bidirectional communications. Some operating system support bidirectional communications, but they do so by requiring write operations to alternate with read operations. Serial Ports This is the very worst way to communicate at high speed with a printer. Serial ports usually have a high error rate, suffer from data overruns, and have a severe impact on system performance. You will need to configure your printer speed, format (bits per character, parity, stop bit), and flow control method, and then do the same for the host. This can be an endless source of frustration for the novice user. Print Server Box Many older printers do not directly support a network connection and have an external print server box attached to either their serial or parallel ports. If you have the printer connected to a parallel port, then you will still most likely only have unidirectional communication and no status information will be available from the printer. Network Communication Protocols The most high speed and reliable connection to your printer is using a network connection. The following protocols are usually used to communicate with a network printer: RFC1179 (TCP/IP printing), Socket Protocol (TCP/IP), AppSocket Protocol (TCP/IP), Novell Print Protocol (IPX), SMB Print Protocol (TCP/IP), and AppleTalk Print Protocol (TCP/IP). It is highly recommended that you use TCP/IP networking to communications to talk to your printer, and that you do not enable any other protocol on your printer. If you have two different systems trying to connect to the same printer using different protocols, a wide range of vendor's hardware will lock up and may require a power up reset to recover. Documented evidence for this behavior includes a wide range of printers, including those from Hewlett-Packard, LexMark, IBM and other vendors. Only the TCP/IP based network job transfer protocols are discussed in this document. For details on using other protocols, please consult the consult the &LPRng; documentation. RFC1179 (BSD or TCP/IP) Job Transfer Printcap Entry RFC1179 is used to transfer print jobs between a client (user) and a print spooler, or between two print spoolers. Jobs are transferred as a set of files, and the only information exchanged during the transfer process is the success or failure of the transfer. In order to get status about the actual job printing, a separate query status (lpq) is sent to the print spooler. Many, if not all, printers with a network interface that supports the TCP/IP protocol support the RFC1179 protocol for job transfer. However, their support for print job status is usually minimal to non-existent. If you want to send a job to a printer using the RFC1179 protocol, please be aware of the following problems. Normally a print spooler (System 5 lp, BSD lpd, &LPRng;) does not modify a print job when forwarding it to another print spooler. This means that your print job will normally pass from the originating lp or lpr program to the destination printer with no changes. This can have disastrous results if the job requires filter processing. If you are using the &LPRng; print spooler, job transfers using RFC1179 is specified by using :lp=spoolqueue@host or :rp=spoolqueue:rm=host printcap entries. For example: raw: :lp=raw@host :sh:sf:mx=0 :sd=/var/spool/lp cooked: :rp=cooked:rm=host :sh:sf:mx=0 :sd=/var/spool/lp :filter=/usr/local/libexec/filters/ifhp The Jobs sent to the STDIN set to the job's data file file and the STDOUT set to the temporary file. The filter STDERR will be recorded in an error log. When a job is created a job format may specified (default is f), and an filter can be specified to process job files with this format. The :i<format> option specifies the filter program for use. For example, you can specify a different filter for the try(1) program. In the example, it specifies that the output of the filter for the cooked: :rp=cooked:rm=host :sh:sf:mx=0 :sd=/var/spool/lp # default filter :filter=/usr/local/libexec/filters/ifhp # n filter :nf=/usr/local/libexec/filters/nfilter :translate_format=nf There is a final option that is used when rather than having a set of job files forwarded to a printer, a single job file is desireable. This is usually the case when sending a job to a host or printer that has a defective RFC1179 spooler implementation, and drops or misprints jobs with multiple files in them. The cooked: :rp=cooked:rm=host :sh:sf:mx=0 :sd=/var/spool/lp # default filter :filter=/usr/local/libexec/filters/ifhp :lpd_bounce # output has l (literal) or binary output :bq_format=l The lpr -l or lpr -b flag is used to specify the special literal or l format usually have only the most perfunctory processing done by the filter. Socket Protocol (TCP/IP) Operation Printcap Entry Many printers with a network interface provide a TCP/IP port that is a direct connection to the internal print engine. If a TCP/IP connection is made to this port and a file is sent over this connection, then the print engine will process the file. More importantly, the connection is bidirectional, and the printer will report errors and status conditions over the connection. PJL and PostScript status request commands can be sent to the printer and the printer will respond with information. The &IFHP; filter makes extensive use of this protocol, and provides support for status and error reporting. In cooperation with the &LPRng; print spooler, it will provide a detailed description of the actual print job progress and any error conditions that arise. To use a Socket connection with &LPRng;, you use the :lp=host%port printcap entry shown below. The port on host and passes the (bidirectional) connection to the &IFHP; filter on file descriptor 1 (STDOUT) and the file to be printed on file descriptor 0 (STDIN). Errors and status information are reported by the &IFHP; filter on file descriptor 2 (STDOUT) and placed in the error status log by the The connection made by the persistent over the entire job; all file transfers for the same job are made over the same connection. This is important as it prevents other printer users from hijacking the printer in the middle of print a job and getting your job outputs mixed together. The following is a typical printcap entry using the socket protocol. raw: :lp=host%9100 :sh:sf:mx=0 :sd=/var/spool/lp :filter=/usr/local/libexec/filters/ifhp Appsocket Protocol (TCP/IP) Operation The Tektronics Phaser Series printers and QMS printers use the Appsocket protocol when sending a job to the printer. This protocol uses two ports: a TCP/IP listening port which accepts TCP/IP connections and a UDP SNMP query port that is used to obtain status information. The Appsocket protocol is (briefly): The Simple Network Management Protocol (SNMP) is a UDP protocol. A SNMP Query packet containing a request for information is sent to the printers SNMP Agent port (port 161), and a reply containing the requested information is returned. To send a job to the printer, a TCP/IP connection is opened to the TCP/IP port and job data is sent. Only a single job can be sent at a time - a EOJ in the job, i.e.- CTRL-D for PostScript or ESC E for PCL will cause the printer to terminate reading from the TCP/IP port, and after job processing has finished, to close the TCP/IP connection. All input after the EOJ may be ignored by the printer and not processed. While processing the job, if bidirectional support is available and has been enabled the printer will return job status or information until all of the print job which is has received has been processed. This support is usually not enabled by default and must be enabled by using a specialized administration interface or configuration tool. Unfortunately, some printers will also close the connection when the EOJ has been received. These printers are virtually useless when trying to get error or status information about a job. Even more annoying is the behavior of some printers that insist on the network connection remaining open until the job has been processed. The device sending the job to the printer must do a shutdown on the sending direction of the network connection, and then read status information from the receiving direction until the printer terminates the connection. Unfortunately, some printers do not terminate the connection, and the the user must close the connection after a suitable timeout. There are also printers that insist on the network connection being closed before they will start processing small jobs. The device sending the job to the printer must do a close rather than a shutdown. While processing the job, the printer will ignore any connection requests, and only until the job has been processed will the printer accept connections. During job processing, status and error indications can be obtained by sending a query to the UDP port. However, the error conditions and other information are not very precise as the status may change dramatically during job processing. a query to the UDP port. However, the error conditions and other information are not very precise as the status may change dramatically during job processing. The Appsocket protocol does not use a persistent connection. If two people are sending jobs to the printer simultaneously it is very likely that the jobs will get intermixed. The appsocket option causes the &IFHP; filter to open and close a TCP/IP connection to the printer. In order to reopen the device, &IFHP; needs the device name. It gets this from the The close_appsocket option causes the &IFHP; filter to close the connection after sending a job or part of a job. This is necessary with printers that will not start printing small jobs until a sufficient number of pages has been received. The following is a sample printcap entry for this printer: # Phaser Setup # Appsocket lp:server :lp=10.0.0.1%9100 :sd=spooldir :... :ifhp=model=ps,appsocket #path to ifhp filter :filter=/.../ifhp For your convenience, the model=phaser entry is suitable for use with the appsocket protocol. Using SNMP For Status Information path to snmp_printer_status snmp_printer_status configuration file The &IFHP; filter can be configured to use the SNMP helper program The Since different printers may not support all of the standard Printer MIB Oids, the The PRINTERNAME=HP LaserJet 2200 DEVICEID=HP LaserJet STATUS=Ready DEVICESTATUS=running PRINTERSTATUS=idle PAGECOUNT=30 Consult the When using snmp_end_status=ready idle snmp_sync_status=ready power_save_mode When using SNMP to obtain status, it may be of little benefit to use other methods to obtain sync, pagecount, or end of job (waitend). Also, if a connection is open to the printer then the printer may never indicate [ printer ] snmp_monitor appsocket sync=snmp waitend=snmp pagecount=snmp This will cause the &IFHP; to perform the operations but not to send any query strings to the printer. Common Print Server Boxes Configuration Information The following is a list of print server manufacturers, models, and with hints on how to access these boxes with various protocols. Network Print Servers ManufacturerModelRFC1179 Port Name (rp=XXX)Send to TCP portDigital Products Inc.NETPrint Print Servern is port on server- Unknown if supported -Electronics For Imaging Inc.Fiery RIP i seriesnormalq or urgentq- Unknown if supported -Fiery RIP XJ seriesxjprint- Unknown if supported -Fiery RIP XJ+ and SI seriesprint_Model, e.g. print_DocuColor- Unknown if supported -Fiery models ZX2100, ZX3300, X2, X2eprint- Unknown if supported -Emulex Corp.NETJet/NETQue print serverPASSTHRU- Unknown if supported -Extended Systems Inc.ExtendNet Print ServerPrintern, where n is port on server- Unknown if supported -Hewlett-PackardJetDirect interface cardraw9100JetDirect Print Server Port1=raw1, Port2=raw2, ... Port1=9100, Port2=9101, ... I-DataEasycom 10 Printserverpar1 (parallel port 1)- Unknown if supported -Easycom 100 PrintserverLPDPRT1- Unknown if supported -IBMNetwork Printer 12, 17, 24, and 24PSPASS- Unknown if supported -LantronixEPS1, EPS2EPS_XXXX_S1 (serial) port 1, EPS_XXXX_P1 (parallel) port 2, etc.3001 (port 1), 3002 (port 2), etc.QMSVarious ModelsRAW35 (Appsocket)Tektronix (Now Xerox)Tektronix printer network cardsPS (PostScript), PCL (PCL), or AUTO(Auto-selection between PS, PCL, or HPGL). Not reliable.9100 (Appsocket on some models)Rose ElectronicsMicroserve Print Serverslp9100XeroxModels 4505, 4510, 4517, 4520PASSTHRU2501 (Appsocket on some models)Model 4512PORT110001 (programmable)Model N17RAW9100Models N24 and N32RAW2000Models 4900, 4915, 4925, C55PS2000Document Centre DC220/230lp- Unknown if supported -
All company, brand, and product names are properties of their respective owners.
Timeout Problems Sending A Job The &IFHP; filter may need to run a program such as ghostscript to do format conversion. For large files this can take quite a bit of time and most network printers have a connection timeout. If no data is received for this time the printer will close the connection. By default this timeout is fairly short: 30 or 90 seconds on most printers. If you are sending large jobs to the printer using the socket protocol and are getting timeout problems due to conversion timeouts, then there are two solutions: a) use the Appsocket protocol, which will open and close the connection for each file, and only send data when the converted file is available, or b) do your conversions first and then spool the converted job to be sent directly to the printer. The second method requires an &LPRng; bounce queue. # Method a) Appsocket lp:server :lp=10.0.0.1%9100 :sd=spooldir :... :ifhp=model=printer,appsocket #path to ifhp filter :filter=/.../ifhp # Method b) Bounce Queue # this queue does the conversion if required lp:server :lpd_bounce :lp=real@localhost :sd=spooldir :... :ifhp=model=printer #path to ifhp filter :filter=/.../ifhp # this queue does transmission real:server :lp=10.0.0.1%9100 :sd=spooldir :ifhp=model=printer #path to ifhp filter :filter=/.../ifhp For method a), the Appsocket protocol is used and the &IFHP; filter will be invoked before sending a job. For method b), you use two queues: a bounce queue that does the format conversion and then sends the job to the real queue, and the real queue that actually talks to the printer. Printers With Lockup Problems Due to firmware problems in some PostScript and PCL printers, they will occasionally lock up and refuse to accept new connections or continue with job processing. This is extremely difficult to diagnose, as the printer appears to be functional but will simply not accept any addition data or respond to a command. Unfortunately, this is also the condition when these printers are turned offline. The PS, PCL, PJL Printer with TPC/IP Network Interface The most common TCP/IP protocols used for transferring jobs to network printers are RFC 1179, a direct TCP/IP socket, connection to the print engine, and the very odd Appsocket protocol described in previous sections. Here is a reprise of the various printcaps and methods to use them. # printer setup # force clients (lpr, lpq, to use server) lp:lp=lp@serverhost # server information lp:server :sd=spooldir :... # No filtering, transfer using RFC1179, use: :lp=queue@10.1.1.1 # or :rp=queue:rm=10.1.1.1 # Filtering and then transfer using RFC1179, use: :lpd_bounce:lp=queue@10.1.1.1 # or :lpd_bounce:rp=queue:rm=10.1.1.1 :ifhp=model=name :filter=/.../ifhp # Filter, transfer using socket, use: :lp=10.1.1.1%9100 :ifhp=model=name :filter=/.../ifhp # Filter, transfer using Appsocket, use: :lp=10.1.1.1%9100 :ifhp=model=name,appsocket :filter=/.../ifhp If your printer is a parallel port printer connected to an external Network Print Spooler such as an HP JetDirect box, then while the network connection to the Network Print Spooler is bidirectional the connection from the Network Print Spooler to the printer may be unidirectional and no status information will be returned from the Network Print Spooler. In this case you must add the status@ option to tell &IFHP; not to expect status: # Filter, transfer using socket :lp=10.1.1.1%9100 :ifhp=model=name,status@ :filter=/.../ifhp PS, PCL, PJL Printer with Parallel Port Connection If your printer is connected to a :rw (open connection read-write) option to open the printer device in read write mode. # printer setup # force clients (lpr, lpq, to use server) lp:lp=lp@serverhost # server information lp:server # do now open read write :rw@ :sd=spooldir :... # parallel port :lp=/dev/lpt #path to ifhp filter :filter=/.../ifhp If, on the other hand, your operating system reports that the parallel port is bidirectional and is able to read the printer model information, then you can try opening the parallel port read-write and seeing if the &IFHP; filter can read status information: # printer setup # force clients (lpr, lpq, to use server) lp:lp=lp@serverhost # server information lp:server # open read write :rw :sd=spooldir :... # parallel port :lp=/dev/lpt #path to ifhp filter :filter=/.../ifhp PS, PCL, PJL Printer with Serial Port It is strongly advised that serial ports not be used for high speed data transfers. The main problem is trying to configure them in such as way that they do not lose characters due to data overruns or parity errors. LPRng is strongly deprecating support for serial port printers. The &LPRng; print spooler will open and set the serial line characteristics, and pass the open connection to the &IFHP; filter. The tty connection must pass all 8 bits with no parity, and should use hardware flow control if at all possible. Unfortunately, the various stty options needed to do this vary from system to system. Also, you may discover that your serial connection does not support hardware flow control. If this is the case, then you will have to use software flow control which is rather unreliable for high speed (over 9600) serial lines due to the timing latencies involved. # printer setup # force clients (lpr, lpq, to use server) lp:lp=lp@serverhost # server information lp:server :sd=spooldir :... # serial port :lp=/dev/ttyxxx :stty=38400 -echo -crmod -raw -oddp -evenp \ ixon pass8 -ixany cbreak crtscts #path to ifhp filter :filter=/.../ifhp PostScript Only Printer The model=ps entry supports PostScript only printers. # printer setup # force clients (lpr, lpq, to use server) lp:lp=lp@serverhost # server information lp:server :sd=spooldir :... :ifhp=model=ps #path to ifhp filter :filter=/.../ifhp If you have a :ifhp=model=ps,status@ Many PostScript printers recognize the PostScript EOJ marker (Control-D or \004) as an end of PostScript job indication and will perform page eject and other suitable actions. Unfortunately, strictly according to PostScript documentation this character is only allowed in the Serial Port Data Stream, and there are some printers that treat it as an error. In addition, the Control-T character is recognized as a printer status solicitation, and some printers do not return status or recognize it as an error. If your printer does not handle PostScript EOJ (Control-D) at all, set ps_eoj@ to suppress generation of extra Control-D characters by &IFHP;. If your printer requires a Control-D at the end of the job but fails when they occur at the start of the job, set ps_eoj_at_start@. If the printer requires a Control-D at the start but not at the end, set ps_eoj_at_start@. PCL based printers are not nearly as fussy. However, you may discover that some of them do not correctly handle a PCL EOJ at the start of a job in spite of all examples and documention. Use the pcl_eoj_at_start@ to suppress adding a PCL EOJ (Esc E) command string to the start of a PCL job file. :ifhp=model=ps,ps_eoj@ See the section on File Conversion Support for ways to print text and other files on a PostScript printer. GhostScript Generating a raster image from a PostScript or PCL file in a timely manner requires a high speed processor and substantial amounts of memory. Many of the low cost printers require the user's system to do the raster conversion and the raster file is then transferred to the printer. The file format is usually a subset of PCL. The GhostScript program can process PostScript files and produce raster output for a wide range of devices. The ghostscript pcl_gs printer configurations is used with these printers. See GhostScript Printer for details. Tektronics Phaser, QMS, and Appsocket Protocol The Tektronics Phaser, QMS Network Printers, and a few others use the Appsocket protocol described in a previous section. The Tektronics (model=phaser) configuration entry has the required options for these printers: [ phaser qms ] appsocket ps pjl@ pcl The following shows a typical printcap entry: # force clients (lpr, lpq, to use server) lp:lp=lp@serverhost # server information lp:server :sd=spooldir :lp=10.1.1.1%35 :... :ifhp=model=phaser #path to ifhp filter :filter=/.../ifhp
Options and Arguments The &IFHP; filter is designed to work with the &LPRng; print spooler and expects to be passed the standard set of filter options. These have the form: /.../ifhp [-c] [-X option]* accountingfile Example: /.../ifhp -n root -H hostname -P printer -s statusfile acct # - X is any letter except T All of the option letters except T are reserved by the &LPRng; program to pass information to the filter. For details about the options, please consult the &LPRng; documentation. Command Line Options The most important options that &LPRng; passes and that &IFHP; uses are: -s statusfile The file where &IFHP; status information is placed. -Z useroptions The lpr -Z options passed by the user, and are discussed in the options section. -T options These are usually options specified in the printcap entry and are discussed in the options section. accountingfile The file where accounting information is written. Examples: ifhp "-Tmodel=ps,status@" "-Za4,landscape" Since commas are used to separate options, whitespace is used to separate multiple values for a particular option. You will need to quote this on a command line. For example: ifhp "-Tfont=elite greek1 dingbat" The &IFHP; program first checks to see if the PRINTCAP environment variable is defined. By convention, &LPRng; will place the printer printcap entry in this variable when it starts the &IFHP; filter. The printcap :ifhp=options value is extracted and used as the default options. After getting the options from the printcap, the command line options are appended to the list of options. The single letter command line options are also made available to the &IFHP; programs as shown below: PRINTCAP=lp:ifhp=model=this,status@:... ifhp -n root -h localhost -Tmodel=that,debug=1 Concatenated -T options: model=this,status@,n=root,h=localhost,model=that,debug=1 Resulting -T options: status@,n=root,h=localhost,model=that,debug=1 The option list is scanned from left to right, and later option values override earlier ones. The option values have priority over values that are obtained from the configuration file and cannot be overridden. There are several options that have important effects on the operation of the &IFHP; filter. General Configuration Options - config, trace, debug These options are used to control the global operation of the &IFHP; filter, and are only available from the command line options. config=pathname The config option specifies the location of the ifhp.conf file. This overrides the default location. The pathname can be a file name, list of filenames separated by spaces, or a filter. For example: ifhp '-Tconfig=/usr/local/etc/ifhp.conf' ifhp '-Tconfig=|/usr/local/bin/getconfig' The second example uses the getconfig program to obtain configuration information. The configuration information is read from the program's STDOUT. There program is invoked with no command line options and is passed the environment variables that were provided to &IFHP;. model=MODEL The model option selects the portion of the &IFHP; configuration that will set values of configuration parameters. This is discussed in detail in the next section. trace As &IFHP; processes the print job, it produces tracing and error message information. By default this is written to the status file specified by the command line option. The trace option will cause this information to be written to STDERR (file descriptor 2). This is usually used in debugging. debug=n This option sets the debugging level to n, where n is an integer number. Level 0 turns debugging off, level 1 produces a small amount of verbosity and increasing levels produce more verbose information. Status Messages statusfile=pathname or -s pathname The status file pathname is set by the command line , or if it is not present then the statusfile=pathname configuration option. The file must exist and will not be created. statusfile_max=n If the status file is larger than statusfile_max K bytes (default 8K), then it is truncated to statusfile_min=min K bytes. statusfile_min=n The minimum size in Kbytes of the status file after truncation (default 1K). Printer Status Available - status The status option indicates that there is a bidirectional connection to the printer, and that status can be obtained from the connection. During initialization the &IFHP; filter will test the printer connection and determine if it supports reading. If it does not then &IFHP; will set status@. Monitoring Options - sync, waitend, pagecount The sync, waitend, and pagecount options are ignored if no status is available from the printer. The sync option specifies the method to use to determine if the printer is ready and operational. The waitend option specifies the method used to determine when a print job is finished. The pagecount option specifies the method used to obtain pagecount or status information. sync@, waitend@, pagecount@ This form of the tag indicates that the particular facility is disabled. sync=pjl PJL is used to determine if the printer is ready. This can be done by sending a PJL JOB or PJL ECHO command to the printer and waiting for return status. sync=ps A small PostScript job which causes a status report to be returned is sent to the printer. waitend=pjl, waitend=ps This is similar to the sync operation, but is done at the end of a job in order to determine if the printer is busy. pagecount=pjl Many PJL capable printers support reporting total page usage by means of PJL. This option causes a PJL command to be sent requesting the total page usage by the printer. pagecount=ps A small PostScript job which causes a status report to be returned is sent to the printer. User -Z Option Support The &IFHP; filter provides a simple way for users to request a particular printer facility or option. The lpr -Zkey=value command causes the -Z options on the &IFHP; command line. The &IFHP; filter implements these options by first determining if they are allowed, and then using them to select a set of strings that are sent to the printer. Since some options are implement by sending PJL strings to the printer, some by PostScript, and some by PCL commands, the method of specifying and generating them is a bit involved. The following facility is used to control the names and types of user options. pjl_user_opts=[ ... ] This tag specifies the list of user options that are implemented by sending PJL strings to the printer. This is available only if the printer is PJL capable. pcl_user_opts=[ ... ] This tag specifies the list of user options that are implemented by sending PCL strings to the printer. This is available only if the printer is PCL capable. ps_user_opts=[ ... ] This tag specifies the list of user options that are implemented by sending PostScript strings to the printer. This is available only if the printer is PostScript capable. For each option, the actual string or set of strings is specified as follows. pjl_key= ... The value of the PJL user option key. This value can be one or more lines; the lines are checked for correct PJL format and sent to the printer before any language specific information. ps_key= ... The value of the PostScript user option key. This value can be one or more lines; leading and trailing whitespace is removed and the lines are placed before the first lines of a PostScript job file. pcl_key= ... The value of the PCL user option key. This value can be one or more lines; whitespace and new lines are removed and the characters are placed before the first characters of a PCL job file. The following user options are predefined in the default ifhp.conf file and are recommended for use. a3, a4, a5 Use a3, a4, or a5 paper copies=N Print N copies of a page or job duplex Use duplex printing, tumble on. Pages will come out so that the margins are at opposite ends of a page. duplexshort Use duplex printing, tumble off. Pages will come out so that the margins are at the same ends of a page. envelope Select envelope media inlower Select media from lower input bin. inupper Select media from upper input bin. landscape Use Landscape orientation lduplex Alias for duplex ledger Select ledger size (11x15 inches) media legal Select legal size (8.5x15 inches) media letter Select letter size (8.5x11 inches) media manual Select media from manual feed mediaselect=N Select media number N outlower Put output in lower tray or bin outupper Put output in upper tray or bin oversize Select oversize media portrait Use Portrait orientation sduplex Alias for duplexshort. Print on a single side of the media. simplex Print on the single side of the media. transparency Select transparency media Adding User Options The following shows how to add a PJL option to an ifhp.conf file. By convention, the configuration is added to the end of the ifhp.conf file. [ newprinter ] pjl_user_opts += [ screen ] pjl_screen = PJL SCREEN = ON ps_user_opts += [ fuzzy ] ps_fuzzy = <</Fuzzy (\%s{fuzzy})>> setpagedevice In the first example we define the screen option. The lpr -Zscreen option will cause the PJL command PJL SCREEN = ON to be put into the output to the printer. Similarly, lpr -Zfuzzy=5 will cause the PostScript command <</Fuzzy (\%s{fuzzy})>> setpagedevice to be processed and the resulting <</Fuzzy (5)>> setpagedevice command to be sent to the printer. Initialization and Setup Control Several options are used during the processing steps discussed in Filter Operation Details to control what setup is done for the printer. pjl_init = [ ... ] If PJL is enabled on this printer, options in this list are expanded and the resulting values are sent to the printer. After this, the -Z options are expanded and any options which are listed in the pjl_user_opts are processed. ps_init = [ ... ] If PostScript is enabled on this printer and a PostScript file is being processed, then the options in this list are expanded and the resulting values are sent to the printer. After this, the -Z options are expanded and any options which are listed in the ps_user_opts are processed. pcl_init = [ ... ] If PCL is enabled on this printer and a PCL file is being processed, then the options in this list are expanded and the resulting values are sent to the printer. After this, the -Z options are expanded and any options which are listed in the pcl_user_opts are processed. These initialization options are very useful in order to set up information controlling the default format or options for a print job. For example: pcl_init = [ normalpage ] pcl_normalpage=[ letter crlf linewrap portrait clearmargins fixed pitch=10 courier ] When processing a PCL job, normalpage is expanded by searching first for normalpage and then for pcl_normalpage; this in turn results in the expansion of the list of values. For example, pcl_crlf is usually defined as pcl_crlf=\033&k2G, which is the PCL command to translate a New Line (\015) character as a Carriage Return/New Line. The other entries have similar definitions that produce the desired effects. Configuration File This section will cover the ifhp.conf file and the various options and configuration methods used to control the operation of the &IFHP; filter. Configuration File Entries The &IFHP; filter uses a simple text based configuration file, usually /usr/local/etc/ifhp.conf or /etc/ifhp.conf to get a set of configuration values which control its operation. The following sample configuration file segment shows how information is specified. # comment line - first non-blank character is a # #---- DEFAULTS ---- # we first have the default section # - a flag option whose value is 1 on_flag # - a flag option whose value is 0 off_flag@ # - a flag option whose value is a string (single line) # its value will be 'this is a string' strval = this is a string # - a flag option whose value is multiple lines # each additional line starts with whitespace # value is 'this\nis1\na\nstring' longstrval = this is\061 a string # - and a list that gets expanded - # '[ this ] [ is a\nlist ]' -> [ this is a list ] longlist = [ this ] [ is a list ] # we can extend a string. # strval will now be 'this is a string added' strval += added # and we can expand a list # '[ this ] [ is a\nlist ] [ more ]' -> [ this is a list more ] longlist += [ more ] # a printer specific section # ---- PRINTER ---- [ hp hp4* ] # this match model=hp, model=hp4, model=hp4x # override the default onflag@ include /usr/local/etc/ifhp.conf.local [ entry1 ] value [ entry2 ] tc=entry1 Comments Comments are lines whose first non-whitespace character is #. Use \# if the first non-whitespace character must be #. Option Setting Syntax Equivalent To option option=1 option@ option=0 option=val option=[ v1 v2 ... ] value contains all whitespace option=[ v1 up to the next option entry v2 blank lines and comments v3 are not included ] option=v1 v2 v3 If an option's default value is the empty string (''). The &IFHP; program uses the Perl language convention that this value is equivalent to 0 when used in a numerical context or the empty string when used in a string context. In general when a string is used in an integer context it is converted to a the appropriate numerical type using the standard Perl/C numerical representation and conversion methods. The flag syntax sets the value of flag to the string '1', that is, the string with a 1 value, and flag@ sets it to '0'. The option = value syntax sets the option value to a string. The string can extend across multiple lines. A line starting with a space has its value appended to the previous option with a new line (\n) separator. As shown in the example, the += operator is used to append to a string value. The [ option option ...] syntax is used to specify that the value is a list. Lists are used to specify a list of options which can be flags or string values. Lists have the property of recursive evaluation which means that the individual list items will be further processed during printing. This is discussed later in detail. The include facility is currently deprecated, and may not be implemented in future releases. It will cause the specified file to be read and processed at that point in the configuration file. Option Use Options and their values are used to control printer operation. There are two types of options: those with a predefined or builtin meaning to the &IFHP; filter and those which have their values sent to the printer when appropriate. The builtin options are listed and their use is explained in later sections. List Expansion The &IFHP; filter configures a printer by sending the values of options to the printer or performing built-in operations. An option can have a flag, string, or list value. A LIST value has the form [ v1 v2 ... ]. When a list value is to be sent to the printer each of v1, v2, etc. is expanded in turn and the corresponding string value or builtin action is carried out. If the string value of a term is itself a list, the list will be expanded in turn. Recursive list evaluation will result in an error. The following is an example of list expansion: t1=[ p1 p2 ] p1=this is p2=[ p3 p4 ] p3=a p4=test The option t1 is expanded by expanding p1 and then p2; The expansion of p1 produces "this is", and p2 produces [p3 p4]. This list is then expanded to produce "a" and "test". Some LIST options are used in printer language specific contexts and their values are processed appropriately. For example, pjl_init=[...] specifies a set of initialization operations for PJL printers, and pcl_init=[...] is used to specify the initialization needed for PCL printing. The expansion of the LIST entries is done in the language specific context. For PJL this requires that the output be well formed PJL commands, and for PCL that all whitespace be removed. The context dependent expansion is required because sometimes it is necessary to do operations both using PJL and PCL or PJL and PS combinations to ensure correct printer operation. During expansion the language name and an underscore is prefixed to the list entry name and this is used as the option name during expansion. If the prefixed name is not found then the unprefixed name will be used. For example, suppose that we have: pjl_init=[ initstr test ] pcl_init=[ initstr ] pjl_initstr=@PJL ECHO YES pcl_initstr=\033(*0V test=DONE When PJL initialization is being done and we want string values for the pjl_init LIST, we expand initstr and test in the pjl_ context. First a defined pjl_initstr value will be looked for and then a defined initstr value. Since there is a value of pjl_initstr it will be used. Similarly we will check for pjl_test and test values. Since pjl_test does not have a defined value the test value DONE will be used. When PCL initialization is being done and we want string values for the pcl_init LIST, then we expand initstr in a similar way, resulting in \033(*0V. We can use the list entry [ option=value ] to temporarily specify the value of a variable which is then used during language specific expansion. For example, suppose that we have the following set of definitions: pjl_init=[ initstr=testing ] pjl_initstr=@PJL INIT=\%s%lcub;initstr%rcub;XQ As discussed in the next section, the \%s%lcub;initstr%rcub; will cause the value for the initstr value to be substituted into the pjl_initstr string. How this is done is discussed in the section on String Escape Sequences. String Escape Sequences String values have a syntax similar to PERL or C. The \ (escape) character indicates the start of an escape sequence string. This has the syntax: Standard Character Replacement \f, \r, \n, and \t are replaced in turn by the ASCII characters FF, CR, NL, and HT whose values are 014, 015, 012, and 011 respectively. Octal Character Replacement \nnn, where nnn is 3 octal digits, is replaced by the corresponding character with the specified value. Option Value Replacement \%format{option} OR \%format[option] The value of the option will be determined and replaced by a formatted string. The option value is determined by the following algorithm. When expanding a list value, the option=word will push the option=word combination onto an evaluation stack, and then the option value is expanded in the current language context. When starting a search for {option} in a language context lang_, the stack of list values is searched in oldest to newest order for a match for lang_option and then for option. The first one found is used as the option value. After searching the evaluation stack for {option} and finding no match, the command line option values are searched for a matching entry. If none is found, then the command line option values and next the printer configuration will then be searched for lang_option and then for option. If no match is found, then the empty string will be the result if a string is wanted, or the value 0 if a number is wanted. If the result of this lookup is a list, then the list will be expanded in turn, and the concatenating values of the expansion will be used. When starting a search for [option] the command line options will be searched first and next the printer configuration will be searched for lang_option and then for option. If no match is found, then the empty string will be the result if a string is wanted, or the value 0 if a number is wanted. ***help*** If the result of this lookup is a list If no match was found, then the search rules for {option} will be used, and the list expansion will be done as described above. If no match was found a null (empty string) value will be used. Option Value Format %[-][0][length[.precision]][format] %d{1} => '1' %s{1} => '1' %3d{1} => ' 1' %3s{1} => ' 1' %03d{1} => '0001' %-3s{1} => '1 ' %4.2f{1} => '1.00' Special Case Conversion: %s{ThisWord} => 'ThisWord' %U{ThisWord} => 'THISWORD' %M{ThisWord} => 'Thisword' %L{ThisWord} => 'thisword' The format specifies how the value is to appear, and is similar to the printf format usage. Depending on the format type, a value will be converted and used appropriately. The empty string or null value ('') will be treated as a '0' value when used in an numeric context. The default format is %d, ie, \%{val} would be \%d{val}. The numerical formats supported are: %d, %o, %x, %X, %e, %f, and %g; The %s format use the string value of the result. The Language Context and Value Expansion The &IFHP; filter sends initialization and configuration commands to the printer. Depending on the type of language of a print file (i.e. - PostScript or PCL), different command formats would need to be used to implement different options. For example, to implement a landscape option for a PJL aware printer you would need to send the PJL command @PJL SET ORIENTATION=LANDSCAPE. For a PostScript printer you would need to send a very strange string which would depend on the actual printer mode. Our language context also includes various checks for language specific dependencies. This section refers to material that is discussed in depth in later sections of this document, and on first reading may be a little confusing. However, if you are not aware of some of these restrictions then much of the information in the configuration files may be very confusing. PJL Language A PJL command has the form @PJL OPCODE ..., and PJL commands must be sent as a block before any other commands. In order to assist with this, the &IFHP; filter provides the following assistance. When expanding a list value, each list entry is expected to form a well formatted PJL command. Before sending any PJL command to the printer, the PJL Universal Exit Command (\033%-12345X) string is sent to the printer. This is automatically done if pjl is enabled for the printer. The list item is expanded, and all value substitutions are done. Leading and trailing whitespace is removed, all characters are converted to uppercase, and a new line (\n) value is appended to the command. Because not all printers support all PJL commands, the &IFHP; filter performs uses the pjl_only and pjl_except configuration lists to ensure that the options are allowed by the printer. The OPCODE must appear in the pjl_only list and not in the pjl_except list. For example: pjl_only = [ JOB SET STATUS ] pjl_except = [ STATUS ] The pjl_only indicates that the printer supports the PJL JOB, SET, and STATUS commands, but the pjl_except list removes the STATUS from this list. This means that only the JOB and SET commands will be allowed. If the command is a SET command, then the PJL variable must appear in the pjl_vars_set list and not in the pjl_vars_except list. pjl_vars_set = [ PAPER SIZE ORIENTATION ] pjl_vars_except = [ PAPER ] @PJL SET SIZE=A4 @PJL SET PAPER=LETTER In the above example, the SIZE=A4 command would be allowed and sent while the PAPER=LETTER command would be rejected and not sent. PCL Language When sending PCL initialization strings to a printer, it is essential to send nothing that could cause a printable character to be sent before the actual file contents. Such output could cause the location and positioning of text to be altered in unexpected ways. To avoid this, the following steps are taken when expanding a list in a PCL language context. Before any PCL string is sent to the printer, the PCL End of Job (\033E) string is sent to the printer. All whitespace (blanks, tabs, etc) are removed from the string value. Next, all escaped values are substituted. At this point you can force printable strings containing whitespace into the output by using the \nnn escape mechanism. All list values are concatenated and then sent to the printer. PostScript Language The PostScript language processing is very minimal, as there are few problems sending PostScript to a printer. Before sending any PostScript initialization strings, the PostScript End of Job indicator (\004 or Control-D) is sent. Strings are then expanded and the escape sequences are substituted. Individual strings have a newline (\n) appended to them before being sent to the printer. Printer Entries The ifhp.conf file is divided into printer entries by [ pattern pattern ...] lines. Each pattern is glob matched against the model option value, and if the match is successful then the options on the following lines until the next printer entry header are appended to the specific printer configuration entry. By convention, each configuration file is assumed to start with the header [ default ], and the initial set of lines are used to set default values for the various &IFHP; options. The algorithm for scanning the configuration files first sets the model value to default, and extracts the default information. It then sets the model value to the user specified value, and rescans the configuration file information. If users need to add or modify the ifhp.conf file, then they should add their entries to the end of the file, and override any default options by specific values in their new entry. To aid with system configuration and maintenance, the distributed ifhp.conf file has the following text at the end of the file: ##### This is the end of the standard ifhp.conf file. ##### Add your local files after this ##### If you want to override some entries, simply change the names to ##### something different, i.e. hp4 hp4.old ##### Here is a script to do this and then append your local file to the ##### end of the ifhp.conf file: ##### ##### #!/bin/sh ##### for i in $* ; do ##### perl -spi.bak -e 's/ $i / $i.orig /g' ifhp.conf ##### done ##### ##### sed -n -e '1,/XXX END XXX/p' ifhp.conf >ifhp.conf.new ##### sed '1,/XXX END XXX/d' ifhp.old >> ifhp.conf.new ##### ##### You can probably improve on this. ##### #### XXX END XXX ##### # user adds new default values here for all printer entries [ default ] # set default value pcl_option= \033test [ mypcl_printer ] # override default value pcl_option= Include Facility The include filename facility is similar to the standard compiler file inclusion facility. The specified file or list of files separated by commas or whitespace will be substituted for the indicated line. tc Entry Inclusion Facility The tc=entry facilty is similar to the printcap tc facility used in the &LPRng; software other places. The specified entry or list of entries separated by commas or whitespace will be substituted for the indicated line. Filter Operation Details The &IFHP; filter operates by first reading a configuration file to determine the type of printer it is working with, and then proceeds to carry out operations requested by the values of option variables passed on the command line or found in the configuration files. In normal operation, input is read from STDIN (file descriptor 0) and results written to STDOUT (file descriptor 1). Status reports are written to a status file or optionally to STDERR (file descriptor 2), together with any error messages or diagnostics. In addition to normal operation the filter can run in the OF mode and act as a printer initializer and job terminator. This is discussed in detail in the &LPRng; documentation. When in the OF mode the two character sequence "\031\001" to the filter. will cause the filter to suspend itself by sending itself a SIGSUSP signal. The print spooler will detect this and then send job files to the same output device. After the files have been transferred the the filter will be restarted with a SIGCONT signal. Filter Pseudo-Code The details of the filter operations are described in the following pseudo-code. The sections marked with ### are discussed later in this document in detail. /// See: Options, Initialization and Setup ###+++ Initialization and Setup // get ifhp information from PRINTCAP_ENTRY environment variable if( PRINTCAP_ENTRY environment variable has a value ){ split printcap information into printcap fields if( :ifhp=options,options is present in printcap ){ split the options list and place in the Toptions list } } Add the -T command line options to the Toptions list Add the -Z command line options to the Zoptions list foreach option in -Toptions do if( option = "debug=level" ){ set Debuglevel = level; } if( option = "trace" ){ output error and trace on STDERR } if( option = "config=pathlist" ){ set configuration pathlist = pathlist; } if( option = "model=name" and model not set ){ set model = name; } } Read the configuration files from the config file list Prepend each file with a [ default ] header Scan the configuration files for [ default ] entries; later entry values will override earlier ones. Repeat the scan, but this time search for [ model ] entries matching the specified model. Put the command line options and -T options into configuration information, effectively overriding the information from the configuration files. if( appsocket ) { Get the :lp=... entry from the PRINTCAP_ENTRY environment variable if( no information ) { use the getpeername() to get the TCP/IP address of the current connection. } if( no informtion AND no dev=... parameter ) { error! } close connection to printer and set -Tdev= device or IP Address } // open a connection to the printer if required // usually only done when appsocket protocol is used if( device specified using -Tdev=device ){ close(1) // if device is host%port, we open TCP/IP connection fd = open(device); // Note - status opens RW // status@ opens WO dup fd to 1; close fd; } ###--- /// See: Synchronization and Pagecount ###+++ Synchronization and Pagecount if( status returned by printer and sync requested ){ do{ send command and wait for timeout; } while( no response ); if( appsocket ){ close and reopen TCP/IP connection; } } if( status and pagecount requested ){ // pagecount has the form pagecount@ (none), // pagecount=ps, pagecount=pjl, ... if( pagecount=language has value ) do { if( pagecount TRUE ){ set pagecount= pjl or ps depending on availability } if( pagecount = pjl and PJL INFO available ){ send PJL INFO PAGECOUNT command to printer } else if( pagecount = ps ){ send PS program to printer } else { terminate with error; } } while( no pagecount response ); if( appsocket ){ close and reopen TCP/IP connection; } } ###--- /// See: PJL Initialization ### PJL INITIALIZATION if( PJL enabled ){ language = "pjl_" foreach option in pjl_init=[...] { expand the option using the language value #+++ PJL OPTION ACTIONS +++ if( option in pjl_vars_set=[ ... ] and option not in pjl_vars_except expand "@PJL SET OPTION=\%{option}" output = expanded string value } else { if( option value is a string ){ output = expanded string value; } } // output has the form @PJL COMMAND .... if( COMMAND is in pjl_only=[ ... ] and not in pjl_except=[ ... ] ){ send output to printer } #--- end PJL OPTION ACTIONS } if( !OF_mode ){ foreach option in -Toption=value { if( option in pjl_user_opts ){ #+++ USER PJL OPTIONS // join 'pjl_' and the option name expand 'pjl_' . option // perform PJL actions as above #+++ PJL OPTION ACTIONS +++ .... #-- PJL OPTION ACTIONS +++ #--- USER PJL OPTIONS } } foreach option in -Zoption=value { if( option in pjl_user_opts ){ // perform USER PJL actions as above #+++ USER PJL OPTIONS #--- USER PJL OPTIONS } } } } ###--- PJL INITIALIZATION /// See: File Conversion Support // language is set to the type of job language // - PS, PCL, TEXT, RAW, UNKNOWN // the first part of the job file is read and the filter takes // a (wimpy) guess at the job file based only on the first couple // of characters; language is be PJL, PS, or TEXT, or RAW // This is the same algorithm as the UNIX FILE utility language = default_language (from configuration); if( command line -c (binary) option present ){ language = RAW; } else if( -Zlanguage=xxx option present ){ language=xxx } else if( forceconversion set ){ use UNIX file utility to get file type } else if( file is PS file ){ language=PS if( file starts with PS EOJ (CTRL-D) and ps_eoj_at_start is clear ){ remove the PS EOJ } else { send a PS EOJ first } } else if( file is PCL file ){ language=PCL if( file starts with PCL EOJ (ESC E) and pcl_eoj_at_start is clear ){ remove the PCL EOJ } } if( file conversion table specified then ){ look up file type in conversion table; if( conversion program specified ){ run input through conversion program } set file type to output type } if( language = TEXT and PCL allowed ){ language = PCL; } if( language not recognized by printer ){ exit with error; } if( PJL ENTER supported ){ use PJL ENTER command to select language; send nullpad NULLS to force full buffer condition } /// See: Language Specific Initialization // LANGUAGE SPECIFIC INITIALIZATIONS if( language = PCL ){ foreach option in pcl_init { ###+++ expansion do expansion similar to PJL OPTION actions using "pcl_" prefix for option lookup; ###--- } if( not in OF_MODE ){ foreach option in -Toption do { if( option in pcl_user_vars=[ ... ] ){ ###+++ expansion as above ###--- } foreach option in -Zoption do { if( option in pcl_user_opts=[ ... ] ){ ###+++ expansion as above ###--- } } remove whitespace and expand string results; } else if( language = PS ){ ###+++ language specific actions as above, using the ps_ prefix for lookup allow only user option in the ps_user_opts list expand string results but do not remove whitespace } /// See: File Transfer and Error Status Monitoring Transfer job to printer, reading error and other information back from the printer if enabled if( language = PCL ){ send PCL End of Job } else if( language = PS ){ send PS End of Job } // job termination ###+++ Synchronization and Pagecount as above finished = 0 while( waitend and not finished ){ // timeouts and retries are done here if( time taken is too long ){ give up and report an error } if( waitend with PJL ){ wait for end of job using UINFO; } else if( waitend with PS ){ send PostScript echo program to printer if end_ctrl_t then add ^T } wait for response if( response has end of job indication ) { finished = 1; } } if( pagecount ){ if( appsocket ){ close and reopen connection; } get pagecount using previously described algorithm } ###--- exit Options, Initialization and Setup During the setup step, the &IFHP; system will extract command line options and scan configuration files for printer entries. These operations are covered in detail in other sections. Languages Supported- pjl, pcl, ps, and text These flags set the languages that are recognized or processed by the filter. pjl_job FLAG If PJL is enabled and the @PJL JOB NAME = "..." [ START = nnn ] [ END = mmm ] The START and END values can be specified by -Zstartpage=nnn and -Zendpage=mmm command line options. The EOJ command has must match the JOB command. @PJL EOJ NAME = "..." [ START = nnn ] [ END = nnn ] pjl_enter FLAG If PJL is enabled and the @PJL ENTER LANGUAGE = PCL @PJL ENTER LANGUAGE = POSTSCRIPT remove_pjl_at_start FLAG Some printer drivers will prepend PJL code to the begining of print jobs. If the nullpad STRING Some older model HP printers require receiving a large number of NULL (0) characters to force commands in the input buffer to be read. This can be done using the nullpad option. In practice, this has turned out to be largely irrelevant as most newer printers and network interface printers do not have this problem. pjl_console FLAG When this flag is set and PJL is available and the PJL RDYMSG command is supported, then a short message will be put on the console. remove_ctrl STRING The remove_ctrl string option species a list of (control) characters that will be removed from PostScript jobs. This solves the problem of jobs with embedded Control-T or Control-C characters causing abnormal printer operation. For example: remove_ctrl=CT would cause Control-C and Control-T characters to be removed. tbcp FLAG The tbcp flag can be specified as a user option as well as a configuration file option. If the file type is PostScript and this flag is set then the file is transferred using the Transparent Binary Communication Protocol. (See the Adobe PostScript Language Reference Manual for details on the protocol.) At the start of the PostScript job, the sequence \001 M is sent. Afterwards, all control characters in the set 0x01, 0x03, 0x04, 0x05, 0x11, 0x13, 0x14, 0x1C, are replaced by the two character sequence \001 X+'@' or X+'\100' or is sent. For example: C\001\003 -> \001\115\103\001\101\001\103 or \001MC\001A\001C Synchronization and Pagecounts Many printers are able to provide status information back to the filter. It is assumed that in these circumstances file descriptor 1 (FD1) is bidirectional and status information can be read from it. When the status option is TRUE, FD1 is readable and is a device or communications socket, then the filter assumes that it can read FD1. Synchronization is usually done in order to ensure that a previously spooled job or printer action has completed correctly, and the printer is ready to accept a new job. It is usually carried out by sending a request to the printer to echo a string back to the filter. Clearly, if the printer cannot provide status or echo values back, then synchronization is impossible. The value of the sync option determines if a PJL ECHO command or simple PostScript program is used. The PostScript program has the form: \004%!PS-Adobe-2.0 ( %%[ echo: TODSTR ]%% ) print () = flush \004 where TODSTR is replaced with the current Time of Day. To control obtaining synchronization, the sync_interval=nnn and sync_timeout=nnn options are used. The PJL or PS command is repeated at sync_interval=nnn second intervals; if nnn is 0, then it is sent only once. If synchronization is not obtained within sync_timeout=nnn seconds, then the filter exits with an error status. A 0 value or sync_timeout@ disables timeouts. When the &IFHP; filter is operating in OF mode and the Pagecounts are used to do accounting and report the number of pages used for a job. Most printers have a hardware based pagecounter mechanism whose value can be read by the appropriate PJL command or PostScript program. For example, if the PJL INFO command @PJL INFO PAGECOUNT is supported by a printer, the printer will return a status message containing the current pagecounter value. Printers that support PostScript may also be able to access the pagecounter value using a PostScript program. The exact details of the PostScript program vary from vendor to vendor and the pagecount_ps_code=... option specifies the PostScript program to use. For example: pagecount_ps_code= /p {print} def ( %%[ pagecount: ) p statusdict begin pagecount end 20 string cvs p ( ]%% ) p () = flush The OptionPurpose accounting program accounting information do not get pagecounter value get pagecounter using either PJL or PostScript if available on the printer (default) get pagecounter using PJL get pagecounter using PostScript get pagecounter at job start (default) get pagecounter at job end (default) if nonzero, poll printer and conclude pagecounter value is nonzero when identical N times (default 1) if polling more than once, then leave this interval (in seconds) between polls. Use these option values when running in OF Mode The following options are used in the &LPRng; printcap entry to assist with getting the pagecounter values: lp: # run at job start :as=/.../accounting_at_start # run at job end :ae=/.../accounting_at_end # -a filter option value or last command line argument :af=/.../acct # default filter :filter=/.../ifhp # of filter - run before and after job, can be suspended # desperation flag for desperate situations #:suspend_of_filter@ :of=/.../ifhp #options :ifhp=...,of_options=pagecount waitend The :as program is run at the start of a print job, and is used to determine if the user has sufficient resourses to print a job. The :ae program is run at the end of a print job and is used to collect the accounting statistics. The &IFHP; filter will write accounting information to the accounting file specified by the command line option, or the last command line argument. When both the :of filter and normal filters are used together, the accounting information will be nested as shown. Normal Mode: start '-qProcessID' '-pPagecounter' \ '-tStartTime' '-Pprinter' '-Hhost' '-nuser' '-Raccntinfo' end '-bPages' '-Telapsed' '-qProcessID' '-pPagecounter' '-tEndTime' '-Pprinter' '-Hhost' '-nuser' '-Raccntinfo' \ '-TElapsedTime' OF Mode: filestart '-qProcessID' '-pPagecounter' \ '-tStartTime' '-Pprinter' '-Hhost' '-nuser' '-Raccntinfo' fileend '-bPages' '-Telapsed' '-qProcessID' '-pPagecounter' \ '-tEndTime' '-Pprinter' '-Hhost' '-nuser' '-Raccntinfo' Sample Accounting File Entry: start '-q10699' '-p234' '-t2000-05-24-09:27:47.784' \ -Plp -Hh4.private -npapowell filestart '-q10700' '-p234' '-t2000-05-24-09:27:47.784' \ -Plp -Hh4.private -npapowell fileend '-b0' '-T1' '-q10700' '-p235' '-t2000-05-24-09:27:47.863' \ -Plp -Hh4.private -npapowell end '-b1' '-T1' '-q10699' '-p235' '-t2000-05-24-09:27:47.863' -Plp -Hh4.private -npapowell The format of the information written to the accounting file is controlled by the accounting_info=AHPn &IFHP; configuration value. If they are present, the specified &IFHP; command line flags are appended to the end of the standard accounting information. The accounting=... option specfies a program to run at then end of the job. This program has all of the accounting information passed as command line options. The program should exit with a 0 exit code; otherwise the results are undefined. The printcap :suspend_of_filter controls how the of filter. When a file is to be printed normally, a special two character suspend message (\031\001) is written to the filter STDIN. When the &IFHP; filter detects this string in the input it is required to suspend itself by sending itself a :suspend_of_filter@ flag causes the :of filter rather than suspending it, and to start a new :of filter process when it needs one. This option is used when there can be at most one process communicating with the printer, or when the &IFHP; filter must totally reinitialize the printer at job end. The pagecount option controls if and how the pagecounter value will be fetched. Currently pagecount=ps (PostScript) and pagecount=pjl (PJL) are supported. The pagecount form will use PJL if it is available; otherwise PostScript if it is available. The pagecount@ suppresses pagecount operation. The pagecount_start and pagecount_end flags control if the pagecounter will be obtained at the start and end of the print job. One of the major problems with getting printcounter values is that the print job must be totally finished or at least have all of its pages run through the paper feed stream when the pagecounter value is reported. Unfortunately, most manufacturers do not provide accurate ways to coordinate the two activities. The waitend option is used to enable the &IFHP; filter to send special command sequences to the printer which will detect the true end of job, but this may not be possible on many printers. The printcounter_poll=N (default 1) option provides a method to deal with these types of printers. Commands to get the printcounter value are sent to the printer, and repeated at printcap_interval second intervals until the printcounter value has been stable for N readings. The PJL TEOJ (True End Of Job) command has been used with only limited success to force End of Job reporting only when the job has finished. This can be sent to the printer during PJL initialization by specifying it as one of the PJL initialization strings: pjl_init=[ ... teoj ... ] pjl_teoj=@PJL TEOJ=ON The The pagecount_start and pagecount_end (both default to TRUE or ON) control if pagecounter values are obtained at the start or end respectively of the job. The pagecount request is sent to the printer every pagecount_interval=nnn second intervals; if nnn is 0, then it is sent only once. If no pagecount value is obtained within pagecount_timeout=nnn seconds then the filter exits with an error. PJL Initialization If a printer supports PJL, the many printer operations can be initiated and controlled using PJL commands. Unfortunately, not all printers support the same set of commands. In addition, not all printers support the same set of operations or options. A PJL command has the form: @PJL COMMAND OPTION OPTION ... A PJL variable is set using: @PJL SET var = value ... The pjl_only=[ ... ], pjl_except=[ ... ], pjl_vars_set=[ ... ], and pjl_vars_except=[ ... ] options are used to control which PJL commands and which PJL variables can be set. The pjl_only variable lists the commands supported by the printer, and the pjl_except lists commands not supported by the printer. Before sending a PJL command, the &IFHP; filter checks to make sure that the command name is in pjl_only and not in pjl_except. If the tests fail, then tne command is not sent. Similarly, when sending a command to set a PJL variable, the pjl_vars_set and pjl_vars_except lists are checked to determine if the variable name is in pjl_vars_set and not in pjl_except list. If the tests fail, then tne command is not sent. If PJL is enabled, then the following actions are taken. PJL Universal Exit Language (UEL) \033%-12345X is sent to the printer. This is required to ensure that the following PJL commands are accepted. PJL JOB command is sent at the start of job. The JOB command can be used to select pages or impressions to be printed. If the -Zstartpage=nnn or -Zendpage=mmm option is present, then the PJL JOB command has the form: @PJL JOB START=nnn END=mmm The pjl_init=[ ... ] value option is expanded using the PJL ("pjl_") language context as described above. The -Toption=values and -Zoption=values are scanned for matching option names in the pjl_user_opts=[ ... ] list. If they are found, then the options are recursively evaluated in the PJL language context. The expansion algorithm will cause the option value to be used to set PJL variables. For example: Configuration: pjl_vars_set=[ OUTBIN AUTOSELECT JAM=YES ] Command ifhp -Zoutbin=upper,autoselect,jam PJL command generated: @PJL SET OUTBIN=UPPER @PJL SET AUTOSELECT=ON @PJL SET JAM=YES File Conversion Support The lpr -l or lp -b flags indicate that the spooled files are not to be processed by an output filter. The &LPRng; spooler recognizes this option and passes the command line option to suppress any language specific processing for files. However, many PostScript printers cannot handle text files, and produce many hundreds of pages of garbage output if they are sent to the printer without being translated into PostScript, and some printers require language specific setup in order to print PCL, PostScript or text files correctly. The &IFHP; filter has builtin tests for PJL, PCL, and PostScript files. These tests are almost identical to those used by many printers which do autodetection. If you need to recognize a wider range of file types, you can configure &IFHP; to use the UNIX file(1) program. Finally, some printers have a very specialized job format that requires conversion to by a rasterizer program. This is handled as detailed in the following sections. File Type Detection The &IFHP; filter has a set of built-in tests to determine if the input job file is PJL, PostScript, and PCL, or (default) text, and flags the file with language types pjl, ps, pcl, and text respectively. You can also use the UNIX file utility is invoked with it STDIN attached to the file and &IFHP; uses the information it writes to STDOUT as the raw file type. The &IFHP; program will convert the output to lowercase, remove multiple whitespace characters, and replace the remaining whitespace characters with underscores _. By default, &IFHP; will not try to detect binary files, i.e. - files printed with the binary or literal flag (-c command line flag). You can use the forceprocessing flag to cause all files of all types to be processed. &IFHP; will first try to use its builtin tests and then will use the file utility. You can set the forceconversion flag to force &IFHP; to only use the file utility. The following shows the information in the ifhp.conf file used to configure the file type detection. ##forceprocessing - check all files for type - default 'no' forceprocessing@ ## default default_language=text ## force only use of file program ## default is to let ifhp try first, then try file forceconversion@ ## file utility path file_util_path=/usr/bin/file - The output of the file utility is converted to lower case and used as the language type for further processing. Conversion Once the language type has been determined, the &IFHP; filter then decides if a conversion program needs to be run and will convert the input file to a required file type. This activity is controlled by the file_output_match table. file_output_match = [ *postscript* ps \%s{ps_converter} *pcl* pcl \%s{pcl_converter} *pjl* pjl \%s{pjl_converter} *printer*job*language* pjl *text* pcl \%s{pcl_converter} *gzip_compressed* filter \%s{gzip_decompresser} ] Each line of the file_output_match table contains a (URL encoded) glob pattern, the language type (ps, pcl, etc.) produced by the conversion program, and the (optional) conversion program. The format: file_output_match = </pathname will cause &IFHP; to open and read the specified file for the file_output_match table. The file's contents must have the same format as the file_output_match table but without the [ or ] delimiters. The file_match_table is scanned from first to last entry for a glob pattern that matches the file type determined by the &IFHP; program or the output of the file_util_path program. If no match is found, then the language is set to the default_language value. The output language of the conversion program is set to the second entry. The conversion program will be run with its STDIN set to the input file and its STDOUT used as the converted output. If there is no conversion program then the original file is used and only the language type is modified. The filter language type causes the specified conversion program to be run and then the output of the program to be reprocessed. As shown above, this allows file decompression routines to be used to expand the files. The following are some short samples of what can be done with the conversion facility. # set up GhostScript gs_device=epsonc gs_options=-r1440 gs=/usr/bin/gs gs_converter= [ \%s{gs} -dBATCH -q -sOutputFile=- \ -sDEVICE=\%s{gs_device} \%s{gs_options} - ] # use GhostScript for conversion ps_converter = [ \%{gs_converter} ] text_converter= [/usr/bin/a2ps -q -B -1 -M Letter \ --borders=no -o- \%s{ps_converter} ] gzip_decompresser = [ /usr/bin/gzip -c -d ] [ ghostscript gs ] file_output_match = [ *postscript* ps \%s{ps_converter} *text* pcl \%s{pcl_converter} *gzip_compressed* filter \%s{gzip_decompresser} ] Printcap entry: pr: :ifhp=model=ghostscript,gs_device=laserjet,gs_options=-r300x300 In this example, we have shown a very interesting device - the GhostScript device. We use the gs (GhostScript) program to do the conversion, and specify the gs_device and gs_options values in the printcap entry. There are a few details that should be observed when using this facility. The output from the file program has spaces converted to underscores. If you need to match spaces then use the underscore in the pattern. For example, ascii text would be matched by *ascii_text*. If the conversion program contains a shell meta character such as |, ;, >, <, etc, then it will be executed using /bin/sh -c 'command'. This allows a pipe of conversion commands to be constructed. This is discussed in detail below. The most commonly used conversion programs are a2ps, enscript, and textps Text to PostScript conversion programs which convert text into PostScript for a non-text supporting printer. The use of a wrapper program with these utilities is discussed below. All of the command line options can be substituted on the command line using \%{X}, where X is the single letter command line option flag. The \%s{ARGV} value is replaced by the command line arguments. The conversion program must exit with a 0 error code or an error is assumed to have occurred. The enscript program will exit with a non-zero error codes even for successful conversions and we need to use a wrapper script that will run it and then return the correct error code as shown below. #!/bin/sh # /usr.../wrapper path [options] # wrapper script for a2ps, enscript and others # path is the path to the program and options are the # options to pass. The program is run and then the exit # code is corrected "$@" status=$? case "$status" in 1 ) exit $status ;; esac exit 0 LF to CR/LF Conversion When processing text or pcl files, the crlf option will enable translation of LF (\n) to CR/LF (\r\n) sequences. If you are using &IFHP; to simply do LF to CR/LF translation, then you can use: ifhp -Tcrlf Text Treated Like PCL Text is simply PCL with no special formatting codes. However, you will still need to send the PCL initialization strings to the printer. You can do this by using the following entry in the file_output_match table: file_output_match = [ *text* pcl ] Default to Passthrough Your printer may be capable of handling a wide variety of job formats. If you want to simply pass through files of unknown type or language then use the following entry in the file_output_match table: file_output_match = [ * raw ] GhostScript Printer Generating a raster image from a PostScript or PCL file in a timely manner requires a high speed processor and substantial amounts of memory. Many of the low cost printers require the user's system to do the raster conversion, and a raster file is then transferred to the printer. These files are usually in a proprietary format. The GhostScript program can process PostScript files and produce raster output for a wide range of devices. See the GhostScript documentation for details. Some printers have PCL support but do not support PostScript. The gs and pcl_gs printer configuration support these printers. # PRINTER ghostscript - Printer with GhostScript conversion to raster files gs_converter= [ /usr/bin/gs -dSAFER -dBATCH -q -sOutputFile=- -sDEVICE=\%s{gs_device} \%s{gs_options} - ] text_converter= [ /usr/bin/a2ps -q -B -1 -M Letter --borders=no -o- ] [ ghostscript gs ] pcl@ pjl@ ps text@ file_output_match = [ # PostScript to Raster *postscript* raw \%s{gs_converter} # text to PostScript to Raster conversion *text* filter \%s{text_converter} ] # PRINTER pcl_gs - PCL Printer with GhostScript conversion to raster files [ pcl_gs ] pcl pjl@ ps text@ file_output_match = [ # PostScript to Raster *postscript* raw \%s{gs_converter} *pcl* pcl # text to PostScript to Raster conversion *text* filter \%s{text_converter} ] The \%s{gs_device} and \%s{gs_options} parameters can now be specified in the printcap. The following shows a typical printcap entry for use with this entry. # force clients (lpr, lpq, to use server) lp:lp=lp@serverhost # server information lp:server :sd=spooldir :lp=/dev/lpt0 :... :ifhp=model=gs,gs_device=epson,gs_options=-r240x72 #path to ifhp filter :filter=/.../ifhp The &IFHP; configuration entry uses GhostScript to do the rasterization of the PostScript file, and the a2ps program to do a text to PostScript conversion. Language Specific Initialization After determining the output file language type, language specific operations are then carried out by expanding the language_init=[ ... ] options in the language context, and then the options in the -Toption=value and -Zoption=value command line options. The options are expanded before the , allowing the actions to override any set by the actions. As mentioned elsewhere, the reason for the language specific processing is to allow different actions for the same command line option, depending on the file type that is being processed. For example, when processing a PCL file it might be necessary to send PCL command strings and when processing a PostScript file, you would need to send PostScript commands. File Transfer and Error Status Monitoring If the printer can return status, i.e., the status option is on, the filter will read status information from the printer. If the logall flag is SET, then all error messages will be written to the status or log file. If the printer is returning PJL status information, then this has a specific format: @PJL UINFO DEVICE CODE=nnnn DISPLAY="value" ... @PJL UINFO JOB START ... @PJL UINFO JOB END ... The &IFHP; program will extract the CODE and job start and end flags, and log these as appropriate. Unfortunately, some PJL based printers are extremely verbose in their generation of status messages. In order to reduce the amount of logging of redundant information, &IFHP; will only record when a device status has changed, rather than when it has been reported. The pjl_quiet_codes=[ code code code ] value is used to suppress reporting of selected error codes. If the error code is in the pjl_quiet_codes list, then the error status will not be reported to the user unless the logall option is set. The list of values is used as glob patterns. For example: pjl_quiet_codes=[ 10000 10001 10003 10023 10024 35078 41* ] Also, there may be error codes which do not have a builtin error message available. New messages can be added using the pjl_error_codes option. Its value is a list of lines, each line consisting of an error code followed by the corresponding error message: pjl_error_codes=[ code=msg code=msg ... ] Example: pjl_error_codes=[ 10000=powersave mode 10001=Ready Online 10002=Ready Offline 10003=Warming Up 10004=Self Test 10005=Reset ] Finally, there are codes or classes of codes that require operator intervention. These are specified using the pjl_alert_codes, and the pjl_alert_handler program will be invoked to send them to the appropriate destination. The formated error message will be available on STDIN for the handler. For example: pjl_alert_codes=[ 41* 42* 23* ] pjl_alert_handler=/usr/local/libexec/filters/alert_handler End of Job The waitend option controls the job termination sequence. By default, this will do the same work as the sync operation, and the option takes the same set of values. If waitend is suppressed using waitend@, then as soon as a job has been transferred, the next step, pagecount, will be attempted. If the print job has not finished at this point, then erroneous page counts will be reported. When the appsocket protocol is used, suppressing waitend will cause no error messages from the printer to be reported. Some printers do not have a True End Of Job reporting capability using PJL. This means that the job will be reported as done, but paper is still moving through the print engine. If you try to get pagecounts at this point you will get the wrong value. An alternative method is to set waitend=ps and The end_ctrl_t=word:word:... This will cause a CONTROL-T to be sent to the printer, a PostScript convention that will cause the PostScript interpreter to return the actual printing status. In most printers this will be printing or something other than idle or busy as long as paper is moving in the print engine. When status is returned, the words in the end_ctrl_t=word:word:... list value are examined for a match. If the status word is present then the end of job condition is assumed. The waitend_interval value controls how often the waitend operation is repeated. This is usually set to a fairly large value, as it is normally used only to recover from printer failures such as users turning the printer on and off. The waitend_ctrl_t_interval controls how often the printer is queried for status using CTRL-T and is usually set to a short (2 or 3 second) value. Tektronix Phaser, QMS and AppSocket Support The appsocket flag is used to specify that data transfer will be done using the AppSocket protocol. The &IFHP; filter will open a connection to the ip address and port specified by the dev=host%port option and carry out the various operations that it needs to do. Normally after sending information to the printer a If page count information is needed, the &IFHP; filter will then reopen the connection and get the page count information. Banners and OF Mode Operation One of the more difficult administrative issues is whether to print banners (job separators) or to save the large amount of wasted paper, time and effort. The &LPRng; and &IFHP; combination provide a rather esoteric set of methods to generate banners, at least one of which should be suitable for your application. You should be aware that some printers have the obnoxious habit of generating their own banner pages when jobs are transferred via the RFC1179 protocol. You should consult the manufacturers documentation and take the necessary steps to turn printer banner page generation off. It may turn out that this is impossible to do, and in that case the only option is to use the Socket or Appsocket connection methods. In the original BSD print spooler, the :of print filter was responsible for banner generation. The print server would send it a magic string that the filter would recognize as a print a banner request, and it would then generate a banner. After this, another special magic cookie string, the character sequence 0x19,0x01, was sent to cause the :of filter to suspend itself. This allowed the print spooler to hold the connection to the printer open while it started another filter to transfer a file. Finally, after all the jobs were sent, the :of filter was sent a SIGCONT signal to wake up and perform whatever closing operations were necessary. This mixing of functionality causes horrible problems when special setup strings must be sent to printers in order to configure them for various operation. In order to avoid these problems, the banner printing and filter functions have been separated in the &IFHP; filter. If a banner is needed, then &LPRng; will use a special banner generating program to generate the banner. The output of this program is then sent to the :of filter, or directly to the printer if there is no :of filter. No Banner Here is a typical printcap entry when banner printing is not wanted: lp: :sh :filter=/.../ifhp The :sh (suppress headers or banners) explicitly disables banner printing, and the Banner Printing and No OF Filter This printcap entry specifies a banner generator program and and banner generation. There is no :of filter specified, so the banner is sent directly to the printer. In such a case the banner printing program should make sure that it generates output with the appropriate set of initialization strings. The pclbanner, psbanner, and lpbanner programs produce PCL, PostScript, and text banners suitable for a wide range of printers. The code for these banner generators is part of the &LPRng; distribution. lp: :bp=/.../pclbanner :of=/.../ifhp :filter=/.../ifhp # or :bp=/.../psbanner :of=/.../ifhp :filter=/.../ifhp # or :bp=/.../lpbanner :of=/.../ifhp :filter=/.../ifhp Banner Printing With OF Filter Finally, we may want banner printing together with the :of filter. This is usually the case when we need to perform special printer setups or require the &IFHP; filter to do accounting. In this case we need to make sure that the banner page is counted as part of the job: lp: :bp=/.../pclbanner When invoked as an :of filter, the -Fo option on the command line, so that the &IFHP; filter knows what mode it is operating in. &LPRng; Options Controlling Banner Printing The lpr -h (no header or banner) option suppresses putting :ab (always banner) overrides this, and will print a banner using the user name information. The :sh (suppress header) option will override everything and prevent banners from being generated. Banners are generated by the :bp=/... (banner program) program; different banners at start and end can be generated by using the :bs=/... (banner start) and :be=/... (banner end) options, which override the :bp= option. of_options option This option, usually used on the command line or in the printcap file as part of the :ifhp information, specifies a set of options to use when the filter is running in OF mode. For example: lp: :ifhp=sync@,pagecount@,waitend@,of_options=sync pagecount waitend :filter=/usr/local/libexec/filtes/ifhp :of=/usr/local/libexec/filtes/ifhp same as: lp: :filter=/usr/local/libexec/filtes/ifhp -Tsync@,pagecount@,waitend@ :of=/usr/local/libexec/filtes/ifhp -Tsync,pagecount,waitend In this printcap entry, the &IFHP; filter is invoked normally with the sync@, pagecount@ and waitend@ options. This causes it to send jobs as fast as possible to the output device and only monitor the device for error status. The of= entry causes the of_options are used to override the other ones. Font Download Support For historical reasons, there is support for downloading a font or other file to the printer. A large amount of the necessary operations are now in the ifhp.conf file. The font_download built-in option supports downloading as described below. PCL Font Downloading The following shows the a typical ifhp.conf file which has PCL font downloading enabled. # # Fonts and Font Downloading # fontid is used to set the current font pcl_init=[ ... font ... ] # combination command pcl_font=[ delete_fonts font_id font_download font_primary ] # font control # font_op=0 pcl_font_op=\033*c\%{font_op}F pcl_delete_fonts=\033*c0F font_id=1 pcl_font_id=\033*c\%{font_id}D # set primary font font_primary=1 pcl_font_primary=\033(\%{font_primary}X # font directory pcl_fontdir=/usr/local/lib/fonts #default font file font=c1201b.10 To allow users to download a font and have it set up for PCL use, the pcl_init option should include the font option in an appropriate position in the initialization sequence. As shown above, this will get expanded into the pcl_delete_fonts, pcl_font_id, pcl_font_download (which is has built-in support), and the pcl_font_primary options, which are expanded in order. The pcl_font_download is supported by the builtin operation which will find the pcl_fontdir directory value and a value for the font variable, using values from the and and configuration information in that order. If no font value is found, no font will be downloaded. For example: lpr -Tfont=font1,font2 When the pcl_font_download option is expanded, it will generate the pathnames /usr/local/lib/fonts/font1 and /usr/local/lib/fonts/font2, open these files, and send their contents directly to the printer. PS Font Downloading PostScript font downloading is supported in a similar manner to PCL font downloading. # # Fonts and Font Downloading # ps_init=[ ... font ... ] # combination command ps_font=[ font_download ] # font directory ps_fontdir=/usr/local/lib/fonts #default font file font=font.ps.10 In a similar manner to the PCL font downloading, when the ps_init list is expanded, the ps_font entry will be expanded in turn. If the -Zfont=ZapDingbat.ps is specified, then the /usr/local/lib/fonts/ZapDingbat.sp file will be opened and downloaded to the printer. PJL File Downloading In a similar manner to the above font downloading, you can specify a configuration or other setup file that should be sent to the printer as part of the PJL setups. The following configuration shows how to set this up. # # PJL Initialization File Downloading # fontid is used to set the current font pjl_init=[ ... setup ... ] setup=initval font=\%s{setup} # setup directory pjl_fontdir=/usr/local/lib/fonts pjl_setup=[ font_download ] The above configuration will cause the value of the setup , or configuration option to be used. Debugging and Problem Solving If you are reading this section, then most likely you have had a problem using &IFHP; with &LPRng;. Before going any further, please read RFC1179 (BSD or TCP/IP) Job Transfer Printcap Entry, and make sure that your printcap entry has the lpd_bounce flag set. This is the Most Frequently Asked Question and the Most Frequently Provided Answer on the &LPRng; mailing list. The following section outlines a method to debug problems with the &IFHP; filter. It will make use of some diagnostic options that are normally not used in a printcap entry. First, let us start with a typical printcap entry and a problem. lw4: :lp=10.0.0.14%9100 :sd=/var/spool/lpd/%P :ifhp=/usr/local/lib/filters/ifhp Command: lpr -Plw4 -V /etc/motd LPR output: sending job 'papowell@h4+223' to lw4@localhost connecting to 'localhost', attempt 1 connected to 'localhost' requesting printer lw4@localhost sending control file 'cfA223h4.private' to lw4@localhost completed sending 'cfA223h4.private' to lw4@localhost sending data file 'dfA223h4.private' to lw4@localhost completed sending 'dfA223h4.private' to lw4@localhost done job 'papowell@h4+223' transfer to lw4@localhost Version LPRng-3.6.14 When trying to print to the print queue, the user discovers that no output comes out of the printer. The immediate suspicion is that the filter is not working. You should make sure that the lpr command is actually sending the job to the print queue. You can then use lpq to discover what happened: # lpq -llll Printer: lw4@h4 'Hp : Laserwriter' Queue: no printable jobs in queue Status: subserver pid 27251 starting at 15:34:09.350 Status: accounting at start at 15:34:09.357 Status: opening device 'h14.private%9100' at 15:34:09.366 Status: printing job 'root@h4+223' at 15:34:09.375 Status: printing data file 'dfA223h4.private', size 3, IF filter 'ifhp' at 15:34:09.376 Status: IF filter finished at 15:34:35.012 Status: printing done 'root@h4+223' at 15:34:35.012 Status: accounting at end at 15:34:35.014 Status: finished 'root@h4+223', status 'JSUCC' at 15:34:35.014 Status: subserver pid 27251 exit status 'JSUCC' at 15:34:35.018 Status: lw4@h4.private: job 'root@h4+223' printed at 15:34:35.020 Status: job 'root@h4+223' removed at 15:34:35.101 Filter_status: accounting at start, pagecount 89696, pages 0 at 15:34:13.304 Filter_status: sending job file at 15:34:13.306 Filter_status: starting transfer at 15:34:13.306 Filter_status: initial job type 'text' at 15:34:13.306 Filter_status: job type 'pcl' at 15:34:13.306 Filter_status: transferring 3 bytes at 15:34:13.308 Filter_status: 100 percent done at 15:34:13.308 Filter_status: finished writing file, cleaning up at 15:34:13.308 Filter_status: sent job file at 15:34:13.308 Filter_status: doing cleanup at 15:34:13.308 Filter_status: getting end using 'pjl job/eoj' at 15:34:13.309 Filter_status: end of job detected at 15:34:33.219 Filter_status: getting pagecount using 'pjl info pagecount' at 15:34:33.219 Filter_status: final pagecount 89697 at 15:34:35.009 Filter_status: accounting at end, pagecount 89697, pages 1 at 15:34:35.010 Filter_status: done at 15:34:35.010 As you can see from the lpq output, the Status section shows the Filter_status section shows what &IFHP; is doing. This is the first line of defense - make sure that the information and errors reported here are for the correct filter. If this does not help, then we will start with the basic filter tests and work our way back to the print server. First, you will need a couple of test files. If you have a PostScript printer, find a simple PostScript file - the ellipse.ps file is included in the &IFHP; distribution in the UTILS directory. You will also need a short text file - /etc/motd is usually handy to use. Create the /tmp/send file with the following contents: #!/bin/sh cp /dev/null /tmp/t /usr/local/libexec/filters/ifhp -Tdev=/tmp/t,trace,debug=1 </etc/motd 2>/tmp/trace This will create the /tmp/t file, run the &IFHP; filter, and put the trace and debugging information into the /tmp/trace file. Run this command using: #!/bin/sh sh -x /tmp/send Examine the output in /tmp/trace. It will look like: ifhp 15:46:14.402 [27307] main: Debug '1' ifhp 15:46:14.403 [27307] main: dump <NULL> ifhp 15:46:14.403 [27307] main: Model_id '<NULL>' ifhp 15:46:14.440 [27307] main: scanning Raw for default, then model '<NULL>' ifhp 15:46:14.441 [27307] Select_model_info: id 'default', list->count 1940, model->count 0, init 0 ifhp 15:46:14.448 [27307] Dump_line_list: main: Model information - count 156, max 204, list 0x806e000 ifhp 15:46:14.448 [27307] [ 0]='T=dev=/tmp/g,trace,debug=1' ifhp 15:46:14.448 [27307] [ 1]='banner@' ifhp 15:46:14.448 [27307] [ 2]='banner_file=/usr/local/libexec/filters/psbanner.ps' ifhp 15:46:14.448 [27307] [ 3]='converter=' ifhp 15:46:14.448 [27307] [ 4]='debug=1' ifhp 15:46:14.449 [27307] [ 5]='default_language=text' ifhp 15:46:14.449 [27307] [ 6]='dev=/tmp/g' ifhp 15:46:14.449 [27307] [ 7]='duplex_select=1' Most of the information with debug level 1 is simply showing the details of options, command execution, and error status. This will, however, help with the majority of problems. You can now modify the /tmp/send file to better reflect your printer. #!/bin/sh cp /dev/null /tmp/t # substitute your ifhp options here ifhp=model=hp4,status@ /usr/local/libexec/filters/ifhp -Tdev=/tmp/t,trace,debug=1,${ifhp} </etc/motd 2>/tmp/trace Now run this again and examine the trace and output in /tmp/t. If this looks correct, we move on to the interactive tests. If your printer is a network based printer and you are using RFC1179 transfers, then you can use the following lpr command to send the /tmp/t file directly to the printer: lpr -Ppr@host /tmp/t Example: print queue 'raw' lpr -Praw@10.1.1.1 /tmp/t This form of the command causes lpr to send the job directly to the printer. If this works correctly then we know that there is no problem with &IFHP; formatting the file, and that the problem must be with the If your printer is network based and uses a socket connection, then you can have &IFHP; connect to the printer by using the dev=host%port connection option. This is only used for testing or when you want to use the AppSocket protocol. #!/bin/sh # substitute your ifhp options here # this should always work #ifhp=model=hp4,status@ # this does status checking, no pagecount #ifhp=model=hp4,pagecount@ # this does status checking and pagecount #ifhp=model=hp4 /usr/local/libexec/filters/ifhp -Tdev=10.1.1.1%9100,trace,debug=1,${ifhp} </etc/motd 2>/tmp/trace If you have a windowing system, run this command from one window and in another window use the tail -f /tmp/trace command to view status. Most of the time you will discover that the system is failing to print because either the sync, pagecount, or waitidle step of the printing process is not completing correctly. If there is insufficient detail for you to decide the failure mechanism, set debug=3, or even debug=4 and explore what is happening. If you have a parallel port connected printer on /dev/lptxx, then you can simply use cat /tmp/t >/dev/lptxx and see what happens. If this works, then use: #!/bin/sh # substitute your ifhp options here ifhp=model=hp4,status@ /usr/local/libexec/filters/ifhp -Tdev=/dev/lptxxx,trace,debug=1,${ifhp} </etc/motd 2>/tmp/trace If you have a serial port printer, then you can use a similar method for setting up a connection. You will need to use the undocumented stty option to set the speed and other parameters. These are identical to those used by &LPRng;, so you should have no problems. #!/bin/sh # substitute your ifhp options here # this should always work #ifhp=model=hp4,status@ # this does status checking, no pagecount #ifhp=model=hp4,pagecount@ # this does status checking and pagecount #ifhp="model=hp4,stty= 9600 -parity crtscts raw" stty="9600 -parity crtscts raw" /usr/local/libexec/filters/ifhp -Tdev=/dev/tty00,trace,debug=1,${ifhp},stty=\"${stty}\" </etc/motd 2>/tmp/trace If all this does not help, then subscribe to the &LPRng; mailing list and ask for help. Index to Options <literal/ifhp.conf/ - &IFHP; Options OptionPurpose HP 4M Plus, PostScript, PJL, PCL, status, pagecount support Use Tektronix AppSocket Protocol Configuration file pathnames Do LF to CRLF translation Debugging level Default job file language (ps, pcl, raw, text, etc) PJL JOB command END = NNN value Force conversion using UNIX file(1) utility File type and conversion matching Pathname of the UNIX file(1) utility Specify job file language to be used (ps, pcl, raw, text, etc) Log all status reports from printer if set Send COUNT nulls to force full buffer condition Specify model name for configuration selection Specify model name using a command line option value Get pagecount using pjl, ps or default Send pagecount command at SECONDS interval PostScript code to get pagecount information Timeout getting pagecount after SECONDS Printer supports PCL if set PCL EOJ (CTRL-D) at start of job PCL initializations to be done User PCL options supported Printer supports PJL if set alert operator on these PJL error codes program to alert operator on PJL error Printer supports messages on console PJL error messages for error codes Do not allow these PJL commands PJL initializations to be done PJL JOB and EOJ supported Allow only these PJL commands ignore these PJL error codes Allow only these user PJL commands or variables to be set Do not allow these PJL variables to be set Allow these PJL variables to be set Printer supports PostScript (ps) PostScript EOJ (CTRL-D) at start of job PS initializations to be done Support these PostScript user options Remove these characters from PostScript jobs Remove PJL commands from begining of job PJL JOB command START = NNN value Timeout for non-responding printer Printer supplies status information Status file pathname Status file has maximum size of NNN Kbytes Status file has truncated size of NNN Kbytes Summary file pathname Synchronize printer if set Send synchronization request at SECONDS interval Timeout synchronization request after SECONDS Use Transparent Binary Communications Protocol for PostScript files Printer supports text mode Put error and trace messages on STDERR if set How to wait for printer to end printing How often to query printer for end of printing How often to send CTRL-T for end of printing status
HP JetDirect Card Support The HPJetDirect card or external JetDirect box can be configured through the printer front panel or through a set of network files. Here is a summary of the methods used from UNIX systems, or when you are desperate, to configure the printer. MicroSoft JetDirect Support There is limited support from HP for non-MicroSoft configuration tools. However, the tools that are provided are simple and easy to use, especially for the initial configuration. TCP/IP Address You can set the TCP/IP address from the front panel. Reset the printer and then use the MENU, +-, SELECT keys as follows: MENU -> MIO MENU (use MENU to display MIO MENU) ITEM -> CFG NETWORK=NO* + -> CFG NETWORK=YES ENTER -> CFG NETWORK=YES* ITEM -> TCP/IP=OFF* (use ITEM to display TCP/IP) + -> TCP/IP=ON ENTER -> TCP/IP=ON* ITEM -> CFG TCP/IP=NO* (use ITEM to display TCP/IP) + -> CFG TCP/IP=YES ENTER -> CFG TCP/IP=YES* ITEM -> BOOTP=NO* (Enable BOOTP if you want to - see below) ITEM -> IP BYTE 1=0* This is IP address MSB byte. Use +- keys to change value, and then ENTER to change Use ITEM keys to get IP BYTE=2,3,4 ITEM -> SM BYTE 1=255* This is the subnet mask value Use +- keys to change value, and then ENTER to change Use ITEM keys to get IP BYTE=2,3,4 ITEM -> LG BYTE 1=255* This is the Syslog server (LoGger) IP address Use +- keys to change value, and then ENTER to change Use ITEM keys to get IP BYTE=2,3,4 ITEM -> GW BYTE 1=255* This is the subnet gateway (router) IP address Use +- keys to change value, and then ENTER to change Use ITEM keys to get IP BYTE=2,3,4 ITEM -> TIMEOUT=90 This is the connection timeout value. It puts a limit on time between connections. A value of 10 is reasonable. Web Server Configuration Many of the newer releases of HP JetDirect firmware have a Web Server configuration capability. Unfortunately, the web pages assume that you have JavaScript support for the browser, and not all of the facilities used are supported by all browsers. However the configuration information and pages presented are extremely simple to use and understand. The major problem with the Web Server configuration is that not all of the options can be set through the Web Server pages. Telnet Configuration Once you have assigned an IP address to the JetDirect Box you can telnet to the box and configure it through a simple command line interface. When you first connect to the box, hit The major problem with the telnet configuration is that not all of the options can be set through the command line facilties. BOOTP Information If you have a bootp server, you can put this information in the bootptab file. To use this, you must enable the bootp option on the printer. The T144 option specifies a file to be read from the bootp server. This file is read by using the TFTP protocol, and you must have a TFTPD server enabled. Here is a sample bootptab entry. # Example /etc/bootptab: database for bootp server (/etc/bootpd). # Blank lines and lines beginning with '#' are ignored. # # Legend: # # first field -- hostname # (may be full domain name) # # hd -- home directory # bf -- bootfile # cs -- cookie servers # ds -- domain name servers # gw -- gateways # ha -- hardware address # ht -- hardware type # im -- impress servers # ip -- host IP address # lg -- log servers # lp -- LPR servers # ns -- IEN-116 name servers # rl -- resource location protocol servers # sm -- subnet mask # tc -- template host (points to similar host entry) # to -- time offset (seconds) # ts -- time servers # # Be careful about including backslashes where they're needed. Weird (bad) # things can happen when a backslash is omitted where one is intended. # peripheral1: :hn:ht=ether:vm=rfc1048: :ha=08000903212F: :ip=190.40.101.22: :sm=255.255.255.0: :gw=190.40.101.1: :lg=190.40.101.3: :T144="hpnp/peripheral1.cfg": If you are using the T144 option, you will need to create the configuration file. The sample configuration file from the HP Direct distribution is included below. # # Example HP Network Peripheral Interface configuration file # # Comments begin with '#' and end at the end of the line. # Blank lines are ignored. Entries cannot span lines. # Name is the peripheral (or node) name. It is displayed on the peripheral's # self-test page or configuration plot, and when sysName is obtained through # SNMP. This name can be provided in the BOOTP response or can be specified # in the NPI configuration file to prevent the BOOTP response from overflowing # the packet. The domain portion of the name is not necessary because the # peripheral does not perform Domain Name System (DNS) searches. Name is # limited to 64 characters. name: picasso # Location describes the physical location of the peripheral. This is the # value used by the interface for the MIB-II sysLocation object. The default # location is undefined. Only printable ASCII characters are allowed. # Maximum length is 64 characters. location: 1st floor, south wall # Contact is the name of the person who administers or services the peripheral # and may include how to contact this person. It is limited to 64 characters. # This is the value used by the interface for the MIB-II sysContact object. # The default contact is undefined. Only printable ASCII characters are # allowed. Maximum length is 64 characters. contact: Phil, ext 1234 # The host access list contains the list of hosts or networks of hosts # that are allowed to connect to the peripheral. The format is # "allow: netnum [mask]", where netnum is a network number or a host IP # address. Mask is an address mask of bits to apply to the network number # and connecting host's IP address to verify access to the peripheral. # The mask usually matches the network or subnet mask, but this is not # required. If netnum is a host IP address, the mask 255.255.255.255 can # be omitted. Up to ten access list entries are permitted. # to allow all of network 10 to access the peripheral: allow: 10.0.0.0 255.0.0.0 # to allow a single host without specifying the mask: allow: 15.1.2.3 # Idle timeout is the time (in seconds) after which an idle # print data connection is closed. A value of zero disables # the timeout mechanism. The default timeout is 90 seconds. idle-timeout: 120 # A community name is a password that allows SNMP access to MIB values on # the network peripheral. Community names are not highly secure; they are # not encrypted across the network. The get community name determines which # SNMP GetRequests are responded to. By default, the network peripheral # responds to all GetRequests. The get community name is limited to 32 # characters. # # For hpnpstat and hpnpadmin, the community name can be stored in # /usr/lib/hpnp/hpnpsnmp. get-community-name: blue # The set community name is similar to the get community name. The set # community name determines which SNMP SetRequests are responded to. In # addition, SetRequests are only honored if the sending host is on the # host access list. By default, the network peripheral does not respond # to any SetRequests. The set community name is limited to 32 characters. # # The set community name can come from /usr/lib/hpnp/hpnpsnmp # if it is the same as the get community name. We recommend that the # set community name be different from the get community name though. set-community-name: yellow # SNMP traps are asynchronous notifications of some event that has occurred. # SNMP traps are useful only with network management software. Traps are # sent to specific hosts and include a trap community name. Up to four # hosts can be sent SNMP traps. The trap community name is limited to # 32 characters. The default name is public. trap-community-name: red # The SNMP trap destination list specifies systems to which SNMP # traps are sent. Up to four IP addresses are allowed. If no # trap destinations are listed, traps are not sent. trap-dest: 15.1.2.3 trap-dest: 15.2.3.4 # The SNMP authentication trap parameter enables or disables the sending # of SNMP authentication traps. Authentication traps indicate that an SNMP # request was received and the community name check failed. By default, # the parameter is off. authentication-trap: on # The syslog-facility parameter sets the source facility identifier that the # card uses when issuing syslog messages. Other facilities, for example, # include the kernel (LOG_KERN), the mail system (LOG_MAIL), and the spooling # system (LOG_LPR). The card only allows its syslog facility to be configured # to one of the local user values (LOG_LOCAL0 through LOG_LOCAL7). The # selectable option strings, local0 through local7 (configured to LOG_LOCAL0 # through LOG_LOCAL7, respectively) are case insensitive. The default # syslog-facility for the card is LOG_LPR. syslog-facility: local2 # This parameter allows the card to treat hosts on other subnets as if the # hosts were on the card's subnet. This parameter determines the TCP # Maximum Segment Size (MSS) advertised by the card to hosts on other subnets # and affects the card's initial receive-window size. The card will use a # TCP MSS of 1460 bytes for local hosts, and 536 bytes for a non-local host. # The default is off, that is, the card will use the maximum packet sizes # only on the card's configured subnet. # # The configuration utility does not allow access to this parameter. If you # want to configure it, you must manually edit the NPI configuration file # and add it to the bottom of the entry for the network peripheral. subnets-local: on # This parameter affects how the card handles TCP connection requests from # the host. By default, the JetDirect MPS card will accept a TCP connection # even if the peripheral is off-line. If this parameter is set to "on", then # the card will only accept a TCP connection when the peripheral is on-line. old-idle-mode: off Timeouts You should be aware that the idle-timeout value in the configuration file will override the value entered on the control panel of the printer. Also, the @PJL SET TIMEOUT = NNN command will override this value as well.
ifhp-3.5.20/DOCS/IFHP-Reference.out0100644000175100017510000000000010130541254016646 0ustar papowellpapowell
LPRngLogo ifhp ifhp

IFHP Reference Manual

5 Oct 2004 (For ifhp-3.5.20)

Patrick A Powell


AStArt Technologies addr
6741 Convoy Court,
San Diego, CA 92111
Phone 858-874-6543
Fax 858-751-2435

The ifhp program is an enhanced, extended, highly configurable, and portable implementation of a print filter for use with the LPRng Print spooler package. ifhp supports network, serial, and parallel printers, does page accounting and job recovery, and allows an extremely high level of configuration and tuning. ifhp gets its flexibility by using a configuration file to set its operational characteristics. The configuration file can contain multiple separate printer configurations and the configuration selection is done by a very simple command line option. The filter supports text, PostScript, PCL, and PJL printers, and can be configured to handle a wide range of printer quirks and mis-implementations.

Important: THIS DOCUMENTATION AND THE DESCRIBED SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Table of Contents
Preface
1. Introduction
2. Acknowledgements
3. Shell Prompts
4. Typographic Conventions
5. Notes, warnings, and examples
1. Introduction
1.1. Copyright and Disclaimer
1.2. Commercial Support
1.3. Web Site
1.4. FTP Sites
1.5. Mailing List
1.6. PGP Public Key
2. Software Installation and Configuration
2.1. Additional Recommended Software
2.2. Installation
2.3. Printer Models Supported
3. Recommended -Z options for Users
3.1. Input Tray Selection
3.2. Output Bin Selection
3.3. Media Size (Paper) Selection
3.4. Media Type Selection
3.5. Duplex and Simplex
3.6. Copies
4. Printer Capabilities, Configurations, and Printcaps
4.1. Printer Configurations
4.2. Network Communication Protocols
4.3. RFC1179 (BSD or TCP/IP) Job Transfer Printcap Entry
4.4. Socket Protocol (TCP/IP) Operation Printcap Entry
4.5. Appsocket Protocol (TCP/IP) Operation
4.6. Using SNMP For Status Information
4.7. Common Print Server Boxes Configuration Information
4.8. Timeout Problems Sending A Job
4.9. Printers With Lockup Problems
4.10. PS, PCL, PJL Printer with TPC/IP Network Interface
4.11. PS, PCL, PJL Printer with Parallel Port Connection
4.12. PS, PCL, PJL Printer with Serial Port
4.13. PostScript Only Printer
4.14. GhostScript
4.15. Tektronics Phaser, QMS, and Appsocket Protocol
5. Options and Arguments
5.1. Command Line Options
5.2. General Configuration Options - config, trace, debug
5.3. Status Messages
5.4. Printer Status Available - status
5.5. Monitoring Options - sync, waitend, pagecount
5.6. User -Z Option Support
5.7. Adding User Options
5.8. Initialization and Setup Control
6. Configuration File
6.1. Configuration File Entries
6.2. Comments
6.3. Option Setting
6.4. Option Use
6.5. List Expansion
6.6. String Escape Sequences
6.7. Language Context and Value Expansion
6.7.1. PJL Language
6.7.2. PCL Language
6.7.3. PostScript Language
6.8. Printer Entries
6.9. Include Facility
6.10. tc Entry Inclusion Facility
7. Filter Operation Details
7.1. Filter Pseudo-Code
7.2. Options, Initialization and Setup
7.3. Languages Supported- pjl, pcl, ps, and text
7.3.1. pjl_job FLAG
7.3.2. pjl_enter FLAG
7.3.3. remove_pjl_at_start FLAG
7.3.4. nullpad STRING
7.3.5. pjl_console FLAG
7.3.6. remove_ctrl STRING
7.3.7. tbcp FLAG
7.4. Synchronization and Pagecounts
7.5. PJL Initialization
7.6. File Conversion Support
7.6.1. File Type Detection
7.6.2. Conversion
7.6.3. LF to CR/LF Conversion
7.6.4. Text Treated Like PCL
7.6.5. Default to Passthrough
7.7. GhostScript Printer
7.8. Language Specific Initialization
7.9. File Transfer and Error Status Monitoring
7.10. End of Job
7.11. Tektronix Phaser, QMS and AppSocket Support
8. Banners and OF Mode Operation
8.1. No Banner
8.2. Banner Printing and No OF Filter
8.3. Banner Printing With OF Filter
8.4. LPRng Options Controlling Banner Printing
8.5. of_options option
9. Font Download Support
9.1. PCL Font Downloading
9.2. PS Font Downloading
9.3. PJL File Downloading
10. Debugging and Problem Solving
A. Index to Options
B. HP JetDirect Card Support
B.1. MicroSoft JetDirect Support
B.2. TCP/IP Address
B.3. Web Server Configuration
B.4. Telnet Configuration
B.5. BOOTP Information
B.6. Timeouts

Preface

1. Introduction

The ifhp Print Filter is the primary print filter for the LPRng Print Spooler. This document is designed to be the single basic reference for the ifhp software; the LPRng software is distributed separately and has additional documentation.


2. Acknowledgements

I would like to thank all of the LPRng users who so relentlessly tried the incredible number of permutations and combinations of printers and software, and whose requests for just one more feature led to the development of the software.


3. Shell Prompts

The following table shows the default system prompt and superuser prompt. The examples will use this prompt to indicate which user you should be running the example as.

User Prompt
Normal user %
root #

4. Typographic Conventions

The following table describes the typographic conventions used in this book.

Meaning Examples
The name of commands, files, and directories. On screen computer output.

Edit your .login file.

Use ls -a to list all files.

    You have mail.


What you type, when contrasted with on-screen computer output.
    % su
    Password:
Manual page references. Use su(1) to change user names.
User and group names Only root can do this.
Emphasis You must do this.
Command line variables; replace with the real name or variable. To delete a file, type rm filename
Environment variables $HOME is your home directory.

5. Notes, warnings, and examples

Within the text appear notes, warnings, and examples.

Note: Notes are represented like this, and contain information that you should take note of, as it may affect what you do.

WarningWarnings are represented like this, and contain information warning you about possible damage if you do not follow the instructions. This damage may be physical, to your hardware or to you, or it may be non-physical, such as the inadvertant deletion of important files.

Examples are represented like this, and typically contain examples you should walk through, or show you what the results of a particular action should be.


Chapter 1. Introduction

The ifhp print filter is the latest in a long evolutionary path of print filters for the LPRng print spooler system. It unifies the low level printer communication facilities and provide a common code base for future development.

This document is the complete set of references and installation guide for the ifhp print filter. It covers compilation, installation, initial testing, details of system configuration, and configuration options that would be needed by the system administrator. Previous releases of ifhp had a large selection of README files which are now incorporated into the IFHP Reference Manual.

Information about LPRng and ifhp can be found on the LPRng web page http://www.lprng.com.

There is mailing list for ifhp and LPRng at . In order to reduce the amount of unsolicited spam mail posted to the list you must subscribe to the list before posting to it. To subscribe, send email message to lprng-request@lprng.com, with the single word subscribe in the body.

Several presentations of LPRng and print spooling software have been made at the Large Scale Installation Administrator (LISA) conferences and are in the ifhp distribution and available on web sites. The slides for the LISA 97 tutorial on Printers and Network Print Spooling are the LISA97.ppt in the LPRng distribution.

During development of ifhp, the following documents were invaluable references. For Printer Job Language (PJL) related issues see the Printer Job Language Technical Reference Manual, Hewlett Packard, 10th Edition, October 1997. For PCL related issues see the PCL 5 Printer Language Technical Reference Manual, First Edition, 1992. These manuals are available through the Hewlett Packard Developers Program. See http://www.hp.com/go/devexchange for information on how to join.


1.1. Copyright and Disclaimer

Material included in this document from the ifhp distribution Copyright Patrick Powell 1988-1999, where applicable. The rights to distribute this document complete or in part are hereby granted for non-commercial purposes. Partial reproductions must acknowledge the source. Permission to distribute this file together with LPRng, ifhp and `derived works' is explicitly granted.

THE MATERIAL IN THIS DOCUMENT IS PROVIDED WITHOUT FEE AND AS-IS WITH NO WARRANTY REGARDING FITNESS OF USE FOR ANY PURPOSE. THE AUTHOR AND ALL CONTRIBUTORS ARE NOT LIABLE FOR ANY DAMAGES, DIRECT OR INDIRECT, RESULTING FROM THE USE OF INFORMATION PROVIDED IN THIS DOCUMENT.


1.2. Commercial Support

AStArt Technologies (http://www.astart.com) provides commercial support and enhancements for LPRng, ifhp, and other network software. AStArt provides network and system consulting services for UNIX and NT systems, as well as real time and network software.


1.5. Mailing List

To join the LPRng mailing list, please send mail to lprng-request@lprng.ie with the only the word subscribe in the body of the message.


1.6. PGP Public Key

The LPRng and ifhp distributions have MD5 checksum files which are signed with a PGP public key. Here is the key for validating the checksums:

    Type Bits/KeyID    Date       User ID
    pub  1024/00D95C9D 1997/01/31 Patrick A. Powell <papowell@astart.com>
                                  Patrick A. Powell <papowell@sdsu.edu>
    
    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: 2.6.3i
    
    mQCNAzLygTQAAAEEANBW5fPYjN3wSAnP9xWOUc3CvsMUxjip0cN2sY5qrdoJyIhn
    qbAspBopR+tGQfyp5T7C21yfWRRnfXmoJ3FVtgToAsJUYmzoSFY08eDx+rmSqCLe
    rdJjX8aG8jVXpGipEo9U4QsUK+OKzx3/y/OaK4cizoWqKvy1l4lEzDsA2VydAAUT
    tCdQYXRyaWNrIEEuIFBvd2VsbCA8cGFwb3dlbGxAYXN0YXJ0LmNvbT6JAJUDBRA0
    XonoiUTMOwDZXJ0BAQ2cBAC7zU9Fn3sC3x0USJ+3vjhg/qA+Gjb5Fi1dJd4solc4
    vJvtf0UL/1/rGipbR+A0XHpHzJUMP9ZfJzKZjaK/d0ZBNlS3i+JnypypeQiAqo9t
    FV0OyUCwDfWybgAORuAa2V6UJnAhvj/7TpxMmCApolaIb4yFyKunHa8aBxN+17Ro
    rrQlUGF0cmljayBBLiBQb3dlbGwgPHBhcG93ZWxsQHNkc3UuZWR1PokAlQMFEDLy
    gTSJRMw7ANlcnQEBYBYD/0zTeoiDNnI+NjaIei6+6z6oakqO70qFVx0FG3aP3kRH
    WlDhdtFaAuaMRh+RItHfFfcHhw5K7jiJdgKiTgGfj5Vt3OdHYkeeh/sddqgf9YnS
    tpj0u5NfrotPTUw39n6YTgS5/aW0PQfO9dx7jVUcGeod1TGXTe9mIhDMwDJI4J14
    =3Zbp
    -----END PGP PUBLIC KEY BLOCK-----



Chapter 2. Software Installation and Configuration

Before you do an installation please read the following instructions. You will need to:

  1. Use GNU Make. You can get it from http://www.gnu.org/software/software.html. Don't even think about trying to use another make unless you are a Wizard. And even the Wizards use GNU Make.

  2. Use an ANSI C compiler. ifhp is developed and tested with the GNU C compiler. You can get it from http://www.gnu.org/software/software.html. Solaris users should consult the excellent http://sunfreeware.com site for binary distributions. AIX users can use http://www.bull.de/pub/ or ftp://ftp.htwk-leipzig.de




2.1. Additional Recommended Software

The following software is recommended for use with ifhp. If your printer does not support PostScript, PCL, or text printing directly you will need to install GhostScript to convert from PostScript to the printer format and use a suitable text to PostScript converter.

Unix File Utility

The ifhp filter will recognize that a file is PostScript, PJL, or PCL by examining the first couple of bytes of a file and applying a simple set of rules. If you require more elaborate file type detection then you can configure ifhp to also use the UNIX file utility if it is unable to determine the file type. See ftp://ftp.astron.com/pub/file/ or ftp://ftp.lprng.com/pub/LPRng/UNIXTOOLS/file/ to obtain this software.

LPRng Print Spooler

http://www.lprng.com The ifhp filter works best with the later versions of this software, and the two are developed as an integrated unit.

GhostScript

http://www.cs.wisc.edu/~ghost/index.html or http://www.ghostscript.com If your printer does not handle PostScript and you need to print PostScript, GhostScript is used to convert PostScript to a format usable by the printer.

a2ps - Ascii Text To PostScript Converter

If your printer is a PostScript only printer or you wish to have enhanced formatting capability for documents, then you will need a text to PostScript converter. http://www-inf.enst.fr/~demaille/a2ps/ This package does a very good job of text to PostScript conversion. It also makes use of the file utility to determine the required conversions.

enscript - GNU Enscript

http://www.gnu.org/ This package is an alternative to a2ps, but requires careful handling due to the exit codes it produces. Please see Wrappers For Programs for details on how to use enscript with ifhp.

textps

This program is included with the ifhp distribution and is an extremely primitive text to PostScript filter. It generates PostScript compatible with even the most ancient of PostScript printers and is useful where a2ps and enscript are just too modern. See http://www.lprng.com.

psutils

The psutils package developed by Angus Duggan is available from ftp://ftp.dcs.ed.ac.uk/pub/ajcd/. These are a collection of programs for manipulation of PostScript files, and include facilities for doing page selection, page reversal, n-up printing, and watermarking.

netcat

The netcat utility is extremely useful when trying to send files to a network printer and you need to monitor its activity. Developed by , it is available from ftp://avian.org/src/hacks/nc110.tgz.




2.2. Installation

The installation procedure uses the configure facility to generate Makefiles. By convention, these files have the following variables that install the ifhp executables and configuration files in the following locations:

Table 2-1. Configure File Location Variables

Configure Variable Default Value Expanded Default Value Override
${prefix} /usr/local --prefix=PATH  
${exec_prefix} ${prefix} /usr/local --execprefix=PATH
${bindir} ${exec_prefix}/bin /usr/local/bin --bindir=PATH
${sbindir} ${exec_prefix}/sbin /usr/local/sbin --sbindir=PATH
${libexecdir} ${exec_prefix}/libexec /usr/local/libexec --libexecdir=PATH
${sysconfdir} ${prefix}/etc /usr/local/etc --sysconfdir=PATH
${mandir} ${prefix}/man /usr/local/man --mandir=PATH

The following files are installed as shown below:

Table 2-2. Executable and Configuration File Locations

Configure Variable Files
${libexecdir}/filters lpf, ifhp
${sysconfdir} ifhp.conf
${mandir}/man[1-9] man pages


The configuration you choose should match that of the LPRng print spooler. For example:

    ./configure --prefix=/usr --sysconfdir=/etc \
      --mandir=/usr/share/man
    
    executables and files in
       /usr/libexec/filters         ifhp
       /etc                         ifhp.conf
       /usr/share/man/man[0-9]      ifhp.man1


First, we untar, configure, compile, and install the software:

    h4: {1} % gunzip -c ifhp-<version>.tgz | tar xvf -
    h4: {2} % cd ifhp-<version>
    h4: {3} % ./configure  [ ... configuration options ]
    h4: {4} % make clean all
    h4: {5} % su   # you must do the following commands as root
    h4: {6} # make install


Modify your printcap file to use ifhp. Your printcap usually has the following format; older version of lpd require :\ at the end of each line of a printcap entry. The :if and :of filter entries are usually the ones of interest.

    lp:
      :lp=xxxx:sd=xxxx:....
      :if=/usr/local/path_to_old_filters/old_if_filter
      :of=/usr/local/path_to_old_filters/old_of_filter


Your new printcap entry will look like the one below. The MODEL information is described in the next section.

    lp:
      :lp=xxxx:sd=xxxx:....
      #  see text for details about the next line
      :ifhp=model=MODEL,status@
      :filter=/usr/local/libexec/filters/ifhp
      # only if you are using accounting or banners
      #:of=/usr/local/libexec/filters/ifhp


Select a suitable printer from the entries in the configuration file (/usr/local/etc/lpd.conf or /etc/lpd.conf). These are described in more detail in the next section.

Shut down and restart your print spooler and then send a job to the printer. If this works and you do not need any further capabilities of ifhp such as error reporting or printer monitoring, then you are finished.

If you want to use additional capabilities, then you should read the detailed instructions in the next couple of sections.


2.3. Printer Models Supported

There are over 500 different printer models, types and configurations supported by ifhp. If your printer is not currently supported and you have documentation about the printer then send mail to the LPRng Mailing List and support will be added.

The default printer is an HP LaserJet 4MP, which supports PostScript Level 3, PCL5, PJL, and has bidirectional communication and a functional pagecounter.

The ifhp.conf configuration file contains configuration entries for various models of printers. Each entry has a name usually corresponding to the model of printer or its basic capabilities. For example, the HP LaserJet 4 printer has the model=hp4 configuration entry. The default printer configuration covers a wide range of network printers manufactured by Hewlett-Packard, Canon, Epson, and others and is for a printer that has a bidirectional communications connection that allows it to report status information and the following capabilities:

  1. PJL support (pjl) compatible with HP 4 family of printers

  2. PostScript (PS) support (ps).

  3. PCL support (pcl).

  4. Text files printed as PCL (text, default_language=pcl).



There is also support for PostScript only printers (model=ps), Tektronics Phasers (model=phaser), QMS (model=qmsXXX) and others. The best way to determine the printers currently supported is to examine the ifhp.conf file. The following is a sample of the various entries in the configuration file.

Table 2-3. ifhp.conf Configuration Entries

Configuration Printer Supported
default Generic Printer based on HP 4M Plus, PostScript, PJL, HPGL2, PCL, status, pagecount support
apple Generic PostScript printer, text to PS conversion, status, pagecount support
postscript Generic PostScript printer, text to PS conversion, status, pagecount support
ps Generic PostScript printer, text to PS conversion, status, pagecount support
pcl Generic PCL only printer, no status
pcl_gs HP LaserJet 4 PCL only printer, write only, no status
hpiiisi HP LaserJet III (PCL and PostScript Interpreter)
hp3si HP LaserJet III (PCL and PostScript Interpreter)
ljet3 HP LaserJet III (PCL and PostScript Interpreter)
lj3 HP LaserJet III (PCL and PostScript Interpreter)
hpiiisi.gs HP LaserJet III (PCL, PostScript via GhostScript)
hp3si.gs HP LaserJet III (PCL, PostScript via GhostScript)
ljet3.gs HP LaserJet III (PCL, PostScript via GhostScript)
lj3.gs HP LaserJet III (PCL, PostScript via GhostScript)
hp4 HP LaserJet 4 Family, HP LaserJet 4 (PostScript Interpreter)
hp4m HP LaserJet 4 Family, HP LaserJet 4m (PostScript Interpreter)
hp4si HP LaserJet 4 Family, HP LaserJet 4si (PostScript Interpreter)
hp4simx HP LaserJet 4 Family, HP LaserJet 4simx (PostScript Interpreter)
hp4plus HP LaserJet 4 Family, HP LaserJet 4plus (PostScript Interpreter)
hp4mplus HP LaserJet 4 Family, HP LaserJet 4mplus (PostScript Interpreter)
hp4v HP LaserJet 4 Family, HP LaserJet 4v (PostScript Interpreter)
hp4mv HP LaserJet 4 Family, HP LaserJet 4mv (PostScript Interpreter)
hp4p HP LaserJet 4 Family, HP LaserJet 4p (PostScript Interpreter)
hp4mp HP LaserJet 4 Family, HP LaserJet 4mp (PostScript Interpreter)
hp4pj HP LaserJet 4 Family, HP LaserJet 4pj (PostScript Interpreter)
hpljpro HP LaserJet 4 Family, HP LaserJet ljpro (PostScript Interpreter)
hp4lc HP LaserJet 4 Family, HP LaserJet 4lc (PostScript Interpreter)
hp4mplus HP LaserJet 4MPlus
hp5l HP LaserJet 5 Family, Hp LaserJet 5l
hp6l HP LaserJet 6 Family, Hp LaserJet 6l
hp1100 HP LaserJet 6 Family, Hp LaserJet 1100
hp1100 HP LaserJet 1000 Family, Hp LaserJet 1100
hp4l Hp LaserJet 4L, PCL only
hp4ml HP LaserJet 4ml
hp5p HP LaserJet 5p
hp5mp HP LaserJet 5mp
hp6p HP LaserJet 6p
hp6mp HP LaserJet 6mp
hp5 HP LaserJet 5
hp5si HP LaserJet 5si
hp5simx HP LaserJet 5simx
hp5m HP LaserJet 5m
hp4100 HP LaserJet 4100
hp4200 HP LaserJet 4200
hp4300 HP LaserJet 4300
hp5simopier HP LaserJet 5simopier
hp4000 HP LaserJet 4000
hpcolorlj HP Color LaserJet
hpcolorlj5 HP Color LaserJet 5
hpcolorlj5m HP Color LaserJet 5m
hpdj1200 HP DesignJet 1200 Family
hppjxl300 HP PaintJet XL 300 Family
hpdj1600 HP DesignJet 1600 Family
hpdj200 HP DeskJet 200
hpdj220 HP DeskJet 220
hpdj600 HP DeskJet 600
hpdj650 HP DeskJet 650
hpdj230 HP DeskJet 230
hpdj250c HP DeskJet 250c
hpdj330 HP DeskJet 330
hpdj350c HP DeskJet 350c
hpdj430 HP DeskJet 430
hpdj450c HP DeskJet 450c
hpdj455ca HP DeskJet 455ca
hpdj700 HP DeskJet 700
hpdj750c HP DeskJet 750c
hpdj750cplus HP DeskJet 750cplus
hpdj755cm HP DeskJet 755cm
hpdj2000cp HP DeskJet 2000cp
hp2500 HP DesignJet 2500 - No PCL, PostScript Only
hp2500cm HP DesignJet 2500cm - No PCL, PostScript Only
hp2500c HP DesignJet 2500c - No PCL, PostScript Only
hp2500cm HP DesignJet 2500cm - PCL and PostScript
hpdj2500cp HP DesignJet 2500CP, not HP2500, HP2500c, HP2500cm
hp4500 HP Color LaserJet Printer 4500
hp8500 HP Color LaserJet Printer 8500
hp8550 HP Color LaserJet Printer 8550
hp4550n HP 4550N
hp5000 HP 5000 Model C4111A (LaserJet 5000)
hp8000 HP LaserJet 8000 Series, HP8000
hp8100 HP LaserJet 8000 Series, HP8100
hp8150 HP LaserJet 8000 Series, HP8150
hp2100 HP LaserJet 2100 Series
hp2200 HP LaserJet 2200 Series
hp4050 HP 4050 Series Printers
qms1725 QMS 1725, uses appsocket, no status, PostScript only
qms2025 QMS Laser Printer QMS 2025, appsocket, no status, PostScript and PCL
qms860 QMS Laser Printer QMS 860, appsocket, no status, PostScript and PCL
qms2060 QMS Laser Printer QMS 2060, appsocket, no status, PostScript and PCL
phaser Tektronics Generic Phaser Color Printer, appsocket, snmp monitoring, PostScript only
phaser360 Tektronics Phaser 360 Color Printer, appsocket, snmp monitoring, PostScript only
phaser740 Tektronics Phaser 740 Color Printer, appsocket, snmp monitoring, PostScript only
phaser750 Tektronics Phaser 750 Color Printer, appsocket, snmp monitoring, PostScript only
phaser850 Tektronics Phaser 850 Color Printer, appsocket, snmp monitoring, PostScript only
phaser740 Tektronics Phaser 740 Color Printer, appsocket, snmp monitoring, PostScript and PCL
phaser5400 Tektronics Phaser 5400 Color Printer, appsocket, snmp monitoring, PostScript and PCL
phaser7700 Tektronics Phaser 7700 Color Printer, appsocket, snmp monitoring, PostScript and PCL
lexmark4039 Lexmark 4039, Postscript only
lexmark_optra_e312 Lexmark Optra e312, Postscript, PCL and PJL
ln15s Digital Laser LN15, LN17ps, Compaq Laser LN 16
ln16s Digital Laser LN15, LN17ps, Compaq Laser LN 16
ln17pss Digital Laser LN15, LN17ps, Compaq Laser LN 16
hpij2250s HP Business Inkjet 2250
gs_bj10 Canon BubbleJet BJ10e
gs_bj10 Canon BubbleJet BJ20
gs_bj200 Canon BubbleJet BJ200
gs_bj200 Canon BubbleJet BJC-210 B/W only
gs_bj200 Canon BubbleJet BJC-240 B/W only
gs_bj200 Canon BubbleJet BJC-250 B/W only
gs_bj200 Canon BubbleJet BJC-70 B/W only
gs_bjc600 Canon BubbleJet BJC-600
gs_bjc600 Canon BubbleJet BJC-610
gs_bjc600 Canon BubbleJet BJC-50
gs_bjc600 Canon BubbleJet BJC-70
gs_bjc600 Canon BubbleJet BJC-80
gs_bjc600 Canon BubbleJet BJC-210 Color only
gs_bjc600 Canon BubbleJet BJC-240 Color only
gs_bjc600 Canon BubbleJet BJC-250
gs_bjc600 Canon BubbleJet BJC-1000
gs_bjc600 Canon BubbleJet BJC-2000
gs_bjc600 Canon BubbleJet BJC-4000
gs_bjc600 Canon BubbleJet BJC-4100 B/W only
gs_bjc600 Canon BubbleJet BJC-4200
gs_bjc600 Canon BubbleJet BJC-4300
gs_bjc600 Canon BubbleJet BJC-4550
gs_bjc600 Canon BubbleJet BJC-6000
gs_bjc600 Canon MultiPASS C2500 color printer/fax/copier
gs_bjc800 Canon BubbleJet BJC-800
gs_bjc800 Canon BubbleJet BJC-7000 Color.
gs_bjc800 Canon BubbleJet BJC-4300 Color
gs_bjc800 Canon BubbleJet BJC-4650
gs_deskjet HP DeskJet
gs_deskjet HP DeskJet Plus
gs_djet500 HP DeskJet 500 B/W
gs_djet500 HP DeskJet Portable B/W
gs_djet500 HP OfficeJet 590 B/W
gs_cdj500 HP DeskJet 400
gs_cdj500 HP DeskJet 500C
gs_cdj500 HP DeskJet 540C
gs_cdj500 HP DeskJet 690C
gs_cdj500 HP DeskJet 693C
gs_cdj550 HP DeskJet 550C
gs_cdj550 HP DeskJet 560C
gs_cdj550 HP DeskJet 600
gs_cdj550 HP DeskJet 660C
gs_cdj550 HP DeskJet 660C
gs_cdj550 HP DeskJet 682C
gs_cdj550 HP DeskJet 683C
gs_cdj550 HP DeskJet 693C
gs_cdj550 HP DeskJet 694C
gs_cdj550 HP DeskJet 690C
gs_cdj550 HP DeskJet 692C
gs_cdj550 HP DeskJet 693C
gs_cdj550 HP DeskJet 694C
gs_cdj550 HP DeskJet 695C
gs_cdj550 HP DeskJet 850
gs_cdj550 HP DeskJet 870Cse
gs_cdj550 HP DeskJet 895Cxi
gs_cdj550 HP DeskJet 970
gs_cdj550 HP OfficeJet 590
gs_cdj550 Olivetti jp450
gs_cdj550 Xerox XJ6C, PCL and Postscript using GhostScript
gs_cdj850 HP DeskJet 850
gs_cdj850 HP DeskJet 855
gs_cdj850 HP DeskJet 870Cse
gs_cdj850 HP DeskJet 870Cxi
gs_cdj850 HP DeskJet 890C
gs_cdj850 HP DeskJet 670C
gs_cdj850 HP DeskJet 680
gs_cdeskjet HP DeskJet 500C
gs_cdjmono HP DeskJet 500C
gs_cdjmono HP DeskJet 510
gs_cdjmono HP DeskJet 520
gs_cdjmono HP DeskJet 540C
gs_cdjmono HP DeskJet 693C
gs_epsonc Fujitsu DL-1100
gs_epsonc Fujitsu DL-2400
gs_hl7x0 Brother HL-720
gs_hl7x0 Brother HL-730
gs_laserjet Bull Compuprint Pagemaster 415
gs_lips3 Canon LBP4+
gs_lj4dith HP DeskJet 600
gs_ljet2 HP LaserJet II
gs_ljet2 Xerox 4030 - PCL, PostScript support using GhostScript
gs_ljet3 Tandy LP800 With LaserJet III emulation.
gs_ljet4 Brother HL-660
gs_ljet4 Brother HL-760 600dpi
gs_ljet4 Epson EPL5700 300dpi OK
gs_ljet4 HP DeskJet 600 margins wrong
gs_ljet4 HP DeskJet 870Cse
gs_ljet4 HP LaserJet 5 300dpi or 600dpi
gs_ljet4 HP LaserJet 5L 300dpi or 600dpi
gs_ljet4 HP LaserJet 6L 600dpi
gs_ljet4 HP LaserJet 1100 600dpi OK.
gs_ljet4 IBM Network Printer 17
gs_ljet4 IBM/Lexmark 4029 Margins wrong.
gs_ljet4 Lexmark Optra E+
gs_ljet4 Lexmark Optra SC 1275 B/W only.
gs_ljet4 Oki OL410ex LED printer 300dpi or 600dpi
gs_ljetplus HP LaserJet Plus
gs_ljetplus Canon Laser LBP-600
gs_ljetplus NEC SuperScript 860
gs_pjxl300 HP PaintJet XL300
gs_pjxl300 HP DeskJet 600
gs_pjxl300 HP DeskJet 1200C
gs_pjxl300 HP DeskJet 1600C
gs_r4081 Ricoh 4081 laser printer
gs_r4081 Ricoh 6000 laser printer
bjc610a0.upp Canon BubbleJet BJC-610 (color, rendered) 360x360dpi plain paper, high speed
bjc610a1.upp Canon BubbleJet BJC-610 (color, rendered) 360x360dpi plain paper
bjc610a2.upp Canon BubbleJet BJC-610 (color, rendered) 360x360dpi coated paper
bjc610a3.upp Canon BubbleJet BJC-610 (color, rendered) 360x360dpi transparency film
bjc610a4.upp Canon BubbleJet BJC-610 (color, rendered) 360x360dpi back print film
bjc610a5.upp Canon BubbleJet BJC-610 (color, rendered) 360x360dpi fabric sheet
bjc610a6.upp Canon BubbleJet BJC-610 (color, rendered) 360x360dpi glossy paper
bjc610a7.upp Canon BubbleJet BJC-610 (color, rendered) 360x360dpi high gloss film
bjc610a8.upp Canon BubbleJet BJC-610 (color, rendered) 360x360dpi high resolution paper
bjc610b1.upp Canon BubbleJet BJC-610 (color, rendered) 720x720dpi plain paper
bjc610b2.upp Canon BubbleJet BJC-610 (color, rendered) 720x720dpi coated paper
bjc610b3.upp Canon BubbleJet BJC-610 (color, rendered) 720x720dpi transparency film
bjc610b4.upp Canon BubbleJet BJC-610 (color, rendered) 720x720dpi back print film
bjc610b6.upp Canon BubbleJet BJC-610 (color, rendered) 720x720dpi glossy paper
bjc610b7.upp Canon BubbleJet BJC-610 (color, rendered) 720x720dpi high-gloss paper
bjc610b8.upp Canon BubbleJet BJC-610 (color, rendered) 720x720dpi high resolution paper
cdj550.upp HP DeskJet 550C 300x300dpi 32-bit CMYK
necp2x.upp NEC P2X 360x360dpi 8-bit (Floyd-Steinberg)
stcany.upp Epson Stylus Color (Any) 360x360dpi 4-bit, PostScript halftoning
stc.upp Epson Stylus (Original) and Stylus Pro Color 360x360dpi 32-bit CMYK, 15-pin
stc_l.upp Epson Stylus (Original) and Stylus Pro Color 360x360dpi 4-bit, PostScript halftoning, weaved noWeave
stc_h.upp Epson Stylus (Original) and Stylus Pro Color 720x720dpi 32-bit CMYK, 15-pin Weave
stc2.upp Epson Stylus (Original) and Stylus Pro Color 360x360dpi 32-bit CMYK, 20-pin, Epson Stylus Color II(s)
stc2_h.upp Epson Stylus (Original) and Stylus Pro Color 720x720dpi 32-bit CMYK, 20-pin, Epson Stylus Color II
stc2s_h.upp Epson Stylus (Original) and Stylus Pro Color 720x720dpi 32-bit CMYK, 20-pin, Epson Stylus Color IIs
stc500p.upp Epson Stylus Color 500 360x360dpi 32-bit CMYK, noWeave, plain paper
stc500ph.upp Epson Stylus Color 500 720x720dpi 32-bit CMYK, noWeave, plain paper
stc600pl.upp Epson Stylus Color 600, 360x360dpi, 32/90-inch weaving 32-bit CMYK, 32-pin, plain paper
stc600p.upp Epson Stylus Color 600, 720x720dpi, 32/90-inch weaving 32-bit CMYK, 32-pin, plain paper
stc600ih.upp Epson Stylus Color 600, 1440x720dpi, 32/90-inch weaving 32-bit CMYK, 30-pin, inkjet paper
stc800pl.upp Epson Stylus Color 800, 64/180-inch weaving 360x360dpi 32-bit CMYK, 64-pin, plain paper
stc800p.upp Epson Stylus Color 800, 64/180-inch weaving 720x720dpi 32-bit CMYK, 64-pin, plain paper
stc800ih.upp Epson Stylus Color 800, 64/180-inch weaving 1440x720dpi 32-bit CMYK, 62-pin, inkjet paper
stc1520h.upp Epson Stylus Color 800, 64/180-inch weaving 1440x720dpi 32-bit CMYK, 62-pin, inkjet paper
imagerunner550 Canon imageRUNNER 550/600 iR600-550-60
imagerunner600 Canon imageRUNNER 550/600 iR600-550-60
hpdj800ps HP DesignJet 800ps
panther Sharp Generic Panther Family, PS and PCL, uses SNMP for status and pagecount
ar-160 Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount
ar-161 Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount
ar-162 Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount
ar-162s Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount
ar-163 Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount
ar-164 Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount
ar-200 Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount
ar-200s Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount
ar-201 Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount
ar-205 Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount
ar-206 Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount
ar-207 Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount
ar-f201 Sharp %, Panther Family, PS and PCL, uses SNMP for status and pagecount
cougar Sharp Generic Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-335 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-336 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-337 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-s337 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-405 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-407 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-505 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-s505 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-507 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-s507 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-250 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-280 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-281 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-285 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
ar-286 Sharp %, Cougar Family, PS and PCL, uses SNMP for status and pagecount
leopard Sharp Generic Leopard Family, PS and PCL, uses SNMP for status and pagecount
ar-235 Sharp %s, Leopard Family, PS and PCL, uses SNMP for status and pagecount
ar-275 Sharp %s, Leopard Family, PS and PCL, uses SNMP for status and pagecount
ar-n275 Sharp %s, Leopard Family, PS and PCL, uses SNMP for status and pagecount
ar-m208 Sharp %s, Leopard Family, PS and PCL, uses SNMP for status and pagecount
tiger Sharp Generic Tiger Family, PS and PCL, uses SNMP for status and pagecount
ar-p350 Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount
ar-m350 Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount
ar-m350u Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount
ar-m350n Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount
ar-p450 Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount
ar-m450 Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount
ar-m450u Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount
ar-m450n Sharp %, Tiger Family, PS and PCL, uses SNMP for status and pagecount
toshiba650 Sharp Generic Toshiba650 Family, PS and PCL, uses SNMP for status and pagecount
ar-650 Sharp %, Toshiba650 Family, PS and PCL, uses SNMP for status and pagecount
ar-800 Sharp %, Toshiba650 Family, PS and PCL, uses SNMP for status and pagecount
fiery651 Sharp Generic Fiery651 Family, PS and PCL, uses SNMP for status and pagecount
ar-651 Sharp %, Fiery651 Family, PS and PCL, uses SNMP for status and pagecount
ar-810 Sharp %, Fiery651 Family, PS and PCL, uses SNMP for status and pagecount


If your printer is not in this this list then you can use the following guidelines. If you have a PostScript only printer you should use the ps model. If you have a PCL only printer, then pcl is recommended. If you want to process PostScript files on your PCL only printer then install GhostScript and use pcl_ps entry and select the GhostScript driver suitable for your printer.

The other model entries are used when specific printer functionality or features are needed. For example, if you want to do accounting or use landscape mode, then you should check for your specific printer model in the configuration file.


Chapter 3. Recommended -Z options for Users

Due to the general nature of the ifhp filter, there is no standard set of -Z user options because there is no standard set of user facilities. However, the following are recommended for use by implementors of new configurations or printer support.


3.1. Input Tray Selection

If a printer supports an input tray selection mechanism, then the following options are recommended for use. Local conditions or printer type may require addition options.

inupper, inlower, intray1, intray2, ..., manual, envelope

The input tray selection options should start with the in prefix and correspond to the various trays, if possible. The manual and envelope options are included to select manual feed or envelope feed. There is a possible source of conflict here as there may be an envelope feeder as well as an envelope media. This is a printer specific dependency.

source=name

The key=value form allows users to use options such as -Zsource=inbin1, which may be useful for systems that have an unusual or nonstandard input selection mechanism.




3.2. Output Bin Selection

If a printer has an output bin selection mechanism or some other finishing mechanism, then the following are recommended for use.

outupper, outlower, outbin1, ...

The output bin selection should start with the out prefix.

outbin=name

The outbin=name form allow users to use options such as -Zoutbin=stapler, which may be useful for systems that have an unusual or nonstandard output selection mechanism.




3.3. Media Size (Paper) Selection

The paper size selection facilities usually are quite printer dependent, and the input tray selection and paper size selection mechanisms may interact in strange and mysterious ways.

letter, legal, ledger, oversize, a0, a1, ...

These are standard paper size names.

11x17, tabloid

These are usually aliases for ledger, but depending on local conditions can select different types of paper.

paper=name

The paper=name form allow users to use options such as -Zpaper=b3, which may be useful for systems that have an unusual or nonstandard input media selection mechanism.




3.4. Media Type Selection

Media Type is not the same as paper size, and corresponds to the name assigned to a particular media. Of course, the issue is complicated by the fact that some media have standard sizes as well. Again, the input tray selection, media size, and media type selection will interact in confusing and mysterious ways, depending on the whim of the printer firmware implementors.

You will also notice that there is no general mediatype=name selection mechanism. This is due to the extremely different way that the media names must be passed for PostScript, PJL, and PCL.

plain, preprinted, letterhead, transparency, glossy, prepunched, labels

These are commonly used media type names gleaned from various PostScript Printer Description Files, Microsoft printer drivers, and arcane lore of the Printer Working Group. Note that these are not accepted terms in the paper industry for any of these type of media. You are warned.




3.5. Duplex and Simplex

Duplex printing is when impressions are placed on both sides of a sheet of media. Due to a general lack of conventions, the orientation of each of the impressions varies from vendor to vendor, and has changed over the years.

duplex, lduplex

Print on both sides using the default orientation. The lduplex is an alias for duplex

duplexshort, sduplex

Print on both sides but reverse the orientation of one page. The sduplex is an alias for duplexshort Which page is reversed is at the whim of the firmware implementors and conventions for the printer.

simplex

Print on a single side of a page

tumble, shortedge

This is use to print a single page on one side of the media, but using the (nonstandard) orientation for the duplexshort. This is usually done when a single impression must be generated on the alternative side of the media, rather than the default side. Again, this is dependent on the whims and whimsies of the printer firmware implementors, and may have some unexpected side effects.




3.6. Copies

This option has been provided to effectively allow the printer to make multiple copies of a single page or job. This option tends to be misimplemented on almost all known printers, and it is strongly recommended that users do not use it. However, for completeness, compatibility, and implementor consideration, this is included, even against the better judgement of the implementors of the ifhp software.

copies=nnn

Attempt to make nnn copies of each impression. This usually fails with catastrophic problems unless you have a system that supports all of the various options required, has enough memory to handle rasterization, you do not have a paper outage, and the printer does not stop with operator intervention. You have been warned.




Chapter 4. Printer Capabilities, Configurations, and Printcaps

One of the major difficulties with printer software is dealing with the wide range of different printer hardware configurations and printer connections. This section outlines the printer communication methods, the types of print job languages, and the effects of these on printing software and the ifhp filter.


4.1. Printer Configurations

A printer consists of a hardware print engine which marks the output page and delivers it, a set of control hardware that takes a print job in a well defined format and operates the hardware to produce output according to information in the print job, and a communication channel from the computer to the control hardware. The control hardware is sometimes called a print engine. In most modern computers the control hardware may consist of multiple microprocessors, each with their own firmware, and each performing a specific printing task. For example, one may control the paper feed path, one may do rasterization, and one may handle communications with the outside world.

In order to set up printing correctly, it is necessary to know the following information about your printer.

  1. The capabilities of the hardware. This is dependent on the model of printer, and may be such things as the page feed, output and input tray selection, numbers of columns and/or rows of output available on the output device. This information is readily available from most manufacturers.

  2. The print job language recognized by the control hardware. This is the special set of codes, commands, and formats recognized by the control hardware.

  3. The protocol used to send jobs to the printer and obtain status about the printing activity.



Usually the capabilities of a modern printer are very well known and documented, and the ifhp filter and most print spooling software has little difficulty working with them.

The following checklist will help you in setting up your printer. The various options that you will need to know about are indicated where appropriate.

  1. Printer Model (model=???) What is the exact printer model? Check the serial number or other identification to get this information. You should check the ifhp.conf configuration file to see if your printer is already supported.

  2. Print Languages Supported By Your Printer

    1. PJL? (pjl or pjl@) The Printer Job Language (PJL) is a high level language supported by many Hewlett-Packard printers that allows some print system configuration to be performed. Due to historical developments, not all printers support all PJL language facilities, and some support them in different ways than other printers. The ifhp filter can use the PJL support for a printer if it is available.

    2. PostScript (and what version)? (ps or ps@) PostScript is the most common print job language in use. If your printer supports PostScript, then you will have a relatively trouble free time with it. One problem is that it requires a fairly substantial amount of memory and computational support, and is usually not found on the low end (less than $500) printers.

    3. PCL? (pcl or pcl@) PCL is another Print Language supported by many vendors, including Hewlett-Packard, Lexmark, and others. It is essentially text with escape sequences to tell the print engine to place markings on a page at specific places in a specific font. It is the second most common format used with modern printers.

    4. Text? (text or text@) Text is really just PCL without any control sequences. However, it is easy to have ifhp convert ordinary text into PCL by prefixing the appropriate PCL control codes. You may also need to use the crlf option to force CR to CR-LF translation. If you have a simple text printer then you may want to use the much easier to configure lpf filter from the LPRng distribution (http://www.lprng.com).

    5. Vendor Specific There is a growing trend to have very proprietary Print Languages for very low end (less than $300) printers. These printers usually require all of their jobs to be preformated by software running on the host and to have the job delivered to them in a specific manner. If you have one of these printers, you will need to get a rasterizing program that produces the correct format. Check to see if GhostScript, supports your printer. If it does then you can use GhostScript to translate PostScript to your printer's required format.



  3. Memory Size. If you are going to be sending large print jobs or ones with a large amount of graphics to the printer, you will need a substantial amount of memory to deal with rasterization. Most high resolution Laser Copier based printers require a minimum of 16 megabytes for adequate performance, and if you are printing complex PostScript or PDF documents you may want at least 32 megabytes. Color printers require substantially more and 64 megabytes is not uncommon.

  4. Communications. The connection between your printer and the host computer.

    1. Network Connection This is the most reliable and high speed way to connect a printer to a system. This is especially true if a printer must be accessible to multiple users and is located at a distance from the user.

    2. Parallel Port (status@) The parallel port is a unidirectional communications channel and does not do full duplex bidirectional communications. Some operating system support bidirectional communications, but they do so by requiring write operations to alternate with read operations.

    3. Serial Ports This is the very worst way to communicate at high speed with a printer. Serial ports usually have a high error rate, suffer from data overruns, and have a severe impact on system performance. You will need to configure your printer speed, format (bits per character, parity, stop bit), and flow control method, and then do the same for the host. This can be an endless source of frustration for the novice user.

    4. Print Server Box Many older printers do not directly support a network connection and have an external print server box attached to either their serial or parallel ports. If you have the printer connected to a parallel port, then you will still most likely only have unidirectional communication and no status information will be available from the printer.






4.2. Network Communication Protocols

The most high speed and reliable connection to your printer is using a network connection. The following protocols are usually used to communicate with a network printer: RFC1179 (TCP/IP printing), Socket Protocol (TCP/IP), AppSocket Protocol (TCP/IP), Novell Print Protocol (IPX), SMB Print Protocol (TCP/IP), and AppleTalk Print Protocol (TCP/IP).

It is highly recommended that you use TCP/IP networking to communications to talk to your printer, and that you do not enable any other protocol on your printer. If you have two different systems trying to connect to the same printer using different protocols, a wide range of vendor's hardware will lock up and may require a power up reset to recover. Documented evidence for this behavior includes a wide range of printers, including those from Hewlett-Packard, LexMark, IBM and other vendors.

Only the TCP/IP based network job transfer protocols are discussed in this document. For details on using other protocols, please consult the consult the LPRng documentation.


4.3. RFC1179 (BSD or TCP/IP) Job Transfer Printcap Entry

RFC1179 is used to transfer print jobs between a client (user) and a print spooler, or between two print spoolers. Jobs are transferred as a set of files, and the only information exchanged during the transfer process is the success or failure of the transfer. In order to get status about the actual job printing, a separate query status (lpq) is sent to the print spooler.

Many, if not all, printers with a network interface that supports the TCP/IP protocol support the RFC1179 protocol for job transfer. However, their support for print job status is usually minimal to non-existent. If you want to send a job to a printer using the RFC1179 protocol, please be aware of the following problems.

Normally a print spooler (System 5 lp, BSD lpd, LPRng) does not modify a print job when forwarding it to another print spooler. This means that your print job will normally pass from the originating lp or lpr program to the destination printer with no changes. This can have disastrous results if the job requires filter processing.

If you are using the LPRng print spooler, job transfers using RFC1179 is specified by using :lp=spoolqueue@host or :rp=spoolqueue:rm=host printcap entries. For example:

    raw:
      :lp=raw@host
      :sh:sf:mx=0
      :sd=/var/spool/lp
    cooked:
      :rp=cooked:rm=host
      :sh:sf:mx=0
      :sd=/var/spool/lp
      :filter=/usr/local/libexec/filters/ifhp


The raw queue does not have a filter and jobs sent to the raw are transfered intact from the raw queue to the destination raw printer on the host server.

Jobs sent to the cooked queue will be processed by the program specified by the filter option. For each data file in the job, the lpd print spooler will open a temporary file to hold the filter output, and then run the filter program with its STDIN set to the job's data file file and the STDOUT set to the temporary file. The filter STDERR will be recorded in an error log.

When a job is created a job format may specified (default is f), and an filter can be specified to process job files with this format. The :i<format> option specifies the filter program for use. For example, you can specify a different filter for the n format as shown below. The translate_format option specifies the resulting format for the processed files, and uses a format similar to the UNIX try(1) program. In the example, it specifies that the output of the filter for the n format be renamed as f.

    cooked:
      :rp=cooked:rm=host
      :sh:sf:mx=0
      :sd=/var/spool/lp
      # default filter
      :filter=/usr/local/libexec/filters/ifhp
      # n filter
      :nf=/usr/local/libexec/filters/nfilter
      :translate_format=nf


There is a final option that is used when rather than having a set of job files forwarded to a printer, a single job file is desireable. This is usually the case when sending a job to a host or printer that has a defective RFC1179 spooler implementation, and drops or misprints jobs with multiple files in them. The lpd_bounce option causes the output of all the filters to be put into a single file, and the output is then forwarded to the destination. You can also use the bq_format option to specify the format of the job:

    cooked:
      :rp=cooked:rm=host
      :sh:sf:mx=0
      :sd=/var/spool/lp
      # default filter
      :filter=/usr/local/libexec/filters/ifhp
      :lpd_bounce
      # output has l (literal) or binary output
      :bq_format=l


The lpr -l or lpr -b flag is used to specify the special literal or l job format. Job that have the l format usually have only the most perfunctory processing done by the filter.


4.4. Socket Protocol (TCP/IP) Operation Printcap Entry

Many printers with a network interface provide a TCP/IP port that is a direct connection to the internal print engine. If a TCP/IP connection is made to this port and a file is sent over this connection, then the print engine will process the file. More importantly, the connection is bidirectional, and the printer will report errors and status conditions over the connection. PJL and PostScript status request commands can be sent to the printer and the printer will respond with information.

The ifhp filter makes extensive use of this protocol, and provides support for status and error reporting. In cooperation with the LPRng print spooler, it will provide a detailed description of the actual print job progress and any error conditions that arise.

To use a Socket connection with LPRng, you use the :lp=host%port printcap entry shown below. The lpd print spooler will open a connection to the TCP/IP port on host and passes the (bidirectional) connection to the ifhp filter on file descriptor 1 (STDOUT) and the file to be printed on file descriptor 0 (STDIN). Errors and status information are reported by the ifhp filter on file descriptor 2 (STDOUT) and placed in the error status log by the lpd print spooler.

The connection made by the lpd server to the printer is persistent over the entire job; all file transfers for the same job are made over the same connection. This is important as it prevents other printer users from hijacking the printer in the middle of print a job and getting your job outputs mixed together.

The following is a typical printcap entry using the socket protocol.

    raw:
      :lp=host%9100
      :sh:sf:mx=0
      :sd=/var/spool/lp
      :filter=/usr/local/libexec/filters/ifhp



4.5. Appsocket Protocol (TCP/IP) Operation

The Tektronics Phaser Series printers and QMS printers use the Appsocket protocol when sending a job to the printer. This protocol uses two ports: a TCP/IP listening port which accepts TCP/IP connections and a UDP SNMP query port that is used to obtain status information.

The Appsocket protocol is (briefly):

  1. The Simple Network Management Protocol (SNMP) is a UDP protocol. A SNMP Query packet containing a request for information is sent to the printers SNMP Agent port (port 161), and a reply containing the requested information is returned.

  2. To send a job to the printer, a TCP/IP connection is opened to the TCP/IP port and job data is sent. Only a single job can be sent at a time - a EOJ in the job, i.e.- CTRL-D for PostScript or ESC E for PCL will cause the printer to terminate reading from the TCP/IP port, and after job processing has finished, to close the TCP/IP connection. All input after the EOJ may be ignored by the printer and not processed.

  3. While processing the job, if bidirectional support is available and has been enabled the printer will return job status or information until all of the print job which is has received has been processed. This support is usually not enabled by default and must be enabled by using a specialized administration interface or configuration tool.

  4. Unfortunately, some printers will also close the connection when the EOJ has been received. These printers are virtually useless when trying to get error or status information about a job.

  5. Even more annoying is the behavior of some printers that insist on the network connection remaining open until the job has been processed. The device sending the job to the printer must do a shutdown on the sending direction of the network connection, and then read status information from the receiving direction until the printer terminates the connection. Unfortunately, some printers do not terminate the connection, and the the user must close the connection after a suitable timeout.

  6. There are also printers that insist on the network connection being closed before they will start processing small jobs. The device sending the job to the printer must do a close rather than a shutdown.

  7. While processing the job, the printer will ignore any connection requests, and only until the job has been processed will the printer accept connections.

  8. During job processing, status and error indications can be obtained by sending a query to the UDP port. However, the error conditions and other information are not very precise as the status may change dramatically during job processing.

  9. a query to the UDP port. However, the error conditions and other information are not very precise as the status may change dramatically during job processing.



The Appsocket protocol does not use a persistent connection. If two people are sending jobs to the printer simultaneously it is very likely that the jobs will get intermixed.

The appsocket option causes the ifhp filter to open and close a TCP/IP connection to the printer. In order to reopen the device, ifhp needs the device name. It gets this from the PRINTCAP_ENTRY environment variable which has the device information, or by using the TCP/IP address of the initial end of the connection.

The close_appsocket option causes the ifhp filter to close the connection after sending a job or part of a job. This is necessary with printers that will not start printing small jobs until a sufficient number of pages has been received.

The following is a sample printcap entry for this printer:

    # Phaser Setup
    #  Appsocket
    lp:server  
      :lp=10.0.0.1%9100  
      :sd=spooldir  
      :...  
      :ifhp=model=ps,appsocket
      #path to ifhp filter  
      :filter=/.../ifhp


For your convenience, the model=phaser entry is suitable for use with the appsocket protocol.


4.6. Using SNMP For Status Information

  • snmp_monitor FLAG use snmp for status

  • snmp_program= path to snmp_printer_status

  • snmp_program_cfg= snmp_printer_status configuration file

  • snmp_model=snmp model information

  • snmp_sync_status=sync indicators

  • snmp_end_status=end of job indicators

  • snmp_end_status=end of job indicators

The ifhp filter can be configured to use the SNMP helper program snmp_printer_status to obtain SNMP status. This program is supplied as part of the ifhp distribution.

The snmp_monitor flag is used to enable the use of the snmp_printer_status program. The snmp_program specifies the program path and command line to invoke it. The snmp_program_conf specifies the path to the configuration file, snmp_printer_stastus.conf. The configuration file contains information about the operation of the program as well as the SNMP Object Identifiers (OIDs) for the status information.

Since different printers may not support all of the standard Printer MIB Oids, the snmp_printer_status.conf can identify the options on a per-printer model basis, and the appropriate ones can be selected using the snmp_model option.

The snmp_printer_status program returns status information on it STDOUT and errors on its STDERR. The status information has the format:

    PRINTERNAME=HP LaserJet 2200
    DEVICEID=HP LaserJet
    STATUS=Ready
    DEVICESTATUS=running
    PRINTERSTATUS=idle
    PAGECOUNT=30
Consult the snmp_printer_status program and snmp_printer_status.conf files for details of how the status is obtained.

When using snmp to detect idle or end conditions, the snmp_sync_status and the snmp_end_status values are used. If the retured status matches a field in the snmp_sync_status list, then a idle printer condtion is assumed. If the retured status matches a field in the snmp_end_status list, then an end of job condtion is assumed. For example:

    snmp_end_status=ready idle
    snmp_sync_status=ready power_save_mode


When using SNMP to obtain status, it may be of little benefit to use other methods to obtain sync, pagecount, or end of job (waitend). Also, if a connection is open to the printer then the printer may never indicate idle or non-printing status. This problem can be avoided by using the appsocket protocol. If you use this, then you should also set the sync, waitend, and pagecount values to snmp as well. For example:

    [ printer ]
    snmp_monitor
    appsocket
    sync=snmp
    waitend=snmp
    pagecount=snmp
This will cause the ifhp to perform the operations but not to send any query strings to the printer.


4.7. Common Print Server Boxes Configuration Information

The following is a list of print server manufacturers, models, and with hints on how to access these boxes with various protocols.

Table 4-1. Network Print Servers

Manufacturer Model RFC1179 Port Name (rp=XXX) Send to TCP port
Digital Products Inc. NETPrint Print Server PORTn, where n is port on server - Unknown if supported -
Electronics For Imaging Inc. Fiery RIP i series normalq or urgentq - Unknown if supported -
Fiery RIP XJ series xjprint - Unknown if supported -
Fiery RIP XJ+ and SI series print_Model, e.g. print_DocuColor - Unknown if supported -
Fiery models ZX2100, ZX3300, X2, X2e print - Unknown if supported -
Emulex Corp. NETJet/NETQue print server PASSTHRU - Unknown if supported -
Extended Systems Inc. ExtendNet Print Server Printern, where n is port on server - Unknown if supported -
Hewlett-Packard JetDirect interface card raw 9100
JetDirect Print Server Port1=raw1, Port2=raw2, ... Port1=9100, Port2=9101, ...
I-Data Easycom 10 Printserver par1 (parallel port 1) - Unknown if supported -
  Easycom 100 Printserver LPDPRT1 - Unknown if supported -
IBM Network Printer 12, 17, 24, and 24PS PASS - Unknown if supported -
Lantronix EPS1, EPS2 EPS_XXXX_S1 (serial) port 1, EPS_XXXX_P1 (parallel) port 2, etc. 3001 (port 1), 3002 (port 2), etc.
QMS Various Models RAW 35 (Appsocket)
Tektronix (Now Xerox) Tektronix printer network cards PS (PostScript), PCL (PCL), or AUTO(Auto-selection between PS, PCL, or HPGL). Not reliable. 9100 (Appsocket on some models)
Rose Electronics Microserve Print Servers lp 9100
Xerox Models 4505, 4510, 4517, 4520 PASSTHRU 2501 (Appsocket on some models)
Model 4512 PORT1 10001 (programmable)
Model N17 RAW 9100
Models N24 and N32 RAW 2000
Models 4900, 4915, 4925, C55 PS 2000
Document Centre DC220/230 lp - Unknown if supported -


All company, brand, and product names are properties of their respective owners.


4.8. Timeout Problems Sending A Job

The ifhp filter may need to run a program such as ghostscript to do format conversion. For large files this can take quite a bit of time and most network printers have a connection timeout. If no data is received for this time the printer will close the connection. By default this timeout is fairly short: 30 or 90 seconds on most printers.

If you are sending large jobs to the printer using the socket protocol and are getting timeout problems due to conversion timeouts, then there are two solutions: a) use the Appsocket protocol, which will open and close the connection for each file, and only send data when the converted file is available, or b) do your conversions first and then spool the converted job to be sent directly to the printer. The second method requires an LPRng bounce queue.

    # Method a) Appsocket
    lp:server 
      :lp=10.0.0.1%9100
      :sd=spooldir 
      :... 
      :ifhp=model=printer,appsocket
      #path to ifhp filter 
      :filter=/.../ifhp 
    
    # Method b) Bounce Queue
    #  this queue does the conversion if required
    lp:server
      :lpd_bounce 
      :lp=real@localhost
      :sd=spooldir 
      :... 
      :ifhp=model=printer
      #path to ifhp filter 
      :filter=/.../ifhp 
    # this queue does transmission
    real:server 
      :lp=10.0.0.1%9100
      :sd=spooldir 
      :ifhp=model=printer
      #path to ifhp filter 
      :filter=/.../ifhp 


For method a), the Appsocket protocol is used and the ifhp filter will be invoked before sending a job. For method b), you use two queues: a bounce queue that does the format conversion and then sends the job to the real queue, and the real queue that actually talks to the printer.


4.9. Printers With Lockup Problems

Due to firmware problems in some PostScript and PCL printers, they will occasionally lock up and refuse to accept new connections or continue with job processing. This is extremely difficult to diagnose, as the printer appears to be functional but will simply not accept any addition data or respond to a command.

Unfortunately, this is also the condition when these printers are turned offline.

The send_job_rw_timeout option is used to set a maximum timeout for network and/or communication operations. This value can be set to the maximum expected completion time of the print job. When this time is exceeded, the IFHP filter will exit with a JTIMEOUT error.


4.10. PS, PCL, PJL Printer with TPC/IP Network Interface

The most common TCP/IP protocols used for transferring jobs to network printers are RFC 1179, a direct TCP/IP socket, connection to the print engine, and the very odd Appsocket protocol described in previous sections. Here is a reprise of the various printcaps and methods to use them.

    # printer setup  
    #  force clients (lpr, lpq, to use server)  
    lp:lp=lp@serverhost  
    # server information  
    lp:server  
      :sd=spooldir  
      :...  
    
      # No filtering, transfer using RFC1179, use:
      :lp=queue@10.1.1.1
      #    or 
      :rp=queue:rm=10.1.1.1
    
      # Filtering and then transfer using RFC1179, use:
      :lpd_bounce:lp=queue@10.1.1.1
      #    or 
      :lpd_bounce:rp=queue:rm=10.1.1.1
      :ifhp=model=name
      :filter=/.../ifhp  
    
      # Filter, transfer using socket, use:
      :lp=10.1.1.1%9100 
      :ifhp=model=name
      :filter=/.../ifhp  
    
      # Filter, transfer using Appsocket, use:
      :lp=10.1.1.1%9100 
      :ifhp=model=name,appsocket
      :filter=/.../ifhp 


If your printer is a parallel port printer connected to an external Network Print Spooler such as an HP JetDirect box, then while the network connection to the Network Print Spooler is bidirectional the connection from the Network Print Spooler to the printer may be unidirectional and no status information will be returned from the Network Print Spooler. In this case you must add the status@ option to tell ifhp not to expect status:

    # Filter, transfer using socket
      :lp=10.1.1.1%9100 
      :ifhp=model=name,status@
      :filter=/.../ifhp



4.11. PS, PCL, PJL Printer with Parallel Port Connection

If your printer is connected to a bidirectional parallel port you may be able to read status from the printer. First, determine if your printer has bidirectional IO capability and if your operating system has support for it. If it does not, then do not use the :rw (open connection read-write) option to open the printer device in read write mode.

    # printer setup  
    #  force clients (lpr, lpq, to use server)  
    lp:lp=lp@serverhost  
    # server information  
    lp:server  
      # do now open read write
      :rw@
      :sd=spooldir  
      :...  
      # parallel port 
      :lp=/dev/lpt
      #path to ifhp filter  
      :filter=/.../ifhp 


If, on the other hand, your operating system reports that the parallel port is bidirectional and is able to read the printer model information, then you can try opening the parallel port read-write and seeing if the ifhp filter can read status information:

    # printer setup  
    #  force clients (lpr, lpq, to use server)  
    lp:lp=lp@serverhost  
    # server information  
    lp:server  
      # open read write
      :rw
      :sd=spooldir  
      :...  
      # parallel port 
      :lp=/dev/lpt
      #path to ifhp filter  
      :filter=/.../ifhp 



4.12. PS, PCL, PJL Printer with Serial Port

It is strongly advised that serial ports not be used for high speed data transfers. The main problem is trying to configure them in such as way that they do not lose characters due to data overruns or parity errors. LPRng is strongly deprecating support for serial port printers.

The LPRng print spooler will open and set the serial line characteristics, and pass the open connection to the ifhp filter. The tty connection must pass all 8 bits with no parity, and should use hardware flow control if at all possible. Unfortunately, the various stty options needed to do this vary from system to system. Also, you may discover that your serial connection does not support hardware flow control. If this is the case, then you will have to use software flow control which is rather unreliable for high speed (over 9600) serial lines due to the timing latencies involved.

    # printer setup  
    #  force clients (lpr, lpq, to use server)  
    lp:lp=lp@serverhost  
    # server information  
    lp:server  
      :sd=spooldir  
      :...  
      # serial port 
      :lp=/dev/ttyxxx 
      :stty=38400 -echo -crmod -raw -oddp -evenp \ 
         ixon pass8 -ixany cbreak crtscts 
      #path to ifhp filter  
      :filter=/.../ifhp 



4.13. PostScript Only Printer

The model=ps entry supports PostScript only printers.

    # printer setup  
    #  force clients (lpr, lpq, to use server)
    lp:lp=lp@serverhost 
    # server information  
    lp:server  
      :sd=spooldir 
      :...  
      :ifhp=model=ps 
      #path to ifhp filter  
      :filter=/.../ifhp 


If you have a unidirectional or write only (no status information) connection such as a parallel port you should use:

    :ifhp=model=ps,status@


Many PostScript printers recognize the PostScript EOJ marker (Control-D or \004) as an end of PostScript job indication and will perform page eject and other suitable actions. Unfortunately, strictly according to PostScript documentation this character is only allowed in the Serial Port Data Stream, and there are some printers that treat it as an error. In addition, the Control-T character is recognized as a printer status solicitation, and some printers do not return status or recognize it as an error.

If your printer does not handle PostScript EOJ (Control-D) at all, set ps_eoj@ to suppress generation of extra Control-D characters by ifhp. If your printer requires a Control-D at the end of the job but fails when they occur at the start of the job, set ps_eoj_at_start@. If the printer requires a Control-D at the start but not at the end, set ps_eoj_at_start@.

PCL based printers are not nearly as fussy. However, you may discover that some of them do not correctly handle a PCL EOJ at the start of a job in spite of all examples and documention. Use the pcl_eoj_at_start@ to suppress adding a PCL EOJ (Esc E) command string to the start of a PCL job file.

    :ifhp=model=ps,ps_eoj@


See the section on File Conversion Support for ways to print text and other files on a PostScript printer.


4.14. GhostScript

Generating a raster image from a PostScript or PCL file in a timely manner requires a high speed processor and substantial amounts of memory. Many of the low cost printers require the user's system to do the raster conversion and the raster file is then transferred to the printer. The file format is usually a subset of PCL.

The GhostScript program can process PostScript files and produce raster output for a wide range of devices. The ghostscript pcl_gs printer configurations is used with these printers. See GhostScript Printer for details.


4.15. Tektronics Phaser, QMS, and Appsocket Protocol

The Tektronics Phaser, QMS Network Printers, and a few others use the Appsocket protocol described in a previous section. The Tektronics (model=phaser) configuration entry has the required options for these printers:

    [ phaser qms ]
    appsocket
    ps
    pjl@
    pcl


The following shows a typical printcap entry:

    #  force clients (lpr, lpq, to use server)
    lp:lp=lp@serverhost 
    # server information  
    lp:server  
      :sd=spooldir 
      :lp=10.1.1.1%35 
      :...  
      :ifhp=model=phaser
      #path to ifhp filter  
      :filter=/.../ifhp 



Chapter 5. Options and Arguments

  • model=Model Information

  • model_from_option=Option with model information

The ifhp filter is designed to work with the LPRng print spooler and expects to be passed the standard set of filter options. These have the form:

    /.../ifhp [-c] [-X option]* accountingfile
    Example:
    /.../ifhp -n root -H hostname -P printer -s statusfile acct
    # - X is any letter except T


All of the option letters except T are reserved by the LPRng program to pass information to the filter. For details about the options, please consult the LPRng documentation.


5.1. Command Line Options

The most important options that LPRng passes and that ifhp uses are:

-s statusfile

The file where ifhp status information is placed.

-Z useroptions

The lpr -Z options passed by the user, and are discussed in the options section.

-T options

These are usually options specified in the printcap entry and are discussed in the options section.

accountingfile

The file where accounting information is written.



    Examples:
    ifhp "-Tmodel=ps,status@" "-Za4,landscape"


Since commas are used to separate options, whitespace is used to separate multiple values for a particular option. You will need to quote this on a command line. For example:

    ifhp "-Tfont=elite greek1 dingbat"


The ifhp program first checks to see if the PRINTCAP environment variable is defined. By convention, LPRng will place the printer printcap entry in this variable when it starts the ifhp filter. The printcap :ifhp=options value is extracted and used as the default -T options. After getting the options from the printcap, the -Toptions command line options are appended to the list of -T options. The single letter command line options are also made available to the ifhp programs as shown below:

    PRINTCAP=lp:ifhp=model=this,status@:...
    
    ifhp -n root -h localhost -Tmodel=that,debug=1
    
    Concatenated -T options:  model=this,status@,n=root,h=localhost,model=that,debug=1
    Resulting    -T options:  status@,n=root,h=localhost,model=that,debug=1


The -T option list is scanned from left to right, and later option values override earlier ones. The -T option values have priority over values that are obtained from the configuration file and cannot be overridden. There are several options that have important effects on the operation of the ifhp filter.


5.2. General Configuration Options - config, trace, debug

  • config=Configuration file location

  • debug=Debug options

  • trace FLAG trace on STDERR

These options are used to control the global operation of the ifhp filter, and are only available from the -T command line options.

config=pathname

The config option specifies the location of the ifhp.conf file. This overrides the default location. The pathname can be a file name, list of filenames separated by spaces, or a filter. For example:

    ifhp '-Tconfig=/usr/local/etc/ifhp.conf'
    ifhp '-Tconfig=|/usr/local/bin/getconfig'


The second example uses the getconfig program to obtain configuration information. The configuration information is read from the program's STDOUT. There program is invoked with no command line options and is passed the environment variables that were provided to ifhp.

model=MODEL

The model option selects the portion of the ifhp configuration that will set values of configuration parameters. This is discussed in detail in the next section.

trace

As ifhp processes the print job, it produces tracing and error message information. By default this is written to the status file specified by the -s command line option. The trace option will cause this information to be written to STDERR (file descriptor 2). This is usually used in debugging.

debug=n

This option sets the debugging level to n, where n is an integer number. Level 0 turns debugging off, level 1 produces a small amount of verbosity and increasing levels produce more verbose information.




5.3. Status Messages

  • statusfile=statusfile

  • statusfile_max=maximum status file size

  • statusfile_min=minimum status file size

  • summaryfile=one line summary file

statusfile=pathname or -s pathname

The status file pathname is set by the command line -s pathname, or if it is not present then the statusfile=pathname configuration option. The file must exist and will not be created.

statusfile_max=n

If the status file is larger than statusfile_max K bytes (default 8K), then it is truncated to statusfile_min=min K bytes.

statusfile_min=n

The minimum size in Kbytes of the status file after truncation (default 1K).




5.4. Printer Status Available - status

  • status FLAG status available from device

The status option indicates that there is a bidirectional connection to the printer, and that status can be obtained from the connection. During initialization the ifhp filter will test the printer connection and determine if it supports reading. If it does not then ifhp will set status@.


5.5. Monitoring Options - sync, waitend, pagecount

The sync, waitend, and pagecount options are ignored if no status is available from the printer. The sync option specifies the method to use to determine if the printer is ready and operational. The waitend option specifies the method used to determine when a print job is finished. The pagecount option specifies the method used to obtain pagecount or status information.

sync@, waitend@, pagecount@

This form of the tag indicates that the particular facility is disabled.

sync=pjl

PJL is used to determine if the printer is ready. This can be done by sending a PJL JOB or PJL ECHO command to the printer and waiting for return status.

sync=ps

A small PostScript job which causes a status report to be returned is sent to the printer.

waitend=pjl, waitend=ps

This is similar to the sync operation, but is done at the end of a job in order to determine if the printer is busy.

pagecount=pjl

Many PJL capable printers support reporting total page usage by means of PJL. This option causes a PJL command to be sent requesting the total page usage by the printer.

pagecount=ps

A small PostScript job which causes a status report to be returned is sent to the printer.




5.6. User -Z Option Support

The ifhp filter provides a simple way for users to request a particular printer facility or option. The lpr -Zkey=value command causes the lpd print spooler to pass the -Z options on the ifhp command line.

The ifhp filter implements these options by first determining if they are allowed, and then using them to select a set of strings that are sent to the printer. Since some options are implement by sending PJL strings to the printer, some by PostScript, and some by PCL commands, the method of specifying and generating them is a bit involved.

The following facility is used to control the names and types of user options.

pjl_user_opts=[ ... ]

This tag specifies the list of user options that are implemented by sending PJL strings to the printer. This is available only if the printer is PJL capable.

pcl_user_opts=[ ... ]

This tag specifies the list of user options that are implemented by sending PCL strings to the printer. This is available only if the printer is PCL capable.

ps_user_opts=[ ... ]

This tag specifies the list of user options that are implemented by sending PostScript strings to the printer. This is available only if the printer is PostScript capable.



For each option, the actual string or set of strings is specified as follows.

pjl_key= ...

The value of the PJL user option key. This value can be one or more lines; the lines are checked for correct PJL format and sent to the printer before any language specific information.

ps_key= ...

The value of the PostScript user option key. This value can be one or more lines; leading and trailing whitespace is removed and the lines are placed before the first lines of a PostScript job file.

pcl_key= ...

The value of the PCL user option key. This value can be one or more lines; whitespace and new lines are removed and the characters are placed before the first characters of a PCL job file.



The following user options are predefined in the default ifhp.conf file and are recommended for use.

a3, a4, a5

Use a3, a4, or a5 paper

copies=N

Print N copies of a page or job

duplex

Use duplex printing, tumble on. Pages will come out so that the margins are at opposite ends of a page.

duplexshort

Use duplex printing, tumble off. Pages will come out so that the margins are at the same ends of a page.

envelope

Select envelope media

inlower

Select media from lower input bin.

inupper

Select media from upper input bin.

landscape

Use Landscape orientation

lduplex

Alias for duplex

ledger

Select ledger size (11x15 inches) media

legal

Select legal size (8.5x15 inches) media

letter

Select letter size (8.5x11 inches) media

manual

Select media from manual feed

mediaselect=N

Select media number N

outlower

Put output in lower tray or bin

outupper

Put output in upper tray or bin

oversize

Select oversize media

portrait

Use Portrait orientation

sduplex

Alias for duplexshort. Print on a single side of the media.

simplex

Print on the single side of the media.

transparency

Select transparency media




5.7. Adding User Options

The following shows how to add a PJL option to an ifhp.conf file. By convention, the configuration is added to the end of the ifhp.conf file.

    [ newprinter ]
    pjl_user_opts += [ screen ]
    pjl_screen = PJL SCREEN = ON
    
    ps_user_opts += [ fuzzy ]
    ps_fuzzy = <</Fuzzy (\%s{fuzzy})>> setpagedevice


In the first example we define the screen option. The lpr -Zscreen option will cause the PJL command PJL SCREEN = ON to be put into the output to the printer.

Similarly, lpr -Zfuzzy=5 will cause the PostScript command <</Fuzzy (\%s{fuzzy})>> setpagedevice to be processed and the resulting <</Fuzzy (5)>> setpagedevice command to be sent to the printer.


5.8. Initialization and Setup Control

Several options are used during the processing steps discussed in Filter Operation Details to control what setup is done for the printer.

pjl_init = [ ... ]

If PJL is enabled on this printer, options in this list are expanded and the resulting values are sent to the printer. After this, the -Z options are expanded and any options which are listed in the pjl_user_opts are processed.

ps_init = [ ... ]

If PostScript is enabled on this printer and a PostScript file is being processed, then the options in this list are expanded and the resulting values are sent to the printer. After this, the -Z options are expanded and any options which are listed in the ps_user_opts are processed.

pcl_init = [ ... ]

If PCL is enabled on this printer and a PCL file is being processed, then the options in this list are expanded and the resulting values are sent to the printer. After this, the -Z options are expanded and any options which are listed in the pcl_user_opts are processed.



These initialization options are very useful in order to set up information controlling the default format or options for a print job. For example:

    pcl_init = [ normalpage ]
    pcl_normalpage=[ letter crlf linewrap
      portrait clearmargins fixed pitch=10 courier ]


When processing a PCL job, normalpage is expanded by searching first for normalpage and then for pcl_normalpage; this in turn results in the expansion of the list of values. For example, pcl_crlf is usually defined as pcl_crlf=\033&k2G, which is the PCL command to translate a New Line (\015) character as a Carriage Return/New Line. The other entries have similar definitions that produce the desired effects.


Chapter 6. Configuration File

This section will cover the ifhp.conf file and the various options and configuration methods used to control the operation of the ifhp filter.


6.1. Configuration File Entries

The ifhp filter uses a simple text based configuration file, usually /usr/local/etc/ifhp.conf or /etc/ifhp.conf to get a set of configuration values which control its operation. The following sample configuration file segment shows how information is specified.

    # comment line - first non-blank character is a #
    #---- DEFAULTS ----
    # we first have the default section
    #   - a flag option whose value is 1
    on_flag
    #   - a flag option whose value is 0
    off_flag@
    #   - a flag option whose value is a string (single line)
    #     its value will be 'this is a string'
    strval = this is a string
    #   - a flag option whose value is multiple lines
    #     each additional line starts with whitespace
    #     value is 'this\nis1\na\nstring'
    longstrval = this
     is\061
     a
     string
    #   - and a list that gets expanded -
    #     '[ this ] [ is a\nlist ]' -> [ this is a list ]
    longlist = [ this ] [ is a
     list ]
    #    we can extend a string.
    #    strval will  now be 'this is a string added'
    strval += added
    #    and we can expand a list
    #     '[ this ] [ is a\nlist ] [ more ]' -> [ this is a list more ]
    longlist += [ more ]
    
    # a printer specific section
    # ---- PRINTER ----
    [ hp hp4* ]
    # this match model=hp, model=hp4, model=hp4x
    # override the default
    onflag@
    include /usr/local/etc/ifhp.conf.local
    
    [ entry1 ]
    value
    [ entry2 ]
    tc=entry1



6.2. Comments

Comments are lines whose first non-whitespace character is #. Use \# if the first non-whitespace character must be #.


6.3. Option Setting

    Syntax             Equivalent To
    option                     option=1
    option@                    option=0
    option=val
    option=[ v1 v2  ... ]      value contains all whitespace
    option=[ v1                up to the next option entry
     v2                        blank lines and comments
     v3                        are not included
     ]
    option=v1
     v2
     v3


If an option's default value is the empty string (''). The ifhp program uses the Perl language convention that this value is equivalent to 0 when used in a numerical context or the empty string when used in a string context.

In general when a string is used in an integer context it is converted to a the appropriate numerical type using the standard Perl/C numerical representation and conversion methods.

The flag syntax sets the value of flag to the string '1', that is, the string with a 1 value, and flag@ sets it to '0'.

The option = value syntax sets the option value to a string. The string can extend across multiple lines. A line starting with a space has its value appended to the previous option with a new line (\n) separator.

As shown in the example, the += operator is used to append to a string value. The [ option option ...] syntax is used to specify that the value is a list. Lists are used to specify a list of options which can be flags or string values. Lists have the property of recursive evaluation which means that the individual list items will be further processed during printing. This is discussed later in detail.

The include facility is currently deprecated, and may not be implemented in future releases. It will cause the specified file to be read and processed at that point in the configuration file.


6.4. Option Use

Options and their values are used to control printer operation. There are two types of options: those with a predefined or builtin meaning to the ifhp filter and those which have their values sent to the printer when appropriate. The builtin options are listed and their use is explained in later sections.


6.5. List Expansion

The ifhp filter configures a printer by sending the values of options to the printer or performing built-in operations. An option can have a flag, string, or list value.

A LIST value has the form [ v1 v2 ... ]. When a list value is to be sent to the printer each of v1, v2, etc. is expanded in turn and the corresponding string value or builtin action is carried out. If the string value of a term is itself a list, the list will be expanded in turn. Recursive list evaluation will result in an error. The following is an example of list expansion:

    t1=[ p1 p2 ]
    p1=this is
    p2=[ p3 p4 ]
    p3=a
    p4=test


The option t1 is expanded by expanding p1 and then p2; The expansion of p1 produces "this is", and p2 produces [p3 p4]. This list is then expanded to produce "a" and "test".

Some LIST options are used in printer language specific contexts and their values are processed appropriately. For example, pjl_init=[...] specifies a set of initialization operations for PJL printers, and pcl_init=[...] is used to specify the initialization needed for PCL printing. The expansion of the LIST entries is done in the language specific context. For PJL this requires that the output be well formed PJL commands, and for PCL that all whitespace be removed.

The context dependent expansion is required because sometimes it is necessary to do operations both using PJL and PCL or PJL and PS combinations to ensure correct printer operation. During expansion the language name and an underscore is prefixed to the list entry name and this is used as the option name during expansion. If the prefixed name is not found then the unprefixed name will be used. For example, suppose that we have:

    pjl_init=[ initstr test ]
    pcl_init=[ initstr ]
    pjl_initstr=@PJL ECHO YES
    pcl_initstr=\033(*0V
    test=DONE


When PJL initialization is being done and we want string values for the pjl_init LIST, we expand initstr and test in the pjl_ context. First a defined pjl_initstr value will be looked for and then a defined initstr value. Since there is a value of pjl_initstr it will be used.

Similarly we will check for pjl_test and test values. Since pjl_test does not have a defined value the test value DONE will be used.

When PCL initialization is being done and we want string values for the pcl_init LIST, then we expand initstr in a similar way, resulting in \033(*0V.

We can use the list entry [ option=value ] to temporarily specify the value of a variable which is then used during language specific expansion. For example, suppose that we have the following set of definitions:

    pjl_init=[ initstr=testing ]
    pjl_initstr=@PJL INIT=\%s%lcub;initstr%rcub;XQ


As discussed in the next section, the \%s%lcub;initstr%rcub; will cause the value for the initstr value to be substituted into the pjl_initstr string. How this is done is discussed in the section on String Escape Sequences.


6.6. String Escape Sequences

String values have a syntax similar to PERL or C. The \ (escape) character indicates the start of an escape sequence string. This has the syntax:

Standard Character Replacement

\f, \r, \n, and \t are replaced in turn by the ASCII characters FF, CR, NL, and HT whose values are 014, 015, 012, and 011 respectively.

Octal Character Replacement

\nnn, where nnn is 3 octal digits, is replaced by the corresponding character with the specified value.

Option Value Replacement

\%format{option} OR \%format[option]

The value of the option will be determined and replaced by a formatted string. The option value is determined by the following algorithm.

  1. When expanding a list value, the option=word will push the option=word combination onto an evaluation stack, and then the option value is expanded in the current language context.

  2. When starting a search for {option} in a language context lang_, the stack of list values is searched in oldest to newest order for a match for lang_option and then for option. The first one found is used as the option value.

  3. After searching the evaluation stack for {option} and finding no match, the -Z command line option values are searched for a matching entry.

  4. If none is found, then the -T command line option values and next the printer configuration will then be searched for lang_option and then for option. If no match is found, then the empty string will be the result if a string is wanted, or the value 0 if a number is wanted.

  5. If the result of this lookup is a list, then the list will be expanded in turn, and the concatenating values of the expansion will be used.

  6. When starting a search for [option] the -T command line options will be searched first and next the printer configuration will be searched for lang_option and then for option. If no match is found, then the empty string will be the result if a string is wanted, or the value 0 if a number is wanted.

  7. ***help*** If the result of this lookup is a list If no match was found, then the search rules for {option} will be used, and the list expansion will be done as described above. If no match was found a null (empty string) value will be used.



Option Value Format
       %[-][0][length[.precision]][format]
       %d{1}   =>  '1'       %s{1}   => '1'
       %3d{1}  =>  '  1'     %3s{1}  => '  1'
       %03d{1} =>  '0001'    %-3s{1} => '1  '
       %4.2f{1} => '1.00'
     Special Case Conversion:
       %s{ThisWord} => 'ThisWord'
       %U{ThisWord} => 'THISWORD'
       %M{ThisWord} => 'Thisword'
       %L{ThisWord} => 'thisword'
The format specifies how the value is to appear, and is similar to the printf format usage.

Depending on the format type, a value will be converted and used appropriately. The empty string or null value ('') will be treated as a '0' value when used in an numeric context.

The default format is %d, ie, \%{val} would be \%d{val}. The numerical formats supported are: %d, %o, %x, %X, %e, %f, and %g; The %s format use the string value of the result.

The U, M, and L have the same behavior as the s format, but the string value is then uppercased, lowercased and the first letter uppercased, and lowercased respectively. This allows various programs that have fussy requirement about the case of their options to be handled correctly.




6.7. Language Context and Value Expansion

The ifhp filter sends initialization and configuration commands to the printer. Depending on the type of language of a print file (i.e. - PostScript or PCL), different command formats would need to be used to implement different options. For example, to implement a landscape option for a PJL aware printer you would need to send the PJL command @PJL SET ORIENTATION=LANDSCAPE. For a PostScript printer you would need to send a very strange string which would depend on the actual printer mode.

Our language context also includes various checks for language specific dependencies. This section refers to material that is discussed in depth in later sections of this document, and on first reading may be a little confusing. However, if you are not aware of some of these restrictions then much of the information in the configuration files may be very confusing.


6.7.1. PJL Language

A PJL command has the form @PJL OPCODE ..., and PJL commands must be sent as a block before any other commands. In order to assist with this, the ifhp filter provides the following assistance. When expanding a list value, each list entry is expected to form a well formatted PJL command.

  1. Before sending any PJL command to the printer, the PJL Universal Exit Command (\033%-12345X) string is sent to the printer. This is automatically done if pjl is enabled for the printer.

  2. The list item is expanded, and all value substitutions are done. Leading and trailing whitespace is removed, all characters are converted to uppercase, and a new line (\n) value is appended to the command.

  3. Because not all printers support all PJL commands, the ifhp filter performs uses the pjl_only and pjl_except configuration lists to ensure that the options are allowed by the printer. The OPCODE must appear in the pjl_only list and not in the pjl_except list. For example:

        pjl_only = [ JOB SET STATUS ]
        pjl_except = [ STATUS ]
    


    The pjl_only indicates that the printer supports the PJL JOB, SET, and STATUS commands, but the pjl_except list removes the STATUS from this list. This means that only the JOB and SET commands will be allowed.

  4. If the command is a SET command, then the PJL variable must appear in the pjl_vars_set list and not in the pjl_vars_except list.

        pjl_vars_set = [ PAPER SIZE ORIENTATION ]
        pjl_vars_except = [ PAPER ]
        
        @PJL SET SIZE=A4
        @PJL SET PAPER=LETTER
    


    In the above example, the SIZE=A4 command would be allowed and sent while the PAPER=LETTER command would be rejected and not sent.




6.7.2. PCL Language

When sending PCL initialization strings to a printer, it is essential to send nothing that could cause a printable character to be sent before the actual file contents. Such output could cause the location and positioning of text to be altered in unexpected ways. To avoid this, the following steps are taken when expanding a list in a PCL language context.

  1. Before any PCL string is sent to the printer, the PCL End of Job (\033E) string is sent to the printer.

  2. All whitespace (blanks, tabs, etc) are removed from the string value.

  3. Next, all escaped values are substituted. At this point you can force printable strings containing whitespace into the output by using the \nnn escape mechanism.

  4. All list values are concatenated and then sent to the printer.




6.7.3. PostScript Language

The PostScript language processing is very minimal, as there are few problems sending PostScript to a printer.

  1. Before sending any PostScript initialization strings, the PostScript End of Job indicator (\004 or Control-D) is sent.

  2. Strings are then expanded and the escape sequences are substituted.

  3. Individual strings have a newline (\n) appended to them before being sent to the printer.




6.8. Printer Entries

The ifhp.conf file is divided into printer entries by [ pattern pattern ...] lines. Each pattern is glob matched against the model option value, and if the match is successful then the options on the following lines until the next printer entry header are appended to the specific printer configuration entry.

By convention, each configuration file is assumed to start with the header [ default ], and the initial set of lines are used to set default values for the various ifhp options.

The algorithm for scanning the configuration files first sets the model value to default, and extracts the default information. It then sets the model value to the user specified value, and rescans the configuration file information.

If users need to add or modify the ifhp.conf file, then they should add their entries to the end of the file, and override any default options by specific values in their new entry. To aid with system configuration and maintenance, the distributed ifhp.conf file has the following text at the end of the file:

    ##### This is the end of the standard ifhp.conf file.
    ##### Add your local files after this
    ##### If you want to override some entries, simply change the names to
    ##### something different, i.e. hp4 hp4.old
    ##### Here is a script to do this and then append your local file to the
    ##### end of the ifhp.conf file:
    #####
    ##### #!/bin/sh
    ##### for i in $* ; do
    #####   perl -spi.bak -e 's/ $i / $i.orig /g' ifhp.conf
    ##### done
    #####
    ##### sed -n -e '1,/XXX END XXX/p' ifhp.conf >ifhp.conf.new
    ##### sed '1,/XXX END XXX/d' ifhp.old >> ifhp.conf.new
    #####
    ##### You can probably improve on this.
    #####
    #### XXX END XXX #####
    
    # user adds new default values here for all printer entries
    [ default ]
    # set default value
    pcl_option= \033test
    
    [ mypcl_printer ]
    # override default value
    pcl_option=



6.9. Include Facility

The include filename facility is similar to the standard compiler file inclusion facility. The specified file or list of files separated by commas or whitespace will be substituted for the indicated line.


6.10. tc Entry Inclusion Facility

The tc=entry facilty is similar to the printcap tc facility used in the LPRng software other places. The specified entry or list of entries separated by commas or whitespace will be substituted for the indicated line.


Chapter 7. Filter Operation Details

The ifhp filter operates by first reading a configuration file to determine the type of printer it is working with, and then proceeds to carry out operations requested by the values of option variables passed on the command line or found in the configuration files. In normal operation, input is read from STDIN (file descriptor 0) and results written to STDOUT (file descriptor 1). Status reports are written to a status file or optionally to STDERR (file descriptor 2), together with any error messages or diagnostics.

In addition to normal operation the filter can run in the OF mode and act as a printer initializer and job terminator. This is discussed in detail in the LPRng documentation. When in the OF mode the two character sequence "\031\001" to the filter. will cause the filter to suspend itself by sending itself a SIGSUSP signal. The print spooler will detect this and then send job files to the same output device. After the files have been transferred the the filter will be restarted with a SIGCONT signal.


7.1. Filter Pseudo-Code

The details of the filter operations are described in the following pseudo-code. The sections marked with ### are discussed later in this document in detail.

/// See: Options, Initialization and Setup

    ###+++ Initialization and Setup
    // get ifhp information from PRINTCAP_ENTRY environment variable
    if( PRINTCAP_ENTRY environment variable has a value ){
        split printcap information into printcap fields
        if( :ifhp=options,options is present in printcap ){
            split the options list and place in the Toptions list
        }
    }
    Add the -T command line options to the Toptions list
    Add the -Z command line options to the Zoptions list
    foreach option in -Toptions do
        if( option = "debug=level" ){
            set Debuglevel = level;
        }
        if( option = "trace" ){
            output error and trace on STDERR
        }
        if( option = "config=pathlist" ){
            set configuration pathlist = pathlist;
        }
        if( option = "model=name" and model not set ){
            set model = name;
        }
    }
    Read the configuration files from the config file list
    Prepend each file with a [ default ] header
    
    Scan the configuration files for [ default ] entries;
      later entry values will override earlier ones.
    
    Repeat the scan, but this time search for [ model ] entries
      matching the specified model.
    
    Put the command line options and -T options into configuration
      information, effectively overriding the information from the
      configuration files.
    
    if( appsocket ) {
       Get the :lp=... entry from the PRINTCAP_ENTRY environment variable
       if( no information ) {
           use the getpeername() to get the TCP/IP address of the current
           connection.
       }
       if( no informtion AND no dev=... parameter ) {
           error!
       }
       close connection to printer and set -Tdev= device or IP Address
    }
    
    // open a connection to the printer if required
    // usually only done when appsocket protocol is used
    if( device specified using -Tdev=device ){
        close(1)
        // if device is host%port, we open TCP/IP connection
        fd = open(device);
        // Note - status  opens RW
        //        status@ opens WO
        dup fd to 1; close fd;
    }
    
    ###---
/// See: Synchronization and Pagecount
    ###+++ Synchronization and Pagecount
    if( status returned by printer and sync requested ){
        do{
            send command and wait for timeout;
        } while( no response );
        if( appsocket ){
            close and reopen TCP/IP connection;
        }
    }
    
    
    if( status and pagecount requested ){
        // pagecount has the form pagecount@ (none),
        //   pagecount=ps, pagecount=pjl, ...
        if( pagecount=language has value ) do {
            if( pagecount TRUE ){
                set pagecount= pjl or ps depending on availability
            }
            if( pagecount = pjl and PJL INFO available ){
               send PJL INFO PAGECOUNT command to printer
            } else if( pagecount = ps ){
               send PS program to printer
            } else {
                terminate with error;
            }
        } while( no pagecount response );
        if( appsocket ){
            close and reopen TCP/IP connection;
        }
    }
    ###---
/// See: PJL Initialization
    ### PJL INITIALIZATION
    if( PJL enabled ){
        language = "pjl_"
        foreach option in pjl_init=[...] {
           expand the option using the language value
           #+++ PJL OPTION ACTIONS +++
           if( option in pjl_vars_set=[ ... ]
             and option not in pjl_vars_except
             expand "@PJL SET OPTION=\%{option}"
             output = expanded string value
           } else {
             if( option value is a string ){
               output = expanded string value;
             }
           }
           // output has the form @PJL COMMAND ....
           if( COMMAND is in pjl_only=[ ... ]
               and not in pjl_except=[ ... ] ){
               send output to printer
           }
           #--- end PJL OPTION ACTIONS
        }
        if( !OF_mode ){
             foreach option in -Toption=value {
                if( option in pjl_user_opts ){
                    #+++ USER PJL OPTIONS
                    // join 'pjl_' and the option name
                    expand 'pjl_' . option
                    // perform PJL actions as above
                        #+++ PJL OPTION ACTIONS +++
                        ....
                        #-- PJL OPTION ACTIONS +++
                    #--- USER PJL OPTIONS
                }
             }
             foreach option in -Zoption=value {
                if( option in pjl_user_opts ){
                    // perform USER PJL actions as above
                    #+++ USER PJL OPTIONS
                    #--- USER PJL OPTIONS
                }
             }
        }
    }
    
    ###--- PJL INITIALIZATION
/// See: File Conversion Support
    // language is set to the type of job language
    // - PS, PCL, TEXT, RAW, UNKNOWN
    //  the first part of the job file is read and the filter takes
    //  a (wimpy) guess at the job file based only on the first couple
    //  of characters;  language is  be PJL, PS, or TEXT, or RAW
    //  This is the same algorithm as the UNIX FILE utility
    
    language = default_language (from configuration);
    if( command line -c (binary) option present ){
        language = RAW;
    } else if( -Zlanguage=xxx option present ){
        language=xxx
    } else if( forceconversion set ){
        use UNIX file utility to get file type
    } else if( file is PS file ){
        language=PS
        if( file starts with PS EOJ (CTRL-D)
            and ps_eoj_at_start is clear ){
            remove the PS EOJ
        } else {
            send a PS EOJ first
        }
    } else if( file is PCL file ){
        language=PCL
        if( file starts with PCL EOJ (ESC E)
            and pcl_eoj_at_start is clear ){
            remove the PCL EOJ
        }
    }
    if( file conversion table specified then ){
        look up file type in conversion table;
        if( conversion program specified ){
            run input through conversion program
        }
        set file type to output type
    }
    
    
    if( language = TEXT and PCL allowed ){
        language = PCL;
    }
    
    if( language not recognized by printer ){
        exit with error;
    }
    
    if( PJL ENTER supported ){
        use PJL ENTER command to select language;
        send nullpad NULLS to force full buffer condition
    }
/// See: Language Specific Initialization
    // LANGUAGE SPECIFIC INITIALIZATIONS
    if( language = PCL ){
        foreach option in pcl_init {
            ###+++ expansion
            do expansion similar to PJL OPTION actions
                using "pcl_" prefix for option lookup;
            ###---
        }
        if( not in OF_MODE ){
            foreach option in -Toption do {
                if( option in pcl_user_vars=[ ... ] ){
                ###+++ expansion as above
                ###---
            }
            foreach option in -Zoption do {
                if( option in pcl_user_opts=[ ... ] ){
                ###+++ expansion as above
                ###---
            }
        }
        remove whitespace and expand string results;
    } else if( language = PS ){
        ###+++ language specific actions as above,
          using the ps_ prefix for lookup
          allow only user option in the ps_user_opts list
        expand string results but do not remove whitespace
    }
/// See: File Transfer and Error Status Monitoring
    Transfer job to printer, reading error and other information
      back from the printer if enabled
    
    if( language = PCL ){
        send PCL End of Job
    } else if( language = PS ){
        send PS End of Job
    }
    
    
    // job termination
    
    ###+++ Synchronization and Pagecount as above
    finished = 0
    while( waitend and not finished ){
        // timeouts and retries are done here
        if( time taken is too long ){
            give up and report an error
        }
        if( waitend with PJL ){
            wait for end of job using UINFO;
        } else if( waitend with PS ){
            send PostScript echo program to printer
            if end_ctrl_t then add ^T
        }
        wait for response
        if( response has end of job indication ) {
            finished = 1;
        }
    }
    if( pagecount ){
        if( appsocket ){
            close and reopen connection;
        }
        get pagecount using previously described algorithm
    }
    
    ###---
    
    exit



7.2. Options, Initialization and Setup

During the setup step, the ifhp system will extract command line options and scan configuration files for printer entries. These operations are covered in detail in other sections.


7.3. Languages Supported- pjl, pcl, ps, and text

  • pjl FLAG PJL Supported

  • pcl FLAG PCL Supported

  • ps FLAG PostScript Supported

  • text FLAG Text Supported

These flags set the languages that are recognized or processed by the filter.


7.3.1. pjl_job FLAG

  • pjl_job FLAG Send PJL Job and EOJ

If PJL is enabled and the pjl_job flag is SET a PJL JOB and PJL EOJ command will be generated and sent to the printer at the job start and end respectively. The JOB command has the form:

    @PJL JOB NAME = "..." [ START = nnn ] [ END = mmm ]
The START and END values can be specified by -Zstartpage=nnn and -Zendpage=mmm command line options. The EOJ command has must match the JOB command.
    @PJL EOJ NAME = "..." [ START = nnn ] [ END = nnn ]



7.3.2. pjl_enter FLAG

  • pjl_enter FLAG Send PJL ENTER

If PJL is enabled and the pjl_enter flag is SET, a PJL ENTER LANGUAGE = xx command will be generated when PCL or PS files are sent to the printer.

    @PJL ENTER LANGUAGE = PCL
    @PJL ENTER LANGUAGE = POSTSCRIPT



7.3.3. remove_pjl_at_start FLAG

  • remove_pjl_at_start FLAG Remove PJL code from begining of job

Some printer drivers will prepend PJL code to the begining of print jobs. If the remove_pjl_at_start flag is SET, ifhp will remove this PJL code.


7.3.4. nullpad STRING

  • nullpad= ephasis/null character count/

Some older model HP printers require receiving a large number of NULL (0) characters to force commands in the input buffer to be read. This can be done using the nullpad option. In practice, this has turned out to be largely irrelevant as most newer printers and network interface printers do not have this problem.


7.3.5. pjl_console FLAG

  • pjl_console FLAG printer console messages

When this flag is set and PJL is available and the PJL RDYMSG command is supported, then a short message will be put on the console.


7.3.6. remove_ctrl STRING

  • remove_ctrl=remove control characters

The remove_ctrl string option species a list of (control) characters that will be removed from PostScript jobs. This solves the problem of jobs with embedded Control-T or Control-C characters causing abnormal printer operation. For example:

    remove_ctrl=CT
would cause Control-C and Control-T characters to be removed.


7.3.7. tbcp FLAG

  • tbcp FLAG Use TBCP protocol

The tbcp flag can be specified as a user option as well as a configuration file option. If the file type is PostScript and this flag is set then the file is transferred using the Transparent Binary Communication Protocol. (See the Adobe PostScript Language Reference Manual for details on the protocol.)

At the start of the PostScript job, the sequence \001 M is sent. Afterwards, all control characters in the set 0x01, 0x03, 0x04, 0x05, 0x11, 0x13, 0x14, 0x1C, are replaced by the two character sequence \001 X+'@' or X+'\100' or is sent. For example:

    C\001\003   ->  \001\115\103\001\101\001\103 or \001MC\001A\001C



7.4. Synchronization and Pagecounts

  • accounting= accounting program

  • accounting_info= accounting information

  • pagecount FLAG or Option pagecounter available

  • pagecount_interval= get pagecounter interval

  • pagecount_timeout= get pagecounter timeout

  • pagecount_start= get pagecounter at job start

  • pagecount_end= get pagecounter at job end

  • pagecount_ps_code= PostScript to get pagecounter

  • sync FLAG or Option sync required

  • sync_interval= do sync at interval

  • sync_timeout= sync timeout

  • wait_for_banner FLAG wait for banner page

Many printers are able to provide status information back to the filter. It is assumed that in these circumstances file descriptor 1 (FD1) is bidirectional and status information can be read from it. When the status option is TRUE, FD1 is readable and is a device or communications socket, then the filter assumes that it can read FD1.

Synchronization is usually done in order to ensure that a previously spooled job or printer action has completed correctly, and the printer is ready to accept a new job. It is usually carried out by sending a request to the printer to echo a string back to the filter. Clearly, if the printer cannot provide status or echo values back, then synchronization is impossible.

The value of the sync option determines if a PJL ECHO command or simple PostScript program is used. The PostScript program has the form:

    \004%!PS-Adobe-2.0
    ( %%[ echo: TODSTR ]%% ) print () = flush
    \004
where TODSTR is replaced with the current Time of Day.

To control obtaining synchronization, the sync_interval=nnn and sync_timeout=nnn options are used. The PJL or PS command is repeated at sync_interval=nnn second intervals; if nnn is 0, then it is sent only once. If synchronization is not obtained within sync_timeout=nnn seconds, then the filter exits with an error status. A 0 value or sync_timeout@ disables timeouts.

When the ifhp filter is operating in OF mode and the wait_for_banner option is true, the filter will wait until it determines that the banner page has been completely printed before carrying out other filter functions.

Pagecounts are used to do accounting and report the number of pages used for a job. Most printers have a hardware based pagecounter mechanism whose value can be read by the appropriate PJL command or PostScript program. For example, if the PJL INFO command

    @PJL INFO PAGECOUNT
is supported by a printer, the printer will return a status message containing the current pagecounter value. Printers that support PostScript may also be able to access the pagecounter value using a PostScript program. The exact details of the PostScript program vary from vendor to vendor and the pagecount_ps_code=... option specifies the PostScript program to use. For example:
    pagecount_ps_code=
      /p {print} def ( %%[ pagecount: ) p
      statusdict begin pagecount end 20 string cvs p
      ( ]%% ) p () = flush


The lpd print server and the ifhp filter must act in coordination to do reliable pagecounting. The following options are used by the ifhp filter to assist with this:

Option Purpose
accounting=.../ accounting program
accounting_info=AnPR accounting information
pagecount@ do not get pagecounter value
pagecount get pagecounter using either PJL or PostScript if available on the printer (default)
pagecount=pjl get pagecounter using PJL
pagecount=ps get pagecounter using PostScript
pagecount_start get pagecounter at job start (default)
pagecount_end get pagecounter at job end (default)
pagecount_poll=N if nonzero, poll printer and conclude pagecounter value is nonzero when identical N times (default 1)
pagecount_interval if polling more than once, then leave this interval (in seconds) between polls.
of_options=... Use these option values when running in OF Mode


The following options are used in the LPRng printcap entry to assist with getting the pagecounter values:

    lp:
      # run at job start
      :as=/.../accounting_at_start
      # run at job end
      :ae=/.../accounting_at_end
      # -a filter option value or last command line argument
      :af=/.../acct
      # default filter
      :filter=/.../ifhp
      # of filter - run before and after job, can be suspended
      # desperation flag for desperate situations
      #:suspend_of_filter@
      :of=/.../ifhp
      #options
      :ifhp=...,of_options=pagecount waitend


The :as program is run at the start of a print job, and is used to determine if the user has sufficient resourses to print a job. The :ae program is run at the end of a print job and is used to collect the accounting statistics. The ifhp filter will write accounting information to the accounting file specified by the command line -a option, or the last command line argument. When both the :of filter and normal filters are used together, the accounting information will be nested as shown.

    Normal Mode:
      start                     '-qProcessID' '-pPagecounter' \
         '-tStartTime' '-Pprinter' '-Hhost' '-nuser' '-Raccntinfo'
      end '-bPages' '-Telapsed' '-qProcessID' '-pPagecounter' 
         '-tEndTime' '-Pprinter' '-Hhost' '-nuser' '-Raccntinfo' \
         '-TElapsedTime'
    
    OF Mode:
      filestart                     '-qProcessID' '-pPagecounter' \
         '-tStartTime' '-Pprinter' '-Hhost' '-nuser' '-Raccntinfo'
      fileend '-bPages' '-Telapsed' '-qProcessID' '-pPagecounter' \
         '-tEndTime' '-Pprinter' '-Hhost' '-nuser' '-Raccntinfo'
         
    
    Sample Accounting File Entry:
    
      start '-q10699' '-p234' '-t2000-05-24-09:27:47.784' \
          -Plp -Hh4.private -npapowell
      filestart '-q10700' '-p234' '-t2000-05-24-09:27:47.784' \
          -Plp -Hh4.private -npapowell
      fileend '-b0' '-T1' '-q10700' '-p235' '-t2000-05-24-09:27:47.863' \
          -Plp -Hh4.private -npapowell
      end '-b1' '-T1' '-q10699' '-p235' '-t2000-05-24-09:27:47.863'
          -Plp -Hh4.private -npapowell


The format of the information written to the accounting file is controlled by the accounting_info=AHPn ifhp configuration value. If they are present, the specified ifhp command line flags are appended to the end of the standard accounting information. The accounting=... option specfies a program to run at then end of the job. This program has all of the accounting information passed as command line options. The program should exit with a 0 exit code; otherwise the results are undefined.

The printcap :suspend_of_filter controls how the lpd spooler manages the of filter. When a file is to be printed normally, a special two character suspend message (\031\001) is written to the filter STDIN. When the ifhp filter detects this string in the input it is required to suspend itself by sending itself a SIGSUSP signal. The :suspend_of_filter@ flag causes the lpd process to close the :of filter rather than suspending it, and to start a new :of filter process when it needs one. This option is used when there can be at most one process communicating with the printer, or when the ifhp filter must totally reinitialize the printer at job end.

The pagecount option controls if and how the pagecounter value will be fetched. Currently pagecount=ps (PostScript) and pagecount=pjl (PJL) are supported. The pagecount form will use PJL if it is available; otherwise PostScript if it is available. The pagecount@ suppresses pagecount operation. The pagecount_start and pagecount_end flags control if the pagecounter will be obtained at the start and end of the print job.

One of the major problems with getting printcounter values is that the print job must be totally finished or at least have all of its pages run through the paper feed stream when the pagecounter value is reported. Unfortunately, most manufacturers do not provide accurate ways to coordinate the two activities. The waitend option is used to enable the ifhp filter to send special command sequences to the printer which will detect the true end of job, but this may not be possible on many printers.

The printcounter_poll=N (default 1) option provides a method to deal with these types of printers. Commands to get the printcounter value are sent to the printer, and repeated at printcap_interval second intervals until the printcounter value has been stable for N readings.

The PJL TEOJ (True End Of Job) command has been used with only limited success to force End of Job reporting only when the job has finished. This can be sent to the printer during PJL initialization by specifying it as one of the PJL initialization strings:

    pjl_init=[ ... teoj ... ]
    pjl_teoj=@PJL TEOJ=ON


The of_options are used to modify the actions of the ifhp filter when it is running in OF Mode.

The pagecount_start and pagecount_end (both default to TRUE or ON) control if pagecounter values are obtained at the start or end respectively of the job.

The pagecount request is sent to the printer every pagecount_interval=nnn second intervals; if nnn is 0, then it is sent only once. If no pagecount value is obtained within pagecount_timeout=nnn seconds then the filter exits with an error.


7.5. PJL Initialization

  • pjl_init=[ ... ]pjl initialization

  • startpage=start page to print

  • endpage=end page to print

  • pjl_only=[ ... ]pjl commands supported

  • pjl_except=[ ... ]pjl commands not to be used

  • pjl_vars_set=[ ... ]pjl variables supported

  • pjl_vars_except=[ ... ]pjl variables not to be used

  • pjl_user_opts=[ ... ]pjl options available to user

If a printer supports PJL, the many printer operations can be initiated and controlled using PJL commands. Unfortunately, not all printers support the same set of commands. In addition, not all printers support the same set of operations or options. A PJL command has the form:

    @PJL COMMAND OPTION OPTION ...
A PJL variable is set using:
    @PJL SET var = value ...
The pjl_only=[ ... ], pjl_except=[ ... ], pjl_vars_set=[ ... ], and pjl_vars_except=[ ... ] options are used to control which PJL commands and which PJL variables can be set. The pjl_only variable lists the commands supported by the printer, and the pjl_except lists commands not supported by the printer. Before sending a PJL command, the ifhp filter checks to make sure that the command name is in pjl_only and not in pjl_except. If the tests fail, then tne command is not sent.

Similarly, when sending a command to set a PJL variable, the pjl_vars_set and pjl_vars_except lists are checked to determine if the variable name is in pjl_vars_set and not in pjl_except list. If the tests fail, then tne command is not sent.

If PJL is enabled, then the following actions are taken.

  1. PJL Universal Exit Language (UEL) \033%-12345X is sent to the printer.

    This is required to ensure that the following PJL commands are accepted.

  2. PJL JOB command is sent at the start of job. The JOB command can be used to select pages or impressions to be printed. If the -Zstartpage=nnn or -Zendpage=mmm option is present, then the PJL JOB command has the form:

        @PJL JOB START=nnn END=mmm
    


  3. The pjl_init=[ ... ] value option is expanded using the PJL ("pjl_") language context as described above.

  4. The -Toption=values and -Zoption=values are scanned for matching option names in the pjl_user_opts=[ ... ] list. If they are found, then the options are recursively evaluated in the PJL language context. The expansion algorithm will cause the option value to be used to set PJL variables. For example:

        Configuration:
          pjl_vars_set=[ OUTBIN AUTOSELECT JAM=YES ]
        
        Command
          ifhp -Zoutbin=upper,autoselect,jam
        
        PJL command generated:
          @PJL SET OUTBIN=UPPER
          @PJL SET AUTOSELECT=ON
          @PJL SET JAM=YES
    





7.6. File Conversion Support

  • forceconversion FLAG force use of file utility

  • default_language=default job language

The lpr -l or lp -b flags indicate that the spooled files are not to be processed by an output filter. The LPRng spooler recognizes this option and passes the -c command line option to suppress any language specific processing for files.

However, many PostScript printers cannot handle text files, and produce many hundreds of pages of garbage output if they are sent to the printer without being translated into PostScript, and some printers require language specific setup in order to print PCL, PostScript or text files correctly.

The ifhp filter has builtin tests for PJL, PCL, and PostScript files. These tests are almost identical to those used by many printers which do autodetection. If you need to recognize a wider range of file types, you can configure ifhp to use the UNIX file(1) program.

Finally, some printers have a very specialized job format that requires conversion to by a rasterizer program. This is handled as detailed in the following sections.


7.6.1. File Type Detection

  • file_util_path=file utilty path

  • forceprocessing FLAG force file processing

The ifhp filter has a set of built-in tests to determine if the input job file is PJL, PostScript, and PCL, or (default) text, and flags the file with language types pjl, ps, pcl, and text respectively.

You can also use the UNIX file utility utility to determine type as well. The file utility is invoked with it STDIN attached to the file and ifhp uses the information it writes to STDOUT as the raw file type. The ifhp program will convert the output to lowercase, remove multiple whitespace characters, and replace the remaining whitespace characters with underscores _.

By default, ifhp will not try to detect binary files, i.e. - files printed with the binary or literal flag (-c command line flag). You can use the forceprocessing flag to cause all files of all types to be processed. ifhp will first try to use its builtin tests and then will use the file utility. You can set the forceconversion flag to force ifhp to only use the file utility. The following shows the information in the ifhp.conf file used to configure the file type detection.

    ##forceprocessing - check all files for type - default 'no'
    forceprocessing@
    ## default
    default_language=text
    ## force only use of file program
    ## default is to let ifhp try first, then try file
    forceconversion@
    ##  file utility path
    file_util_path=/usr/bin/file -


The output of the file utility is converted to lower case and used as the language type for further processing.


7.6.2. Conversion

  • file_output_match= TABLE file utility output match list

  • language=language type override

Once the language type has been determined, the ifhp filter then decides if a conversion program needs to be run and will convert the input file to a required file type. This activity is controlled by the file_output_match table.

    file_output_match = [
      *postscript*  ps  \%s{ps_converter}
      *pcl*         pcl  \%s{pcl_converter}
      *pjl*         pjl  \%s{pjl_converter}
      *printer*job*language* pjl
      *text*  pcl  \%s{pcl_converter}
      *gzip_compressed*  filter  \%s{gzip_decompresser}
      ]
Each line of the file_output_match table contains a (URL encoded) glob pattern, the language type (ps, pcl, etc.) produced by the conversion program, and the (optional) conversion program.

The format:

    file_output_match = </pathname


will cause ifhp to open and read the specified file for the file_output_match table. The file's contents must have the same format as the file_output_match table but without the [ or ] delimiters.

The file_match_table is scanned from first to last entry for a glob pattern that matches the file type determined by the ifhp program or the output of the file_util_path program. If no match is found, then the language is set to the default_language value.

The output language of the conversion program is set to the second entry. The conversion program will be run with its STDIN set to the input file and its STDOUT used as the converted output. If there is no conversion program then the original file is used and only the language type is modified.

The filter language type causes the specified conversion program to be run and then the output of the program to be reprocessed. As shown above, this allows file decompression routines to be used to expand the files.

The following are some short samples of what can be done with the conversion facility.

    # set up GhostScript
    gs_device=epsonc
    gs_options=-r1440
    gs=/usr/bin/gs
    gs_converter= [ \%s{gs} -dBATCH -q -sOutputFile=- \
      -sDEVICE=\%s{gs_device} \%s{gs_options} - ]
    # use GhostScript for conversion
    ps_converter = [ \%{gs_converter} ]
    text_converter= [/usr/bin/a2ps -q -B -1 -M Letter \
      --borders=no -o- \%s{ps_converter} ]
    gzip_decompresser = [ /usr/bin/gzip -c -d ]
    
    [ ghostscript gs ]
    file_output_match = [
      *postscript*  ps  \%s{ps_converter}
      *text*  pcl  \%s{pcl_converter}
      *gzip_compressed*  filter  \%s{gzip_decompresser}
      ]
    
    Printcap entry:
    
    pr:
      :ifhp=model=ghostscript,gs_device=laserjet,gs_options=-r300x300


In this example, we have shown a very interesting device - the GhostScript device. We use the gs (GhostScript) program to do the conversion, and specify the gs_device and gs_options values in the printcap entry. There are a few details that should be observed when using this facility.

  1. The output from the file program has spaces converted to underscores. If you need to match spaces then use the underscore in the pattern. For example, ascii text would be matched by *ascii_text*.

  2. If the conversion program contains a shell meta character such as |, ;, >, <, etc, then it will be executed using /bin/sh -c 'command'. This allows a pipe of conversion commands to be constructed. This is discussed in detail below.

  3. The most commonly used conversion programs are GhostScript, used to convert PostScript to a format compatible with a non-PostScript printer, and the a2ps, enscript, and textps Text to PostScript conversion programs which convert text into PostScript for a non-text supporting printer. The use of a wrapper program with these utilities is discussed below.

  4. All of the command line options can be substituted on the command line using \%{X}, where X is the single letter command line option flag.

  5. The \%s{ARGV} value is replaced by the command line arguments.

  6. The conversion program must exit with a 0 error code or an error is assumed to have occurred.



The enscript program will exit with a non-zero error codes even for successful conversions and we need to use a wrapper script that will run it and then return the correct error code as shown below.

    #!/bin/sh
    # /usr.../wrapper path [options]
    # wrapper script for a2ps, enscript and others
    #   path is the path to the program and options are the
    #   options to pass.  The program is run and then the exit
    #   code is corrected
    "$@"
    status=$?
    case "$status" in
        1 ) exit $status ;;
    esac
    exit 0



7.6.3. LF to CR/LF Conversion

  • crlf FLAG LF to CR-LF conversion

When processing text or pcl files, the crlf option will enable translation of LF (\n) to CR/LF (\r\n) sequences. If you are using ifhp to simply do LF to CR/LF translation, then you can use:

    ifhp -Tcrlf



7.6.4. Text Treated Like PCL

Text is simply PCL with no special formatting codes. However, you will still need to send the PCL initialization strings to the printer. You can do this by using the following entry in the file_output_match table:

    file_output_match = [
     *text*  pcl
     ]



7.6.5. Default to Passthrough

Your printer may be capable of handling a wide variety of job formats. If you want to simply pass through files of unknown type or language then use the following entry in the file_output_match table:

    file_output_match = [
     *  raw
     ]



7.7. GhostScript Printer

Generating a raster image from a PostScript or PCL file in a timely manner requires a high speed processor and substantial amounts of memory. Many of the low cost printers require the user's system to do the raster conversion, and a raster file is then transferred to the printer. These files are usually in a proprietary format. The GhostScript program can process PostScript files and produce raster output for a wide range of devices. See the GhostScript documentation for details. Some printers have PCL support but do not support PostScript. The gs and pcl_gs printer configuration support these printers.

    # PRINTER ghostscript - Printer with GhostScript conversion to raster files
    gs_converter= [ /usr/bin/gs -dSAFER -dBATCH -q 
       -sOutputFile=- -sDEVICE=\%s{gs_device} \%s{gs_options} -
     ]
    text_converter= [ /usr/bin/a2ps -q -B -1 -M Letter --borders=no -o-
     ]
    
    [ ghostscript gs ]
    pcl@
    pjl@
    ps
    text@
    file_output_match = [
    # PostScript to Raster
      *postscript*  raw  \%s{gs_converter}
    # text to PostScript to Raster conversion
      *text*  filter  \%s{text_converter}
      ]
    
    # PRINTER pcl_gs - PCL Printer with GhostScript conversion to raster files
    [ pcl_gs ]
    pcl
    pjl@
    ps
    text@
    file_output_match = [
    # PostScript to Raster
      *postscript*  raw  \%s{gs_converter}
      *pcl*  pcl
    # text to PostScript to Raster conversion
      *text*  filter  \%s{text_converter}
      ]


The \%s{gs_device} and \%s{gs_options} parameters can now be specified in the printcap. The following shows a typical printcap entry for use with this entry.

    #  force clients (lpr, lpq, to use server)
    lp:lp=lp@serverhost 
    # server information  
    lp:server  
      :sd=spooldir 
      :lp=/dev/lpt0     
      :...  
      :ifhp=model=gs,gs_device=epson,gs_options=-r240x72 
      #path to ifhp filter  
      :filter=/.../ifhp 


The ifhp configuration entry uses GhostScript to do the rasterization of the PostScript file, and the a2ps program to do a text to PostScript conversion.


7.8. Language Specific Initialization

  • ps_init= PostScript initialization steps

  • pcl_init= PCL initialization steps

After determining the output file language type, language specific operations are then carried out by expanding the language_init=[ ... ] options in the language context, and then the options in the -Toption=value and -Zoption=value command line options. The -T options are expanded before the -Z, allowing the -Z actions to override any set by the -T actions.

As mentioned elsewhere, the reason for the language specific processing is to allow different actions for the same command line option, depending on the file type that is being processed. For example, when processing a PCL file it might be necessary to send PCL command strings and when processing a PostScript file, you would need to send PostScript commands.


7.9. File Transfer and Error Status Monitoring

  • logall FLAG log all printer status

  • pjl_error_codes TABLE PJL error code translations

  • pjl_quiet_codes TABLE ignore these PJL error codes

  • pjl_alert_codes TABLE alert operation on these PJL error codes

  • pjl_alert_handler TABLE program to alert operator

If the printer can return status, i.e., the status option is on, the filter will read status information from the printer.

If the logall flag is SET, then all error messages will be written to the status or log file.

If the printer is returning PJL status information, then this has a specific format:

    @PJL UINFO DEVICE
    CODE=nnnn
    DISPLAY="value"
    ...
    
    @PJL UINFO JOB
    START
    ...
    
    @PJL UINFO JOB
    END
    ...


The ifhp program will extract the CODE and job start and end flags, and log these as appropriate.

Unfortunately, some PJL based printers are extremely verbose in their generation of status messages. In order to reduce the amount of logging of redundant information, ifhp will only record when a device status has changed, rather than when it has been reported.

The pjl_quiet_codes=[ code code code ] value is used to suppress reporting of selected error codes. If the error code is in the pjl_quiet_codes list, then the error status will not be reported to the user unless the logall option is set. The list of values is used as glob patterns. For example:

      pjl_quiet_codes=[ 10000 10001 10003 10023 10024 35078 41* ]


Also, there may be error codes which do not have a builtin error message available. New messages can be added using the pjl_error_codes option. Its value is a list of lines, each line consisting of an error code followed by the corresponding error message:

    pjl_error_codes=[
       code=msg
       code=msg
       ...
    ]
    
    Example:
      pjl_error_codes=[
         10000=powersave mode
         10001=Ready Online
         10002=Ready Offline
         10003=Warming Up
         10004=Self Test
         10005=Reset
      ]


Finally, there are codes or classes of codes that require operator intervention. These are specified using the pjl_alert_codes, and the pjl_alert_handler program will be invoked to send them to the appropriate destination. The formated error message will be available on STDIN for the handler. For example:

    pjl_alert_codes=[ 41* 42* 23* ]
    pjl_alert_handler=/usr/local/libexec/filters/alert_handler



7.10. End of Job

  • waitend OPTION wait for job completion status

  • waitend_interval=query for end at this interval

  • waitend_ctrl_t_interval=send CTRL-T at this interval

The waitend option controls the job termination sequence. By default, this will do the same work as the sync operation, and the option takes the same set of values.

If waitend is suppressed using waitend@, then as soon as a job has been transferred, the next step, pagecount, will be attempted. If the print job has not finished at this point, then erroneous page counts will be reported.

When the appsocket protocol is used, suppressing waitend will cause no error messages from the printer to be reported.

Some printers do not have a True End Of Job reporting capability using PJL. This means that the job will be reported as done, but paper is still moving through the print engine. If you try to get pagecounts at this point you will get the wrong value. An alternative method is to set waitend=ps and The end_ctrl_t=word:word:... This will cause a CONTROL-T to be sent to the printer, a PostScript convention that will cause the PostScript interpreter to return the actual printing status. In most printers this will be printing or something other than idle or busy as long as paper is moving in the print engine. When status is returned, the words in the end_ctrl_t=word:word:... list value are examined for a match. If the status word is present then the end of job condition is assumed.

The waitend_interval value controls how often the waitend operation is repeated. This is usually set to a fairly large value, as it is normally used only to recover from printer failures such as users turning the printer on and off.

The waitend_ctrl_t_interval controls how often the printer is queried for status using CTRL-T and is usually set to a short (2 or 3 second) value.


7.11. Tektronix Phaser, QMS and AppSocket Support

  • appsocket FLAG connect to printer and use AppSocket Protocol

The appsocket flag is used to specify that data transfer will be done using the AppSocket protocol. The ifhp filter will open a connection to the ip address and port specified by the dev=host%port option and carry out the various operations that it needs to do.

Normally after sending information to the printer a close() operation is done on the network connection. This will usually be acceptible as the printer will print the job that was sent to it. However, some printers require that the network connection be left open to report status.

If page count information is needed, the ifhp filter will then reopen the connection and get the page count information.


Chapter 8. Banners and OF Mode Operation

One of the more difficult administrative issues is whether to print banners (job separators) or to save the large amount of wasted paper, time and effort. The LPRng and ifhp combination provide a rather esoteric set of methods to generate banners, at least one of which should be suitable for your application.

You should be aware that some printers have the obnoxious habit of generating their own banner pages when jobs are transferred via the RFC1179 protocol. You should consult the manufacturers documentation and take the necessary steps to turn printer banner page generation off. It may turn out that this is impossible to do, and in that case the only option is to use the Socket or Appsocket connection methods.

In the original BSD print spooler, the :of print filter was responsible for banner generation. The print server would send it a magic string that the filter would recognize as a print a banner request, and it would then generate a banner. After this, another special magic cookie string, the character sequence 0x19,0x01, was sent to cause the :of filter to suspend itself. This allowed the print spooler to hold the connection to the printer open while it started another filter to transfer a file. Finally, after all the jobs were sent, the :of filter was sent a SIGCONT signal to wake up and perform whatever closing operations were necessary.

This mixing of functionality causes horrible problems when special setup strings must be sent to printers in order to configure them for various operation. In order to avoid these problems, the banner printing and filter functions have been separated in the ifhp filter. If a banner is needed, then LPRng will use a special banner generating program to generate the banner. The output of this program is then sent to the :of filter, or directly to the printer if there is no :of filter.


8.1. No Banner

Here is a typical printcap entry when banner printing is not wanted:

    lp:
      :sh
      :filter=/.../ifhp


The :sh (suppress headers or banners) explicitly disables banner printing, and the lpd server will not even attempt to print a banner.


8.2. Banner Printing and No OF Filter

This printcap entry specifies a banner generator program and and banner generation. There is no :of filter specified, so the banner is sent directly to the printer. In such a case the banner printing program should make sure that it generates output with the appropriate set of initialization strings. The pclbanner, psbanner, and lpbanner programs produce PCL, PostScript, and text banners suitable for a wide range of printers. The code for these banner generators is part of the LPRng distribution.

    lp:
      :bp=/.../pclbanner
      :of=/.../ifhp
      :filter=/.../ifhp
       # or
      :bp=/.../psbanner
      :of=/.../ifhp
      :filter=/.../ifhp
       # or
      :bp=/.../lpbanner
      :of=/.../ifhp
      :filter=/.../ifhp



8.3. Banner Printing With OF Filter

Finally, we may want banner printing together with the :of filter. This is usually the case when we need to perform special printer setups or require the ifhp filter to do accounting. In this case we need to make sure that the banner page is counted as part of the job:

    lp:
      :bp=/.../pclbanner or :bp=/.../psbanner or :bp=/.../lpbanner
      :of=/.../ifhp
      :filter=/.../ifhp


When invoked as an :of filter, the lpd server passes a -Fo option on the command line, so that the ifhp filter knows what mode it is operating in.


8.4. LPRng Options Controlling Banner Printing

The lpr -h (no header or banner) option suppresses putting banner name (L line) into the control file. The LPRng :ab (always banner) overrides this, and will print a banner using the user name information. The :sh (suppress header) option will override everything and prevent banners from being generated.

Banners are generated by the :bp=/... (banner program) program; different banners at start and end can be generated by using the :bs=/... (banner start) and :be=/... (banner end) options, which override the :bp= option.


8.5. of_options option

This option, usually used on the command line or in the printcap file as part of the :ifhp information, specifies a set of options to use when the filter is running in OF mode. For example:

    lp:
      :ifhp=sync@,pagecount@,waitend@,of_options=sync pagecount waitend
      :filter=/usr/local/libexec/filtes/ifhp
      :of=/usr/local/libexec/filtes/ifhp
    
    same as:
    
    lp:
      :filter=/usr/local/libexec/filtes/ifhp -Tsync@,pagecount@,waitend@
      :of=/usr/local/libexec/filtes/ifhp -Tsync,pagecount,waitend


In this printcap entry, the ifhp filter is invoked normally with the sync@, pagecount@ and waitend@ options. This causes it to send jobs as fast as possible to the output device and only monitor the device for error status. The of= entry causes the lpd print spooler to start ifhp in OF mode, and the of_options are used to override the other ones.


Chapter 9. Font Download Support

For historical reasons, there is support for downloading a font or other file to the printer. A large amount of the necessary operations are now in the ifhp.conf file.

The font_download built-in option supports downloading as described below.


9.1. PCL Font Downloading

The following shows the a typical ifhp.conf file which has PCL font downloading enabled.

    #
    # Fonts and Font Downloading
    #  fontid is used to set the current font
    pcl_init=[ ... font ... ]
    
    # combination command
    pcl_font=[ delete_fonts font_id font_download font_primary ]
    
    # font control
    #
    font_op=0
    pcl_font_op=\033*c\%{font_op}F
    pcl_delete_fonts=\033*c0F
    
    font_id=1
    pcl_font_id=\033*c\%{font_id}D
    
    # set primary font
    font_primary=1
    pcl_font_primary=\033(\%{font_primary}X
    
    # font directory
    pcl_fontdir=/usr/local/lib/fonts
    
    #default font file
    font=c1201b.10


To allow users to download a font and have it set up for PCL use, the pcl_init option should include the font option in an appropriate position in the initialization sequence. As shown above, this will get expanded into the pcl_delete_fonts, pcl_font_id, pcl_font_download (which is has built-in support), and the pcl_font_primary options, which are expanded in order.

The pcl_font_download is supported by the builtin operation which will find the pcl_fontdir directory value and a value for the font variable, using values from the -Z and -T and configuration information in that order. If no font value is found, no font will be downloaded. For example:

    lpr -Tfont=font1,font2


When the pcl_font_download option is expanded, it will generate the pathnames /usr/local/lib/fonts/font1 and /usr/local/lib/fonts/font2, open these files, and send their contents directly to the printer.


9.2. PS Font Downloading

PostScript font downloading is supported in a similar manner to PCL font downloading.

    #
    # Fonts and Font Downloading
    #
    ps_init=[ ... font ... ]
    
    # combination command
    ps_font=[ font_download ]
    
    # font directory
    ps_fontdir=/usr/local/lib/fonts
    
    #default font file
    font=font.ps.10


In a similar manner to the PCL font downloading, when the ps_init list is expanded, the ps_font entry will be expanded in turn. If the -Zfont=ZapDingbat.ps is specified, then the /usr/local/lib/fonts/ZapDingbat.sp file will be opened and downloaded to the printer.


9.3. PJL File Downloading

In a similar manner to the above font downloading, you can specify a configuration or other setup file that should be sent to the printer as part of the PJL setups. The following configuration shows how to set this up.

    #
    # PJL Initialization File Downloading
    #  fontid is used to set the current font
    pjl_init=[ ... setup  ... ]
    
    setup=initval
    font=\%s{setup}
    # setup directory
    pjl_fontdir=/usr/local/lib/fonts
    pjl_setup=[ font_download ]


The above configuration will cause the value of the setup -Z, -T or configuration option to be used.


Chapter 10. Debugging and Problem Solving

If you are reading this section, then most likely you have had a problem using ifhp with LPRng. Before going any further, please read RFC1179 (BSD or TCP/IP) Job Transfer Printcap Entry, and make sure that your printcap entry has the lpd_bounce flag set. This is the Most Frequently Asked Question and the Most Frequently Provided Answer on the LPRng mailing list.

The following section outlines a method to debug problems with the ifhp filter. It will make use of some diagnostic options that are normally not used in a printcap entry. First, let us start with a typical printcap entry and a problem.

    lw4:
      :lp=10.0.0.14%9100
      :sd=/var/spool/lpd/%P
      :ifhp=/usr/local/lib/filters/ifhp
    
    Command:
      lpr -Plw4 -V /etc/motd
    
    LPR output:
    
    sending job 'papowell@h4+223' to lw4@localhost
    connecting to 'localhost', attempt 1
    connected to 'localhost'
    requesting printer lw4@localhost
    sending control file 'cfA223h4.private' to lw4@localhost
    completed sending 'cfA223h4.private' to lw4@localhost
    sending data file 'dfA223h4.private' to lw4@localhost
    completed sending 'dfA223h4.private' to lw4@localhost
    done job 'papowell@h4+223' transfer to lw4@localhost
    Version LPRng-3.6.14


When trying to print to the print queue, the user discovers that no output comes out of the printer. The immediate suspicion is that the filter is not working. You should make sure that the lpr command is actually sending the job to the print queue. You can then use lpq to discover what happened:

    # lpq -llll
    Printer: lw4@h4  'Hp : Laserwriter'
     Queue: no printable jobs in queue
     Status: subserver pid 27251 starting at 15:34:09.350
     Status: accounting at start at 15:34:09.357
     Status: opening device 'h14.private%9100' at 15:34:09.366
     Status: printing job 'root@h4+223' at 15:34:09.375
     Status: printing data file 'dfA223h4.private', size 3, IF filter 'ifhp' at 15:34:09.376
     Status: IF filter finished at 15:34:35.012
     Status: printing done 'root@h4+223' at 15:34:35.012
     Status: accounting at end at 15:34:35.014
     Status: finished 'root@h4+223', status 'JSUCC' at 15:34:35.014
     Status: subserver pid 27251 exit status 'JSUCC' at 15:34:35.018
     Status: lw4@h4.private: job 'root@h4+223' printed at 15:34:35.020
     Status: job 'root@h4+223' removed at 15:34:35.101
     Filter_status: accounting at start, pagecount 89696, pages 0 at 15:34:13.304
     Filter_status: sending job file at 15:34:13.306
     Filter_status: starting transfer at 15:34:13.306
     Filter_status: initial job type 'text' at 15:34:13.306
     Filter_status: job type 'pcl' at 15:34:13.306
     Filter_status: transferring 3 bytes at 15:34:13.308
     Filter_status: 100 percent done at 15:34:13.308
     Filter_status: finished writing file, cleaning up at 15:34:13.308
     Filter_status: sent job file at 15:34:13.308
     Filter_status: doing cleanup at 15:34:13.308
     Filter_status: getting end using 'pjl job/eoj' at 15:34:13.309
     Filter_status: end of job detected at 15:34:33.219
     Filter_status: getting pagecount using 'pjl info pagecount' at 15:34:33.219
     Filter_status: final pagecount 89697 at 15:34:35.009
     Filter_status: accounting at end, pagecount 89697, pages 1 at 15:34:35.010
     Filter_status: done at 15:34:35.010


As you can see from the lpq output, the Status section shows the lpd activities and the Filter_status section shows what ifhp is doing. This is the first line of defense - make sure that the information and errors reported here are for the correct filter.

If this does not help, then we will start with the basic filter tests and work our way back to the print server. First, you will need a couple of test files. If you have a PostScript printer, find a simple PostScript file - the ellipse.ps file is included in the ifhp distribution in the UTILS directory. You will also need a short text file - /etc/motd is usually handy to use.

Create the /tmp/send file with the following contents:

    #!/bin/sh
    cp /dev/null /tmp/t
    /usr/local/libexec/filters/ifhp -Tdev=/tmp/t,trace,debug=1 </etc/motd 2>/tmp/trace


This will create the /tmp/t file, run the ifhp filter, and put the trace and debugging information into the /tmp/trace file. Run this command using:

    #!/bin/sh
    sh -x /tmp/send


Examine the output in /tmp/trace. It will look like:

    ifhp 15:46:14.402 [27307] main: Debug '1'
    ifhp 15:46:14.403 [27307] main: dump <NULL>
    ifhp 15:46:14.403 [27307] main: Model_id '<NULL>'
    ifhp 15:46:14.440 [27307] main: scanning Raw for default, then model '<NULL>'
    ifhp 15:46:14.441 [27307] Select_model_info: id 'default', list->count 1940, model->count 0, init 0
    ifhp 15:46:14.448 [27307] Dump_line_list: main: Model information - count 156, max 204, list 0x806e000
    ifhp 15:46:14.448 [27307]   [ 0]='T=dev=/tmp/g,trace,debug=1'
    ifhp 15:46:14.448 [27307]   [ 1]='banner@'
    ifhp 15:46:14.448 [27307]   [ 2]='banner_file=/usr/local/libexec/filters/psbanner.ps'
    ifhp 15:46:14.448 [27307]   [ 3]='converter='
    ifhp 15:46:14.448 [27307]   [ 4]='debug=1'
    ifhp 15:46:14.449 [27307]   [ 5]='default_language=text'
    ifhp 15:46:14.449 [27307]   [ 6]='dev=/tmp/g'
    ifhp 15:46:14.449 [27307]   [ 7]='duplex_select=1'


Most of the information with debug level 1 is simply showing the details of options, command execution, and error status. This will, however, help with the majority of problems.

You can now modify the /tmp/send file to better reflect your printer.

    #!/bin/sh
    cp /dev/null /tmp/t
    # substitute your ifhp options here
    ifhp=model=hp4,status@
    /usr/local/libexec/filters/ifhp -Tdev=/tmp/t,trace,debug=1,${ifhp} </etc/motd 2>/tmp/trace
Now run this again and examine the trace and output in /tmp/t. If this looks correct, we move on to the interactive tests.

If your printer is a network based printer and you are using RFC1179 transfers, then you can use the following lpr command to send the /tmp/t file directly to the printer:

      lpr -Ppr@host /tmp/t
    Example:
      print queue 'raw'
    
      lpr -Praw@10.1.1.1 /tmp/t


This form of the command causes lpr to send the job directly to the printer. If this works correctly then we know that there is no problem with ifhp formatting the file, and that the problem must be with the lpd print spooler.

If your printer is network based and uses a socket connection, then you can have ifhp connect to the printer by using the dev=host%port connection option. This is only used for testing or when you want to use the AppSocket protocol.

    #!/bin/sh
    # substitute your ifhp options here
    #  this should always work
    #ifhp=model=hp4,status@
    #  this does status checking, no pagecount
    #ifhp=model=hp4,pagecount@
    #  this does status checking and pagecount
    #ifhp=model=hp4
    /usr/local/libexec/filters/ifhp -Tdev=10.1.1.1%9100,trace,debug=1,${ifhp} </etc/motd 2>/tmp/trace


If you have a windowing system, run this command from one window and in another window use the tail -f /tmp/trace command to view status. Most of the time you will discover that the system is failing to print because either the sync, pagecount, or waitidle step of the printing process is not completing correctly. If there is insufficient detail for you to decide the failure mechanism, set debug=3, or even debug=4 and explore what is happening.

If you have a parallel port connected printer on /dev/lptxx, then you can simply use cat /tmp/t >/dev/lptxx and see what happens. If this works, then use:

    #!/bin/sh
    # substitute your ifhp options here
    ifhp=model=hp4,status@
    /usr/local/libexec/filters/ifhp -Tdev=/dev/lptxxx,trace,debug=1,${ifhp} </etc/motd 2>/tmp/trace


If you have a serial port printer, then you can use a similar method for setting up a connection. You will need to use the undocumented stty option to set the speed and other parameters. These are identical to those used by LPRng, so you should have no problems.

    #!/bin/sh
    # substitute your ifhp options here
    #  this should always work
    #ifhp=model=hp4,status@
    #  this does status checking, no pagecount
    #ifhp=model=hp4,pagecount@
    #  this does status checking and pagecount
    #ifhp="model=hp4,stty= 9600 -parity crtscts raw"
    stty="9600 -parity crtscts raw"
    /usr/local/libexec/filters/ifhp -Tdev=/dev/tty00,trace,debug=1,${ifhp},stty=\"${stty}\" </etc/motd 2>/tmp/trace


If all this does not help, then subscribe to the LPRng mailing list and ask for help.


Appendix A. Index to Options

Table A-1. ifhp.conf - ifhp Options

Option Purpose
default HP 4M Plus, PostScript, PJL, PCL, status, pagecount support
appsocket FLAG Use Tektronix AppSocket Protocol
config=PATHNAMES Configuration file pathnames
crlf FLAG Do LF to CRLF translation
debug FLAG Debugging level
default_language=LANGUAGE Default job file language (ps, pcl, raw, text, etc)
endpage=NNN PJL JOB command END = NNN value
forceconversion FLAG Force conversion using UNIX file(1) utility
file_output_match=LIST File type and conversion matching
file_util_path=PATHNAME Pathname of the UNIX file(1) utility
language=LANGUAGE Specify job file language to be used (ps, pcl, raw, text, etc)
logall FLAG Log all status reports from printer if set
nullpad=COUNT Send COUNT nulls to force full buffer condition
model=NAME Specify model name for configuration selection
model_from_option=X Specify model name using a command line option value
pagecount=LANGUAGE Get pagecount using pjl, ps or default
pagecount_interval=SECONDS Send pagecount command at SECONDS interval
pagecount_ps_code=STRING PostScript code to get pagecount information
pagecount_timeout=SECONDS Timeout getting pagecount after SECONDS
pcl FLAG Printer supports PCL if set
pcl_eoj_at_start FLAG PCL EOJ (CTRL-D) at start of job
pcl_init=LIST PCL initializations to be done
pcl_user_opts=LIST User PCL options supported
pjl FLAG Printer supports PJL if set
pjl_alert_codes=LIST alert operator on these PJL error codes
pjl_alert_handler=STRING program to alert operator on PJL error
pjl_console FLAG Printer supports messages on console
pjl_error_codes=LIST PJL error messages for error codes
pjl_except=LIST Do not allow these PJL commands
pjl_init=LIST PJL initializations to be done
pjl_job FLAG PJL JOB and EOJ supported
pjl_only=LIST Allow only these PJL commands
pjl_quiet_codes=LIST ignore these PJL error codes
pjl_user_opts=LIST Allow only these user PJL commands or variables to be set
pjl_vars_except=LIST Do not allow these PJL variables to be set
pjl_vars_set=LIST Allow these PJL variables to be set
ps FLAG Printer supports PostScript (ps)
ps_eoj_at_start FLAG PostScript EOJ (CTRL-D) at start of job
ps_init=LIST PS initializations to be done
ps_user_opts=LIST Support these PostScript user options
remove_ctrl=LIST Remove these characters from PostScript jobs
remove_pjl_at_start FLAG Remove PJL commands from begining of job
startpage=NNN PJL JOB command START = NNN value
send_job_rw_timeout=NNN Timeout for non-responding printer
status FLAG Printer supplies status information
statusfile=PATHNAME Status file pathname
statusfile_max=NNN Status file has maximum size of NNN Kbytes
statusfile_min=NNN Status file has truncated size of NNN Kbytes
summaryfile=PATHNAME Summary file pathname
sync FLAG Synchronize printer if set
sync_interval=SECONDS Send synchronization request at SECONDS interval
sync_timeout=SECONDS Timeout synchronization request after SECONDS
tbcp FLAG Use Transparent Binary Communications Protocol for PostScript files
text FLAG Printer supports text mode
trace FLAG Put error and trace messages on STDERR if set
waitend=METHOD How to wait for printer to end printing
waitend_interval=SECONDS How often to query printer for end of printing
waitend_ctrl_t_interval=SECONDS How often to send CTRL-T for end of printing status



Appendix B. HP JetDirect Card Support

The HPJetDirect card or external JetDirect box can be configured through the printer front panel or through a set of network files. Here is a summary of the methods used from UNIX systems, or when you are desperate, to configure the printer.


B.1. MicroSoft JetDirect Support

There is limited support from HP for non-MicroSoft configuration tools. However, the tools that are provided are simple and easy to use, especially for the initial configuration.


B.2. TCP/IP Address

You can set the TCP/IP address from the front panel. Reset the printer and then use the MENU, +-, SELECT keys as follows:

     MENU  -> MIO MENU (use MENU to display MIO MENU)
     ITEM  -> CFG NETWORK=NO*
     +     -> CFG NETWORK=YES
     ENTER -> CFG NETWORK=YES*
     ITEM  -> TCP/IP=OFF* (use ITEM to display TCP/IP)
     +     -> TCP/IP=ON
     ENTER -> TCP/IP=ON*
     ITEM  -> CFG TCP/IP=NO* (use ITEM to display TCP/IP)
     +     -> CFG TCP/IP=YES
     ENTER -> CFG TCP/IP=YES*
     ITEM  -> BOOTP=NO*
         (Enable BOOTP if you want to - see below)
     ITEM  -> IP BYTE 1=0*
         This is IP address MSB byte.
         Use +- keys to change value, and then ENTER to change
         Use ITEM keys to get IP BYTE=2,3,4
     ITEM  -> SM BYTE 1=255*
          This is the subnet mask value
         Use +- keys to change value, and then ENTER to change
         Use ITEM keys to get IP BYTE=2,3,4
     ITEM  -> LG BYTE 1=255*
         This is the Syslog server (LoGger) IP address
         Use +- keys to change value, and then ENTER to change
         Use ITEM keys to get IP BYTE=2,3,4
     ITEM  -> GW BYTE 1=255*
         This is the subnet gateway (router) IP address
         Use +- keys to change value, and then ENTER to change
         Use ITEM keys to get IP BYTE=2,3,4
     ITEM  -> TIMEOUT=90
          This is the connection timeout value.  It puts a limit
         on time between connections.  A value of 10 is reasonable.



B.3. Web Server Configuration

Many of the newer releases of HP JetDirect firmware have a Web Server configuration capability. Unfortunately, the web pages assume that you have JavaScript support for the browser, and not all of the facilities used are supported by all browsers. However the configuration information and pages presented are extremely simple to use and understand.

The major problem with the Web Server configuration is that not all of the options can be set through the Web Server pages.


B.4. Telnet Configuration

Once you have assigned an IP address to the JetDirect Box you can telnet to the box and configure it through a simple command line interface. When you first connect to the box, hit RETURN a couple of times, followed by ? (Question Mark) RETURN and you should get a simple help menu. This help information usually scrolls off a small (25 line) screen so a buffer that allows you to see all of the information is advisable.

The major problem with the telnet configuration is that not all of the options can be set through the command line facilties.


B.5. BOOTP Information

If you have a bootp server, you can put this information in the bootptab file. To use this, you must enable the bootp option on the printer. The T144 option specifies a file to be read from the bootp server. This file is read by using the TFTP protocol, and you must have a TFTPD server enabled. Here is a sample bootptab entry.

    # Example /etc/bootptab: database for bootp server (/etc/bootpd).
    # Blank lines and lines beginning with '#' are ignored.
    #
    # Legend:
    #
    #       first field -- hostname
    #                       (may be full domain name)
    #
    #       hd -- home directory
    #       bf -- bootfile
    #       cs -- cookie servers
    #       ds -- domain name servers
    #       gw -- gateways
    #       ha -- hardware address
    #       ht -- hardware type
    #       im -- impress servers
    #       ip -- host IP address
    #       lg -- log servers
    #       lp -- LPR servers
    #       ns -- IEN-116 name servers
    #       rl -- resource location protocol servers
    #       sm -- subnet mask
    #       tc -- template host (points to similar host entry)
    #       to -- time offset (seconds)
    #       ts -- time servers
    #
    # Be careful about including backslashes where they're needed.  Weird (bad)
    # things can happen when a backslash is omitted where one is intended.
    #
    peripheral1:
    :hn:ht=ether:vm=rfc1048:
    :ha=08000903212F:
    :ip=190.40.101.22:
    :sm=255.255.255.0:
    :gw=190.40.101.1:
    :lg=190.40.101.3:
    :T144="hpnp/peripheral1.cfg":


If you are using the T144 option, you will need to create the configuration file. The sample configuration file from the HP Direct distribution is included below.

    #
    # Example HP Network Peripheral Interface configuration file
    #
    # Comments begin with '#' and end at the end of the line.
    # Blank lines are ignored.  Entries cannot span lines.
    
    # Name is the peripheral (or node) name.  It is displayed on the peripheral's
    # self-test page or configuration plot, and when sysName is obtained through
    # SNMP.  This name can be provided in the BOOTP response or can be specified
    # in the NPI configuration file to prevent the BOOTP response from overflowing
    # the packet.  The domain portion of the name is not necessary because the
    # peripheral does not perform Domain Name System (DNS) searches.  Name is
    # limited to 64 characters.
    
    name: picasso
    
    # Location describes the physical location of the peripheral.  This is the
    # value used by the interface for the MIB-II sysLocation object.  The default
    # location is undefined.  Only printable ASCII characters are allowed.
    # Maximum length is 64 characters.
    
    location: 1st floor, south wall
    
    # Contact is the name of the person who administers or services the peripheral
    # and may include how to contact this person.  It is limited to 64 characters.
    # This is the value used by the interface for the MIB-II sysContact object.
    # The default contact is undefined.  Only printable ASCII characters are
    # allowed.  Maximum length is 64 characters.
    
    contact: Phil, ext 1234
    
    # The host access list contains the list of hosts or networks of hosts
    # that are allowed to connect to the peripheral.  The format is
    # "allow: netnum [mask]", where netnum is a network number or a host IP
    # address.  Mask is an address mask of bits to apply to the network number
    # and connecting host's IP address to verify access to the peripheral.
    # The mask usually matches the network or subnet mask, but this is not
    # required.  If netnum is a host IP address, the mask 255.255.255.255 can
    # be omitted.  Up to ten access list entries are permitted.
    
    # to allow all of network 10 to access the peripheral:
    allow: 10.0.0.0  255.0.0.0
    
    # to allow a single host without specifying the mask:
    allow: 15.1.2.3
    
    # Idle timeout is the time (in seconds) after which an idle
    # print data connection is closed.  A value of zero disables
    # the timeout mechanism.  The default timeout is 90 seconds.
    
    idle-timeout: 120
    
    # A community name is a password that allows SNMP access to MIB values on
    # the network peripheral.  Community names are not highly secure; they are
    # not encrypted across the network.  The get community name determines which
    # SNMP GetRequests are responded to.  By default, the network peripheral
    # responds to all GetRequests.  The get community name is limited to 32
    # characters.
    #
    # For hpnpstat and hpnpadmin, the community name can be stored in
    # /usr/lib/hpnp/hpnpsnmp.
    
    get-community-name: blue
    
    # The set community name is similar to the get community name.  The set
    # community name determines which SNMP SetRequests are responded to.  In
    # addition, SetRequests are only honored if the sending host is on the
    # host access list.  By default, the network peripheral does not respond
    # to any SetRequests.  The set community name is limited to 32 characters.
    #
    # The set community name can come from /usr/lib/hpnp/hpnpsnmp
    # if it is the same as the get community name.  We recommend that the
    # set community name be different from the get community name though.
    
    set-community-name: yellow
    
    # SNMP traps are asynchronous notifications of some event that has occurred.
    # SNMP traps are useful only with network management software.  Traps are
    # sent to specific hosts and include a trap community name.  Up to four
    # hosts can be sent SNMP traps.   The trap community name is limited to
    # 32 characters.  The default name is public.
    
    trap-community-name: red
    
    # The SNMP trap destination list specifies systems to which SNMP
    # traps are sent.  Up to four IP addresses are allowed.  If no
    # trap destinations are listed, traps are not sent.
    
    trap-dest: 15.1.2.3
    trap-dest: 15.2.3.4
    
    # The SNMP authentication trap parameter enables or disables the sending
    # of SNMP authentication traps.  Authentication traps indicate that an SNMP
    # request was received and the community name check failed.  By default,
    # the parameter is off.
    
    authentication-trap: on
    
    # The syslog-facility parameter sets the source facility identifier that the
    # card uses when issuing syslog messages.  Other facilities, for example,
    # include the kernel (LOG_KERN), the mail system (LOG_MAIL), and the spooling
    # system (LOG_LPR).  The card only allows its syslog facility to be configured
    # to one of the local user values (LOG_LOCAL0 through LOG_LOCAL7).  The
    # selectable option strings, local0 through local7 (configured to LOG_LOCAL0
    # through LOG_LOCAL7, respectively) are case insensitive.  The default
    # syslog-facility for the card is LOG_LPR.
    
    syslog-facility: local2
    
    # This parameter allows the card to treat hosts on other subnets as if the
    # hosts were on the card's subnet.  This parameter determines the TCP
    # Maximum Segment Size (MSS) advertised by the card to hosts on other subnets
    # and affects the card's initial receive-window size.  The card will use a
    # TCP MSS of 1460 bytes for local hosts, and 536 bytes for a non-local host.
    # The default is off, that is, the card will use the maximum packet sizes
    # only on the card's configured subnet.
    #
    # The configuration utility does not allow access to this parameter.  If you
    # want to configure it, you must manually edit the NPI configuration file
    # and add it to the bottom of the entry for the network peripheral.
    
    subnets-local: on
    
    # This parameter affects how the card handles TCP connection requests from
    # the host.  By default, the JetDirect MPS card will accept a TCP connection
    # even if the peripheral is off-line.  If this parameter is set to "on", then
    # the card will only accept a TCP connection when the peripheral is on-line.
    
    old-idle-mode: off



B.6. Timeouts

You should be aware that the idle-timeout value in the configuration file will override the value entered on the control panel of the printer.

Also, the @PJL SET TIMEOUT = NNN command will override this value as well.