Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Apr 1995 04:52:19 -0700
From:      Bruce Evans <bde>
To:        CVS-commiters, cvs-lib
Subject:   cvs commit: src/lib/libc/locale isctype.c nomacros.c
Message-ID:  <199504071152.EAA04340@freefall.cdrom.com>

next in thread | raw e-mail | index | archive | help
bde         95/04/07 04:52:18

  Modified:    include  ctype.h
  Log:
  Reviewed by:	ache and wollman (long ago)
  
  Fix numerous ANSI conformance bugs and other nits.
  
  ctype.h:
  o There were no prototypes behind the macros (conformance bug).
  o isascii() didn't have enough parentheses (plain bug).
  o tolower() and toupper were always static inline (conformance
  bug?  You could undef them and take their address, but this
  gave different addresses in different modules.  You couldn't
  undef them and declare them (correctly) again).  <stdio.h>'s
  treatment of putc() shows one way to handle this problem,
  but it only works because the putc() macro is allowed to
  reevaluate its args.  I used a hack controlled by
  _EXTERNALIZE_CTYPE_INLINES_ to get <ctype.h> to generate the
  code (the previous hack involving _ANSI_LIBRARY_ goes away).
  This has the advantage that the core of the functions is only
  written down once and the disadvantage that another layer of
  functions is required.  The extra layer goes away if inline
  functions are used, leaving only the problem of understanding
  why there are functions named toupper(), __toupper and
  ___toupper() as well as a macro named toupper.
  o Nothing seems to define _USE_CTYPE_LIBRARY_.  Eliminate it
  o Let the user set _USE_CTYPE_INLINE_ and _DONT_USE_CTYPE_INLINE_
  for full control over inlining.
  o The args for the inline functions didn't have enough
  underscores (conformance bug).
  o The formatting and ordering was inconsistent (style bug).
  o TODO: fix conformance bugs brought by including <runetype.h>.

  Modified:    lib/libc/locale isctype.c nomacros.c
  Log:
  Reviewed by:	ache and wollman (long ago)
  
  isctype.c:
  o The tolower() and toupper() functions duplicated too much code
  and were out of date (surprise).  This didn't matter because
  it was difficult to call them.
  o Change formatting to be more like that in <ctype.h> (with
  extra parentheses as in the macros).  Perhaps this file should
  be machine generated or everything should be handled like
  __tolower() so that no code is repeated.
  
  nomacros.c:
  o Instead of looking at _USE_CTYPE_INLINE_ to see what <ctype.h>
  has done, set _EXTERNALIZE_CTYPE_INLINES_ to tell <ctype.h>
  what to do, so that we don't have anything left to do.  Note
  that code is now generated even if inlines are used by default.
  This allows users to switch to non-inline versions.



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