Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Oct 1995 06:53:52 EST
From:      "Kaleb S. KEITHLEY" <kaleb@x.org>
To:        hackers@freefall.FreeBSD.org
Subject:   A couple problems in FreeBSD 2.1.0-950922-SNAP
Message-ID:  <199510151053.GAA03600@exalt.x.org>

next in thread | raw e-mail | index | archive | help


Sorry if this shows up twice. The one I sent last night hasn't come
back yet, don't know if it got lost in the ether.

1)

% man -k rune
EUC(4)                   - EUC encoding of runes
UTF2(4)                  - Universal character set Transformation Format encoding of runes
mbrune(3), mbrrune(3), mbmb(3) - multibyte rune support for C
setrunelocale(3), setinvalidrune(3), sgetrune(3), sputrune(3) - rune support for C
%man setrunelocale
No manual entry for setrunelocale


2)

If I create a file that has extended ASCII (ISO8859-1) characters in the
name, ls always substitues a '?' for the non-ASCII characters. Note
that ls on, e.g. SVR4, does not do this

I looked at the source for ls and I see that the conversion occurs when
-q is specified (the default in any event). The FreeBSD ls man page says:

     -q      Force printing of non-graphic characters in file names as the
             character `?'; this is the default when output is to a terminal.

and just for reference the SVR4 man page says:

     -q   Force printing of non-printable characters in file names as the
          character question mark (?).  All multibyte characters are
          considered printable.

So I think the test isprint in ls really ought to be isgraph instead. But
just fixing ls isn't enough. The default table of character types in 
libc/locale/table.c isn't populated well enought to handle the whole 
ISO8859-1 character set. The following patch fixes ls, libc, and also 
fixes some bugs in mklocale's lt_LN LC_CTYPE template.

*** bin/ls/util.c.orig	Sat Oct 14 15:55:03 1995
--- bin/ls/util.c	Sat Oct 14 17:02:00 1995
***************
*** 33,39 ****
   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   *
!  *	$Id: util.c,v 1.4 1994/10/09 15:25:23 ache Exp $
   */
  
  #ifndef lint
--- 33,39 ----
   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   *
!  *	$Id: util.c,v 1.4 1994/10/09 15:25:23 ache Exp mumble$
   */
  
  #ifndef lint
***************
*** 61,67 ****
  
  	while (len--) {
  		ch = *src++;
! 		*dest++ = isprint(ch) ? ch : '?';
  	}
  }
  
--- 61,67 ----
  
  	while (len--) {
  		ch = *src++;
! 		*dest++ = isgraph(ch) ? ch : '?';
  	}
  }
  
*** lib/libc/locale/table.c.orig	Sat Oct 14 16:24:22 1995
--- lib/libc/locale/table.c	Sat Oct 14 17:00:40 1995
***************
*** 35,41 ****
   */
  
  #if defined(LIBC_SCCS) && !defined(lint)
! static char sccsid[] = "@(#)table.c	8.1 (Berkeley) 6/27/93";
  #endif /* LIBC_SCCS and not lint */
  
  #include <sys/types.h>
--- 35,41 ----
   */
  
  #if defined(LIBC_SCCS) && !defined(lint)
! static char sccsid[] = "@(#)table.c	8.1 (Berkeley) 6/27/93"; mumble
  #endif /* LIBC_SCCS and not lint */
  
  #include <sys/types.h>
***************
*** 86,91 ****
--- 86,123 ----
  		_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
  	/*78*/	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_P|_R|_G,
  		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_C,
+ 	/*80*/	_C,		_C,		_C,		_C,
+ 		_C,		_C,		_C,		_C,
+ 	/*88*/	_C,		_C,		_C,		_C,
+ 		_C,		_C,		_C,		_C,
+ 	/*90*/	_C,		_C,		_C,		_C,
+ 		_C,		_C,		_C,		_C,
+ 	/*98*/	_C,		_C,		_C,		_C,
+ 		_C,		_C,		_C,		_C,
+ 	/*a0*/	_S,		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
+ 		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
+ 	/*a8*/	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
+ 		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
+ 	/*b0*/	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
+ 		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
+ 	/*b8*/	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
+ 		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
+ 	/*c0*/	_U|_R|_G,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
+ 		_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
+ 	/*c8*/	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
+ 		_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
+ 	/*d0*/	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
+ 		_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_P|_R|_G,
+ 	/*d8*/	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
+ 		_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_L|_R|_G|_A,
+ 	/*e0*/	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
+ 		_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
+ 	/*e8*/	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
+ 		_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
+ 	/*f0*/	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
+ 		_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_P|_R|_G,
+ 	/*f8*/	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
+ 		_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A
      },
      {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
       	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
*** usr.bin/mklocale/data/lt_LN.ISO8859-1.orig	Sat Oct 14 16:00:43 1995
--- usr.bin/mklocale/data/lt_LN.ISO8859-1	Sat Oct 14 16:15:43 1995
***************
*** 11,22 ****
  CONTROL		0x00 - 0x1f 0x7f - 0x9f
  DIGIT		'0' - '9'
  GRAPH		0x21 - 0x7e 0xa0 - 0xff
! LOWER		'a' - 'z' 0xe0 - 0xff
! PUNCT		0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e 0xa1 - 0xbf
  SPACE		0x09 - 0x0d 0x20 0xa0
! UPPER		'A' - 'Z' 0xc0 - 0xde
! XDIGIT		'a' - 'f' 'A' - 'F'
! BLANK		' ' '\t' 0xa0
  PRINT		0x20 - 0x7e 0xa0 - 0xff
  # IDEOGRAM
  # SPECIAL
--- 11,23 ----
  CONTROL		0x00 - 0x1f 0x7f - 0x9f
  DIGIT		'0' - '9'
  GRAPH		0x21 - 0x7e 0xa0 - 0xff
! LOWER		'a' - 'z' 0xdf - 0xf6 0xf8 - 0xff
! PUNCT		0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e 0xa1 - 0xbf 0xd7 0xf7
  SPACE		0x09 - 0x0d 0x20 0xa0
! UPPER		'A' - 'Z' 0xc0 - 0xd6 0xd8 - 0xde
! XDIGIT		'0' - '9' 'a' - 'f' 'A' - 'F'
! # only one true blank in 8859-1
! BLANK		0x20
  PRINT		0x20 - 0x7e 0xa0 - 0xff
  # IDEOGRAM
  # SPECIAL
***************
*** 24,35 ****
  
  MAPLOWER       	<'A' - 'Z' : 'a'>
  MAPLOWER       	<'a' - 'z' : 'a'>
! MAPLOWER	<0xc0 - 0xdd : 0xe0>
! MAPLOWER	<0xe0 - 0xff : 0xe0>
  MAPUPPER       	<'A' - 'Z' : 'A'>
  MAPUPPER       	<'a' - 'z' : 'A'>
! MAPUPPER	<0xc0 - 0xdd : 0xc0>
! MAPUPPER	<0xe0 - 0xff : 0xc0>
  TODIGIT       	<'0' - '9' : 0>
  TODIGIT       	<'A' - 'F' : 10>
  TODIGIT       	<'a' - 'f' : 10>
--- 25,41 ----
  
  MAPLOWER       	<'A' - 'Z' : 'a'>
  MAPLOWER       	<'a' - 'z' : 'a'>
! MAPLOWER	<0xc0 - 0xd6 : 0xe0>
! MAPLOWER	<0xd8 - 0xde : 0xe0>
! MAPLOWER	<0xdf - 0xf6 : 0xe0>
! MAPLOWER	<0xf8 - 0xfe : 0xe0>
! 
  MAPUPPER       	<'A' - 'Z' : 'A'>
  MAPUPPER       	<'a' - 'z' : 'A'>
! MAPUPPER	<0xc0 - 0xd6 : 0xc0>
! MAPUPPER	<0xd8 - 0xde : 0xc0>
! MAPUPPER	<0xdf - 0xf6 : 0xc0>
! MAPUPPER	<0xf8 - 0xfe : 0xc0>
  TODIGIT       	<'0' - '9' : 0>
  TODIGIT       	<'A' - 'F' : 10>
  TODIGIT       	<'a' - 'f' : 10>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199510151053.GAA03600>