Re: [Bug-wget] Wget 1.13.4 v. VMS -- Various problems

2011-10-07 Thread Steven M. Schweda
  [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

2011-10-07 Thread Giuseppe Scrivano
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

2011-10-07 Thread Steven M. Schweda
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

2011-10-06 Thread Steven M. Schweda
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

2011-10-02 Thread Steven M. Schweda
   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

2011-09-30 Thread Steven M. Schweda
   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

2011-09-29 Thread Steven M. Schweda
 [...]
   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

2011-09-29 Thread Steven M. Schweda
  [...]
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

2011-09-29 Thread Steven M. Schweda
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

2011-09-29 Thread Steven M. Schweda
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

2011-09-28 Thread Micah Cowan
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

2011-09-28 Thread Steven M. Schweda
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

2011-09-28 Thread Micah Cowan
 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

2011-09-27 Thread Steven M. Schweda
   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