mirror of
				git://git.code.sf.net/p/cdesktopenv/code
				synced 2025-03-09 15:50:02 +00:00 
			
		
		
		
	Modernish is no longer detecting BUG_KUNSETIFS, as I've just discovered. Always nice when bugs spontaneously vanish... A 'git reset HEAD~1'/recompile/retest loop reveals this bug was fixed by6f0e008c, as later modified by7b994b6a. So, let's make sure it stays fixed. src/cmd/ksh93/tests/variables.sh: - Add a couple of regression tests for BUG_KUNSETIFS presence, detection and known workaround, based on the same in modernish. Ref.:3ddcbd13/lib/modernish/cap/BUG_KUNSETIFS.t3ddcbd13/lib/modernish/tst/isset.t (L204-L222)
		
			
				
	
	
		
			84 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
TODO for AT&T ksh93, 93u+m bugfix branch
 | 
						||
 | 
						||
______
 | 
						||
Fix regression test failures:
 | 
						||
 | 
						||
- On FreeBSD, there is a test failure in [[ -N file ]] in bracket.sh.
 | 
						||
- On OpenBSD, there are 15 locale-related test failures in variables.sh.
 | 
						||
 | 
						||
______
 | 
						||
Fix build system:
 | 
						||
 | 
						||
- ksh does not currently build on NetBSD, AIX, Solaris, or QNX.
 | 
						||
- Reimport the removed nmake. It is necessary for changes in Makefiles
 | 
						||
  to take effect. The machine-generated Mamfiles are now used as a fallback,
 | 
						||
  but they are not meant to be edited by hand.
 | 
						||
 | 
						||
______
 | 
						||
Fix or remove broken or misguided default aliases:
 | 
						||
 | 
						||
- Make proper builtins out of the following scripting-related aliases, so
 | 
						||
  that 'unalias -a' does not eliminate them. If done correctly, this causes
 | 
						||
  no other change in behaviour. It would be good practice to 'unalias -a' in
 | 
						||
  a script to start with a clean slate, except ksh has always made that
 | 
						||
  impossible without losing these. Default aliases should be to facilitate
 | 
						||
  interactive use.
 | 
						||
	- autoload='typeset -fu'
 | 
						||
	- compound='typeset -C'
 | 
						||
	- float='typeset -lE'
 | 
						||
	- functions='typeset -f'
 | 
						||
	- integer='typeset -li'
 | 
						||
	- nameref='typeset -n'
 | 
						||
  Keep these default aliases for the benefit of interactive shells:
 | 
						||
	+ history='hist -l'
 | 
						||
	+ r='hist -s'
 | 
						||
  To avoid interfering with shell functions by those names that POSIX
 | 
						||
  scripts may set, those should only initialise on interactive shells.
 | 
						||
 | 
						||
______
 | 
						||
Fix currently known bugs affecting shell scripting. These are identified by
 | 
						||
their modernish IDs. For exact details, see code/comments in:
 | 
						||
https://github.com/modernish/modernish/tree/0.16/lib/modernish/cap/
 | 
						||
 | 
						||
- BUG_BRACQUOT: shell quoting within bracket patterns has no effect. This
 | 
						||
  bug means the '-' retains it special meaning of 'character range', and an
 | 
						||
  initial ! (and, on some shells, ^) retains the meaning of negation, even
 | 
						||
  in quoted strings within bracket patterns, including quoted variables.
 | 
						||
 | 
						||
- BUG_CMDEXPAN: if the 'command' command results from an expansion, it acts
 | 
						||
  like 'command -v', showing the path of the command instead of executing it.
 | 
						||
  For example:
 | 
						||
	v=command; "$v" ls
 | 
						||
  or
 | 
						||
	set -- command ls; "$@"
 | 
						||
  don't work.
 | 
						||
  See also: https://github.com/att/ast/issues/963
 | 
						||
 | 
						||
- BUG_CMDSPEXIT: preceding a "special builtin"[*] (other than 'eval', 'exec',
 | 
						||
  'return' or 'exit') with 'command' does not always stop it from exiting
 | 
						||
  the shell if the builtin encounters error.
 | 
						||
  [*] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_14
 | 
						||
 | 
						||
- BUG_CSUBSTDO: If standard output (file descriptor 1) is closed before
 | 
						||
  entering a $(command substitution), and any other file descriptors are
 | 
						||
  redirected within the command substitution, commands such as 'echo' will
 | 
						||
  not work within the command substitution, acting as if standard output is
 | 
						||
  still closed.
 | 
						||
 | 
						||
- BUG_IFSGLOBS: In glob pattern matching (as in case or parameter
 | 
						||
  substitution with # and %), if IFS starts with ? or * and the "$*"
 | 
						||
  parameter expansion inserts any IFS separator characters, those characters
 | 
						||
  are erroneously interpreted as wildcards when quoted "$*" is used as the
 | 
						||
  glob pattern.
 | 
						||
 | 
						||
- BUG_LOOPRET2: If a 'return' command is given without a status argument
 | 
						||
  within the set of conditional commands in a 'while' or 'until' loop (i.e.,
 | 
						||
  between 'while'/'until' and 'do'), the exit status passed down from the
 | 
						||
  previous command is ignored and the function returns with status 0
 | 
						||
  instead.
 | 
						||
 | 
						||
- BUG_MULTIBIFS: We're on a UTF-8 locale and the shell supports UTF-8
 | 
						||
  characters in general (i.e. we don't have WRN_MULTIBYTE) – however, using
 | 
						||
  multi-byte characters as IFS field delimiters still doesn't work. For
 | 
						||
  example, "$*" joins positional parameters on the first byte of IFS instead
 | 
						||
  of the first character.
 |