[comp.lang.perl] Mandatory patch #1 to newgetopt routine

jv@mh.nl (Johan Vromans) (09/20/90)

This is a mandatory patch to newgetopt.pl 1.5. Please apply it.

Fixes:
#    Set options w/o argument to 1.
#    Correct the dreadful semicolon/require bug.

After patching, newgetopt.pl will be at 1.6.

Index: newgetopt.pl
Require: 1.5
*** newgetopt.pl~	Thu Sep 20 10:11:31 1990
--- newgetopt.pl	Thu Sep 20 10:10:21 1990
***************
*** 1,6
  # newgetopt.pl -- new options parsing
  
! # SCCS Status     : @(#)@ newgetopt.pl	1.5
  # Author          : Johan Vromans
  # Created On      : Tue Sep 11 15:00:12 1990
  # Last Modified By: Johan Vromans

--- 1,6 -----
  # newgetopt.pl -- new options parsing
  
! # SCCS Status     : @(#)@ newgetopt.pl	1.6
  # Author          : Johan Vromans
  # Created On      : Tue Sep 11 15:00:12 1990
  # Last Modified By: Johan Vromans
***************
*** 4,11
  # Author          : Johan Vromans
  # Created On      : Tue Sep 11 15:00:12 1990
  # Last Modified By: Johan Vromans
! # Last Modified On: Wed Sep 12 17:06:01 1990
! # Update Count    : 28
  # Status          : Okay
  
  # This package implements a new getopt function. This function adheres

--- 4,11 -----
  # Author          : Johan Vromans
  # Created On      : Tue Sep 11 15:00:12 1990
  # Last Modified By: Johan Vromans
! # Last Modified On: Thu Sep 20 10:08:35 1990
! # Update Count    : 33
  # Status          : Okay
  
  # This package implements a new getopt function. This function adheres
***************
*** 29,34
  #
  # Upon return, the option variables, prefixed with "opt_", are defined
  # and set to the respective option arguments, if any.
  # A return status of 0 (false) indicates that the function detected
  # one or more errors.
  #

--- 29,37 -----
  #
  # Upon return, the option variables, prefixed with "opt_", are defined
  # and set to the respective option arguments, if any.
+ # Options that do not take an argument are set to 1. Note that an
+ # option with an optional argument will be defined, but set to '' if
+ # no actual argument has been supplied.
  # A return status of 0 (false) indicates that the function detected
  # one or more errors.
  #
***************
*** 47,52
  #    -foo --		-> $opt_foo = '--'
  #
  
  package newgetopt;
  
  $debug = 0;			# for debugging

--- 50,61 -----
  #    -foo --		-> $opt_foo = '--'
  #
  
+ # HISTORY 
+ # 20-Sep-1990		Johan Vromans	
+ #    Set options w/o argument to 1.
+ #    Correct the dreadful semicolon/require bug.
+ 
+ 
  package newgetopt;
  
  $debug = 0;			# for debugging
***************
*** 114,120
  	print STDERR ("=> found \"$hits[0]\" for ", $opt, "\n") if $debug;
  
  	# If it is an option w/o argument, we're almost finished with it.
! 	next unless defined $type;
  
  	# Get mandatory status and type info.
  	($mand, $type) = $type =~ /^(.)(.)$/;

--- 123,132 -----
  	print STDERR ("=> found \"$hits[0]\" for ", $opt, "\n") if $debug;
  
  	# If it is an option w/o argument, we're almost finished with it.
! 	if ( ! defined $type ) {
! 	    $arg = 1;		# supply explicit value
! 	    next;
! 	}
  
  	# Get mandatory status and type info.
  	($mand, $type) = $type =~ /^(.)(.)$/;
***************
*** 182,188
      }
      continue {
  	print STDERR ("=> \$main'opt_$opt = $arg\n") if $debug;
! 	eval ("\$main'opt_$opt = \$arg";);
      }
  
      return ($error == 0);

--- 194,200 -----
      }
      continue {
  	print STDERR ("=> \$main'opt_$opt = $arg\n") if $debug;
! 	eval ("\$main'opt_$opt = \$arg");
      }
  
      return ($error == 0);
-- 
Johan Vromans				       jv@mh.nl via internet backbones
Multihouse Automatisering bv		       uucp: ..!{uunet,hp4nl}!mh.nl!jv
Doesburgweg 7, 2803 PL Gouda, The Netherlands  phone/fax: +31 1820 62911/62500
------------------------ "Arms are made for hugging" -------------------------