Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems
[Various other changes/fixes affecting VMS] Still wondering. For the curious, a set of patches should be available at: http://antinode.info/ftp/wget/wget-1_13_4/1_13_4_1.dru That includes the changes to rehabilitate --preserve-permissions. News: The --help output now has one line which exceeds 80 characters: --random-wait wait from 0.5*WAIT...1.5*WAIT secs between retr ievals. Note, too, that, to a casual reader, it's not entirely clear what WAIT refers to here. -w, --wait=SECONDSwait SECONDS between retrievals. --waitretry=SECONDS wait 1..SECONDS between retries of a retrieval. Possibly SECONDS from one of those? Might be easier (or messier) if --random-wait could take a time value, too. Steven M. Schweda sms@antinode-info 382 South Warwick Street(+1) 651-699-9818 Saint Paul MN 55105-2547
Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems
Steven M. Schweda s...@antinode.info writes: [Various other changes/fixes affecting VMS] Still wondering. For the curious, a set of patches should be available at: http://antinode.info/ftp/wget/wget-1_13_4/1_13_4_1.dru can you please include a ChangeLog entry for each of them? Thanks, Giuseppe
Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems
From: Giuseppe Scrivano gscriv...@gnu.org http://antinode.info/ftp/wget/wget-1_13_4/1_13_4_1.dru can you please include a ChangeLog entry for each of them? --- ChangeLog._orig 2011-09-13 03:08:59 -0500 +++ ChangeLog. 2011-10-07 14:29:59 -0500 @@ -1,3 +1,38 @@ +2011-10-07 Steven Schweda s...@antinode.info + + * connect.c: Add HAVE_SYS_SELECT_H and HAVE_SYS_SOCKET_H conditions + on includes of sys/select.h and sys/socket.h, respectively. + + * ftp.c (getftp): Move BIN_TYPE_TRANSFER macro into VMS-specific + section. On VMS, use Stream_LF attributes for listing files. Pass + BIN_TYPE_FILE to fopen_excl() instead of constant-everywhere true. + + * ftp.c (ftp_retrieve_list): Restore lost test of opt.preserve_perm + (--preserve-permissions) on the chmod() operation. + + * init.c, main.c: Remove deprecated from opt.preserve_perm + (--preserve-permissions). + + * init.c (initialize): Use distinct messages for errors in C macro + SYSTEM_WGETRC and environment-variable SYSTEM_WGETRC. Avoid use of + C macro SYSTEM_WGETRC when it's not defined. + + * log.c (log_close): Avoid closing logfp when it's stderr. + + * main.c (print_help): Restore --preserve-permissions. + + * main.c (main): Avoid using a negative value of longindex as a + subscript (for long_options[]) when searching for --config. + + * main.c (main): Exit the program using exit() instead of return. + (VMS handles these differently, and exit() is better.) + + * openssl.c (ssl_init): Add type cast (SSL_METHOD *) to newly const + meth argument to accommodate OpenSSL version 0.9.8, where that + argument is not const in the OpenSSL function (SSL_CTX_new). + + * utils.c (fopen_excl): Comment typography. + 2011-09-13 Giuseppe Scrivano gscriv...@gnu.org * ftp.c (ftp_retrieve_glob): Propagate correctly the `res' error Note that in openssl.c, accomodate should be accommodate. (Not the only place in the code, but this one would be new and my fault.) The leading-tab indentation in src/ChangeLog seems to have some exceptions. And, of course, there are various changes to the VMS builders and other accessory files, but I don't know how these will be handled. Steven M. Schweda sms@antinode-info 382 South Warwick Street(+1) 651-699-9818 Saint Paul MN 55105-2547
Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems
Assuming that I eventually get satisfactory VMS builders constructed, is there any interest in including the VMS-specific files in the main wget distribution kit, or should I assume that the victim will need to obtain and unpack a suplementary VMS-specific kit (scattered VMS builders, vms/ directory) onto a normal wget source directory? (Or a complete VMS-compatible kit, as in the past.) Still wondering. The packaging affects the (VMS-specific) installation instructions, or I would care less. [Various other changes/fixes affecting VMS] Still wondering. News: The --help output now has one line which exceeds 80 characters: --random-wait wait from 0.5*WAIT...1.5*WAIT secs between retr ievals. Steven M. Schweda sms@antinode-info 382 South Warwick Street(+1) 651-699-9818 Saint Paul MN 55105-2547
Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems
And a (very) minor typo: ALP $ gdiff -u src/utils.c_orig src/utils.c --- src/utils.c_orig2011-08-29 03:01:24 -0500 +++ src/utils.c 2011-10-02 23:22:29 -0500 @@ -769,8 +769,7 @@ open_id = 13; fd = open( fname, /* File name. */ flags, /* Flags. */ - 0777,/* Mode for default protection. -*/ + 0777,/* Mode for default protection. */ rfm=stmlf, /* Stream_LF. */ OPEN_OPT_ARGS); /* Access callback. */ } Steven M. Schweda sms@antinode-info 382 South Warwick Street(+1) 651-699-9818 Saint Paul MN 55105-2547
Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems
Two more things, both in src/ftp.c. Part of some VMS-specific stuff (BIN_TYPE_FILE) got lost/discarded somewhere along the line. Also, while fooling around, I noticed that .listing files were being created with binary instead of text attributes. Wget itself didn't seem to care, but, with --no-remove-listing, for example, the resulting (persistent) .listing files were unsuitable for use by normal text editors. --- ftp.c_orig 2011-09-13 03:05:12 -0500 +++ ftp.c 2011-09-30 16:36:31 -0500 @@ -1152,13 +1152,25 @@ Elsewhere, define a constant binary flag. Isn't it nice to have distinct text and binary file types? */ -# define BIN_TYPE_TRANSFER (type_char != 'A') +/* 2011-09-30 SMS. + Added listing files to the set of non-binary (text, Stream_LF) + files. (Wget works either way, but other programs, like, say, text + editors, work better on listing files which have text attributes.) + Now we use binary attributes for a binary (IMAGE) transfer, + unless --ftp-stmlf was specified, and we always use non-binary + (text, Stream_LF) attributes for a listing file, or for an ASCII + transfer. + Tidied the VMS-specific BIN_TYPE_xxx macros, and changed the call to + fopen_excl() (restored?) to use BIN_TYPE_FILE instead of true. +*/ #ifdef __VMS +# define BIN_TYPE_TRANSFER (type_char != 'A') +# define BIN_TYPE_FILE \ + ((!(cmd DO_LIST)) BIN_TYPE_TRANSFER (opt.ftp_stmlf == 0)) # define FOPEN_OPT_ARGS fop=sqo, acc, acc_cb, open_id # define FOPEN_OPT_ARGS_BIN ctx=bin,stm, rfm=fix, mrs=512 FOPEN_OPT_ARGS -# define BIN_TYPE_FILE (BIN_TYPE_TRANSFER (opt.ftp_stmlf == 0)) #else /* def __VMS */ -# define BIN_TYPE_FILE 1 +# define BIN_TYPE_FILE true #endif /* def __VMS [else] */ if (restval !(con-cmd DO_LIST)) @@ -1217,7 +1229,7 @@ } else { - fp = fopen_excl (con-target, true); + fp = fopen_excl (con-target, BIN_TYPE_FILE); if (!fp errno == EEXIST) { /* We cannot just invent a new name and use it (which is Note that the directive: # define BIN_TYPE_TRANSFER (type_char != 'A') was outside the #ifdef __VMS block, but BIN_TYPE_TRANSFER is used only on VMS. This change would move it inside (where it belongs). The fopen_excl() is generic, but on VMS it needs the variable (on VMS) BIN_TYPE_FILE argument, not a constant true. (Which is why BIN_TYPE_FILE exists.) Steven M. Schweda sms@antinode-info 382 South Warwick Street(+1) 651-699-9818 Saint Paul MN 55105-2547
Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems
[...] 2 24135 confval = long_options[longindex].val; Apparently, referencing long_options[-1] causes more trouble in a VMS environment than it does on a typical UNIX(-like) system. [...] I still haven't looked at the details here, but I did notice that the _second_ getopt_long() loop does things like: /* If LONGINDEX is unchanged, it means RET is referring a short option. */ if (longindex == -1) rather than jumping right in and using longindex as a subscript. Perhaps the first getopt_long() loop should be so careful. Other helpful changes: ALP $ gdiff -u src/log.c_orig src/log.c --- src/log.c_orig 2011-07-29 08:43:44 -0500 +++ src/log.c 2011-09-29 08:43:17 -0500 @@ -573,14 +573,14 @@ } } -/* Close LOGFP, inhibit further logging and free the memory associated - with it. */ +/* Close LOGFP (only if we opened it, not if it's stderr), inhibit + further logging and free the memory associated with it. */ void log_close (void) { int i; - if (logfp) + if (logfp (logfp != stderr)) fclose (logfp); logfp = NULL; inhibit_logging = true; (This is particularly helpful if one is putting in debugging code like fprintf( stderr, [...]), but closing stderr seems like a poor idea in any case.) ALP $ gdiff -u src/main.c_orig src/main.c --- src/main.c_orig 2011-09-06 08:50:11 -0500 +++ src/main.c 2011-09-29 09:15:31 -0500 @@ -1467,7 +1480,7 @@ xfree (url[i]); cleanup (); - return get_exit_status (); + exit (get_exit_status ()); } #endif /* TESTING */ On VMS, return x from main() and exit(x) are not equivalent, and only exit(x) can deal with status codes other than EXIT_FAILURE and EXIT_SUCCESS in a reasonable way. (exit(x) is used in many other places, so I wouldn't expect any damage from using it in one more.) Steven M. Schweda sms@antinode-info 382 South Warwick Street(+1) 651-699-9818 Saint Paul MN 55105-2547
Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems
[...] 2 24135 confval = long_options[longindex].val; Apparently, referencing long_options[-1] causes more trouble in a VMS environment than it does on a typical UNIX(-like) system. [...] I still haven't looked at the details here, [...] Now I have. Adding a test on longindex seems to fix the problem without causing any obvious (to me) damage: ALP $ gdiff -u src/main.c_orig src/main.c --- src/main.c_orig 2011-09-06 08:50:11 -0500 +++ src/main.c 2011-09-29 14:28:28 -0500 @@ -945,8 +945,8 @@ init_switches (); - /* This seperate getopt_long is needed to find the user config - and parse it before the other user options. */ + /* This separate getopt_long is needed to find the user config file + option (--config) and parse it before the other user options. */ longindex = -1; int retconf; bool use_userconfig = false; @@ -957,20 +957,25 @@ int confval; bool userrc_ret = true; struct cmdline_option *config_opt; - confval = long_options[longindex].val; - config_opt = option_data[confval ~BOOLEAN_NEG_MARKER]; - if (strcmp (config_opt-long_name, config) == 0) -{ - userrc_ret = run_wgetrc (optarg); - use_userconfig = true; -} - if (!userrc_ret) + + /* There is no short option for --config. */ + if (longindex = 0) { - printf (Exiting due to error in %s\n, optarg); - exit (2); + confval = long_options[longindex].val; + config_opt = option_data[confval ~BOOLEAN_NEG_MARKER]; + if (strcmp (config_opt-long_name, config) == 0) +{ + userrc_ret = run_wgetrc (optarg); + use_userconfig = true; +} + if (!userrc_ret) +{ + printf (Exiting due to error in %s\n, optarg); + exit (2); +} + else +break; } - else -break; } /* If the user did not specify a config, read the system wgetrc and ~/.wgetrc. */ [Plus the same return - exit() change as reported earlier.] I still have some VMS-specific builder changes to make, but the changes to src/connect.c, src/log.c, and src/main.c seem to be all that I've needed in the common code (so far). For completeness: ALP $ gdiff -u src/connect.c_orig src/connect.c --- src/connect.c_orig 2011-08-07 15:55:23 -0500 +++ src/connect.c 2011-09-29 09:23:37 -0500 @@ -36,8 +36,13 @@ #include unistd.h #include assert.h -#include sys/socket.h -#include sys/select.h +#ifdef HAVE_SYS_SOCKET_H +# include sys/socket.h +#endif /* def HAVE_SYS_SOCKET_H */ + +#ifdef HAVE_SYS_SELECT_H +# include sys/select.h +#endif /* def HAVE_SYS_SELECT_H */ #ifndef WINDOWS # ifdef __VMS Assuming that I eventually get satisfactory VMS builders constructed, is there any interest in including the VMS-specific files in the main wget distribution kit, or should I assume that the victim will need to obtain and unpack a suplementary VMS-specific kit (scattered VMS builders, vms/ directory) onto a normal wget source directory? (Or a complete VMS-compatible kit, as in the past.) Steven M. Schweda sms@antinode-info 382 South Warwick Street(+1) 651-699-9818 Saint Paul MN 55105-2547
Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems
I still have some VMS-specific builder changes to make, but the changes to src/connect.c, src/log.c, and src/main.c seem to be all that I've needed in the common code (so far). [...] Well, not quite. In src/openssl.c:ssl_init(), there's this: SSL_METHOD const *meth; which causes a problem with some older OpenSSL kits (0.9.8j, for example), where the argument to SSL_CTX_new() was not declared as const (as it is in a newer OpenSSL kit, like, say, 1.0.0e): CC /float = ieee_float /include = ([], [.ALPHAL], [-.LIB], [-.LIB.ALPHAL], [-. VMS]) /prefix_library_entries = (all_entries, except = (utime , __UTC_UTIME)) /object = [.ALPHAL]OPENSSL.OBJ /define = (VMS, _POSIX_EXIT , ENABLE_DEBUG , _LARGEFILE , HAVE_SSL, ENABLE_NTLM ) [-.SRC]OPENSSL.C ssl_ctx = SSL_CTX_new (meth); .^ %CC-W-NOTCONSTQUAL, In this statement, the referenced type of the pointer value meth is const, but the referenced type of the target of this assignment is not . at line number 204 in file ALP2$DKC0:[utility.source.WGET.wget-1_13_4.src]openss l.c;1 Naturally, the latest HP-supplied SSL kit is based on some 0.9.8 kit, so this would likely affect more users than one might expect. I don't know what the preferred solution would be. Adding a type cast seems to fix the problem here: ALP $ gdiff -u src/openssl.c_orig src/openssl.c --- src/openssl.c_orig 2011-08-29 03:01:24 -0500 +++ src/openssl.c 2011-09-29 17:40:09 -0500 @@ -201,7 +201,9 @@ abort (); } - ssl_ctx = SSL_CTX_new (meth); + /* The type cast below accomodates older OpenSSL versions (0.9.8) + where SSL_CTX_new() is declared without a const argument. */ + ssl_ctx = SSL_CTX_new ((SSL_METHOD *)meth); if (!ssl_ctx) goto error; but I haven't tried it in any other environments. And there's still that error message in src/init.c which uses SYSTEM_WGETRC, whether or not SYSTEM_WGETRC is defined. Steven M. Schweda sms@antinode-info 382 South Warwick Street(+1) 651-699-9818 Saint Paul MN 55105-2547
Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems
And there's still that error message in src/init.c which uses SYSTEM_WGETRC, whether or not SYSTEM_WGETRC is defined. One possible solution: --- src/init.c_orig 2011-08-19 05:06:20 -0500 +++ src/init.c 2011-09-30 00:44:16 -0500 @@ -597,21 +597,34 @@ variable has been set. For internal testing purposes only! */ env_sysrc = getenv (SYSTEM_WGETRC); if (env_sysrc file_exists_p (env_sysrc)) -ok = run_wgetrc (env_sysrc); +{ + ok = run_wgetrc (env_sysrc); + /* If there are any problems parsing the system wgetrc file, tell + the user and exit */ + if (! ok) +{ + fprintf (stderr, _(\ +Parsing system wgetrc file (env SYSTEM_WGETRC) failed. Please check\n\ +'%s',\n\ +or specify a different file using --config.\n), env_sysrc); + exit (2); +} +} /* Otherwise, if SYSTEM_WGETRC is defined, use it. */ #ifdef SYSTEM_WGETRC else if (file_exists_p (SYSTEM_WGETRC)) ok = run_wgetrc (SYSTEM_WGETRC); -#endif /* If there are any problems parsing the system wgetrc file, tell the user and exit */ if (! ok) { fprintf (stderr, _(\ -Parsing system wgetrc file failed, please check '%s'. \ -Or specify a different file using --config\n), SYSTEM_WGETRC); +Parsing system wgetrc file failed. Please check\n\ +'%s',\n\ +or specify a different file using --config.\n), SYSTEM_WGETRC); exit (2); } +#endif /* Override it with your own, if one exists. */ file = wgetrc_file_name (); if (!file) Aside from working when SYSTEM_WGETRC is not defined, it provides distinct messages for the two different ways the system wgetrc file might have been specified. ALP $ define /user_mode system_wgetrc sys$manager:.wgetrcx ALP $ wgx --version WGET: Syntax error in sys$manager:.wgetrcx at line 1. Parsing system wgetrc file (env SYSTEM_WGETRC) failed. Please check 'sys$manager:.wgetrcx', or specify a different file using --config. Steven M. Schweda sms@antinode-info 382 South Warwick Street(+1) 651-699-9818 Saint Paul MN 55105-2547
Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems
On 09/27/2011 10:22 PM, Steven M. Schweda wrote: It's still early, but here are the initial complaints... lib/snprintf.c now ignores HAVE_SNPRINTF. In previous wget versions, I could compile snprintf.c and not get a redundant snprintf() if HAVE_SNPRINTF was defined (%LINK-W-MULDEF, symbol DECC$TXSNPRINTF multiply defined). I can supply a conditional jacket for snprintf.c, but should I need to (now)? lib/snprintf.c is imported directly from outside (from gnulib), so there's not going to be a lot of control exercised over it from a wget-developer perspective. I'm sure if it came to it, some sort of patch-application phase could be added, but I imagine that Giuseppe would be resistant to such a thing until it were truly necessary. Gnulib in general doesn't use HAVE_FOO as the sole determiner of whether to use something. It will happily supply its own snprintf if it thinks for even one second that the system's snprintf isn't perfect. Which mostly means, doesn't do exactly everything the latest glibc's does, the way it does it. Whether you actually needed that particular feature or not. But, on the other hand, when it chooses to supply its own, it carefully macros it away so that the real linker name is something different. However, the way it does this (and the way it decides whether to even build sprintf.c in the first place), is embedded in the expected process that the user will use the ./configure script to set up the environment and determine which bits from gnulib to include; doing it any other way (as you're attempting) is bound to be painful. I wonder if it might be worth it to run ./configure under a POSIX-compatible shell thing to produce sane build stuff (assuming other VMSen will be similar enough to use whatever results?), and then include the results in your offering? That violates the philosophy behind autoconf, of course, makes it closer to an Imake thing, but then you're not going to make them use it anyway, so might as well see if you can use it yourself to make life at least a little easier. In this case, the logic that does a rename of snprintf seems to be at the end of vasnprintf.h rather than directly in snprintf.c. -- Micah J. Cowan http://micah.cowan.name/
Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems
From: Micah Cowan mi...@cowan.name On 09/28/2011 06:39 AM, Steven M. Schweda wrote: From: Micah Cowanmi...@cowan.name In this case, the logic that does a rename of snprintf seems to be at the end of vasnprintf.h rather than directly in snprintf.c. Those aren't the droids you're looking for. Try lib/stdio.in.h (which I also try very hard to ignore). Yes, but lib/stdio.in.h isn't included directly by snprintf.c, as vasnprintf.h is. The bit I'm talking about is indeed in vasnprintf.h, which is what actually does the rename of the link name. What, exactly, do you see where, exactly? All I see in lib/vasnprintf.h is stuff like: # define vasnprintf rpl_vasnprintf # define asnprintf rpl_asnprintf and neither vasnprintf nor asnprintf looks quite like snprintf to me. But what do I know? On the ACCVIO front, the first problem seems to occur with any short option on the command line. My sophisticated diagnostics (fprintf()) suggest that there may be a problem in the command-line parsing in src/main.c:main(). This seems to be the bad section (worse than just the spelling of separate): [...] /* This seperate getopt_long is needed to find the user config and parse it before the other user options. */ longindex = -1; int retconf; bool use_userconfig = false; /* SMSd. */ fprintf( stderr, Pre-getopt_long(1) loop. argc = %d, longindex = %d.\n, argc, longindex); while ((retconf = getopt_long (argc, argv, short_options, long_options, longindex)) != -1) { int confval; bool userrc_ret = true; struct cmdline_option *config_opt; /* SMSd. */ fprintf( stderr, getopt_long(1) loop. longindex = %d, retconf = %d.\n, longindex, retconf); confval = long_options[longindex].val; /* SMSd. */ fprintf( stderr, getopt_long(1) loop. confval = %d.\n, confval); [...] With only a long option, I get output like the following: ALP $ wgx --hel Pre-getopt_long(1) loop. argc = 2, longindex = -1. getopt_long(1) loop. longindex = 68, retconf = 47. getopt_long(1) loop. confval = 47. GNU Wget 1.13.4a, a non-interactive network retriever. [...] With a short option, I get output like the following: ALP $ wgx -h Pre-getopt_long(1) loop. argc = 2, longindex = -1. getopt_long(1) loop. longindex = -1, retconf = 104. %SYSTEM-F-ACCVIO, access violation, reason mask=00, virtual address=0028 FFFC, PC=000E0E90, PS=001B %TRACE-F-TRACEBACK, symbolic stack dump follows imagemoduleroutine line rel PC abs PC WGET MAIN no_prefix 24135 0E90 000E0E90 WGET MAIN 23537 000E0E90 WGET MAIN __main 24076 0A1C 000E0A1C WGET 0 002839E0 002839E0 0 8037FCE4 8037FCE4 %TRACE-I-END, end of TRACE stack dump Listing line 24135 is: 2 24135 confval = long_options[longindex].val; Apparently, referencing long_options[-1] causes more trouble in a VMS environment than it does on a typical UNIX(-like) system. It worked on a Tru64 system, for example: urtx# src/wget -h Pre-getopt_long(1) loop. argc = 2, longindex = -1. getopt_long(1) loop. longindex = -1, retconf = 104. getopt_long(1) loop. confval = 0. GNU Wget 1.13.4, a non-interactive network retriever. [...] But longindex is still -1 in this case, and this seems to me to be a risky thing to use as a subscript in long_options[]. (But I'm always open to a good counter-argument.) Steven M. Schweda sms@antinode-info 382 South Warwick Street(+1) 651-699-9818 Saint Paul MN 55105-2547
Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems
On 09/28/2011 06:39 AM, Steven M. Schweda wrote: From: Micah Cowanmi...@cowan.name In this case, the logic that does a rename of snprintf seems to be at the end of vasnprintf.h rather than directly in snprintf.c. Those aren't the droids you're looking for. Try lib/stdio.in.h (which I also try very hard to ignore). Yes, but lib/stdio.in.h isn't included directly by snprintf.c, as vasnprintf.h is. The bit I'm talking about is indeed in vasnprintf.h, which is what actually does the rename of the link name. What, exactly, do you see where, exactly? All I see in lib/vasnprintf.h is stuff like: # define vasnprintf rpl_vasnprintf # define asnprintf rpl_asnprintf and neither vasnprintf nor asnprintf looks quite like snprintf to me. You're right, of course, and I'm blind today. I guess it must get the lib/stdio.in.h version after all. Probably through a judicious application of -I. Anyhoo, good luck. :) -- Micah J. Cowan http://micah.cowan.name/
[Bug-wget] Wget 1.13.4 v. VMS -- Various problems
It's still early, but here are the initial complaints... lib/snprintf.c now ignores HAVE_SNPRINTF. In previous wget versions, I could compile snprintf.c and not get a redundant snprintf() if HAVE_SNPRINTF was defined (%LINK-W-MULDEF, symbol DECC$TXSNPRINTF multiply defined). I can supply a conditional jacket for snprintf.c, but should I need to (now)? src/connect.c does #include sys/select.h and #include sys/socket.h with no regard for HAVE_SYS_SELECT_H or HAVE_SYS_SOCKET_H. I have no select.h (in sys or anywhere else), and was hoping that not defining HAVE_SYS_SELECT_H would have some effect. In src/init.c initialize(), the if (! ok) message thinks that it can print SYSTEM_WGETRC whether or not SYSTEM_WGETRC is defined. An old OpenSSL (0.9.8j) was too old. (1.0.0e worked better.) I haven't looked yet, but is the minimum required OpenSSL version documented anywhere? Or would some magic have happened if I had been using the auto-configure stuff? Steven M. Schweda sms@antinode-info 382 South Warwick Street(+1) 651-699-9818 Saint Paul MN 55105-2547