* libc/include/langinfo.h: New file.
* libc/include/wchar.h: Likewise. * libc/include/sys/syslimits.h: Likewise. * libc/locale/fix_grouping.c: Likewise. * libc/locale/ldpart.c: Likewise. * libc/locale/ldpart.h: Likewise. * libc/locale/lmessages.c: Likewise. * libc/locale/lmessages.h: Likewise. * libc/locale/lmonetary.c: Likewise. * libc/locale/lmonetary.h: Likewise. * libc/locale/lnumeric.c: Likewise. * libc/locale/lnumeric.h: Likewise. * libc/locale/nl_langinfo.3: Likewise. * libc/locale/nl_langinfo.c: Likewise. * libc/locale/timelocal.c: Likewise. * libc/locale/timelocal.h: Likewise. * libc/stdlib/btowc.c: Likewise. * libc/stdlib/mbrlen.c: Likewise. * libc/stdlib/mbrtowc.c: Likewise. * libc/stdlib/mbsinit.c: Likewise. * libc/stdlib/mbsrtowcs.c: Likewise. * libc/stdlib/wcrtomb.c: Likewise. * libc/stdlib/wcsrtombs.c: Likewise. * libc/stdlib/wctob.c: Likewise. * libc/sys/linux/prof-freq.c: Likewise. * libc/sys/linux/profile.c: Likewise. * libc/sys/linux/machine/i386/dl-procinfo.c: Likewise. * libc/sys/linux/machine/i386/dl-procinfo.h: Likewise. * libc/include/stdlib.h: Change re-entrant functions to take mbstate_t pointers. * libc/include/sys/_types.h: Define _mbstate_t. * libc/include/sys/config.h (MB_LEN_MAX): New macro. * libc/include/sys/errno.h (EILSEQ): New error code. * libc/include/sys/reent.h: Include wchar.h. Change reentrant structure to use mbstate_t. * libc/locale/Makefile.am (LIB_SOURCES): Add new files. * libc/machine/powerpc/vfprintf.c: Use mbstate_t. * libc/machine/powerpc/vfscanf.c: Likewise. * libc/stdio/getdelim.c: Reallocate buffer only when necessary. * libc/stdio/vfprintf.c: Likewise. * libc/stdio/vfscanf.c: Likewise. * libc/stdlib/Makefile.am (LIB_SOURCES): Add new files. * libc/stdlib/mblen.c: Use mbstate_t. * libc/stdlib/mblen_r.c: Likewise. * libc/stdlib/mbstowcs.c: Likewise. * libc/stdlib/mbstowcs_r.c: Likewise. * libc/stdlib/mbtowc.c: Likewise. * libc/stdlib/mbtowc_r.c: Likewise. * libc/stdlib/wcstombs.c: Likewise. * libc/stdlib/wcstombs_r.c: Likewise. * libc/stdlib/wctomb_r.c: Likewise. * libc/sys/linux/Makefile.am (LIB_SOURCES): Add prof-freq.c and profile.c. * libc/sys/linux/machine/i386/Makefile.am (LIB_SOURCES): Add dl-procinfo.c. * libc/sys/linux/sys/errno.h (EILSEQ): New error code. * libc/sys/linux/sys/types.h (off_t): Define type. * testsuite/newlib.locale/UTF-8.c: Change locale name from UTF-8 to C-UTF-8. * testsuite/newlib.locale/UTF-8.exp: Likewise.
This commit is contained in:
		
							parent
							
								
									1c5dcf3b0a
								
							
						
					
					
						commit
						8d9112f2f3
					
				| 
						 | 
				
			
			@ -1,3 +1,66 @@
 | 
			
		|||
2002-08-22  Thomas Fitzsimmons  <fitzsim@redhat.com>
 | 
			
		||||
 | 
			
		||||
	* libc/include/langinfo.h: New file.
 | 
			
		||||
	* libc/include/wchar.h: Likewise.
 | 
			
		||||
	* libc/include/sys/syslimits.h: Likewise.
 | 
			
		||||
	* libc/locale/fix_grouping.c: Likewise.
 | 
			
		||||
	* libc/locale/ldpart.c: Likewise.
 | 
			
		||||
	* libc/locale/ldpart.h: Likewise.
 | 
			
		||||
	* libc/locale/lmessages.c: Likewise.
 | 
			
		||||
	* libc/locale/lmessages.h: Likewise.
 | 
			
		||||
	* libc/locale/lmonetary.c: Likewise.
 | 
			
		||||
	* libc/locale/lmonetary.h: Likewise.
 | 
			
		||||
	* libc/locale/lnumeric.c: Likewise.
 | 
			
		||||
	* libc/locale/lnumeric.h: Likewise.
 | 
			
		||||
	* libc/locale/nl_langinfo.3: Likewise.
 | 
			
		||||
	* libc/locale/nl_langinfo.c: Likewise.
 | 
			
		||||
	* libc/locale/timelocal.c: Likewise.
 | 
			
		||||
	* libc/locale/timelocal.h: Likewise.
 | 
			
		||||
	* libc/stdlib/btowc.c: Likewise.
 | 
			
		||||
	* libc/stdlib/mbrlen.c: Likewise.
 | 
			
		||||
	* libc/stdlib/mbrtowc.c: Likewise.
 | 
			
		||||
	* libc/stdlib/mbsinit.c: Likewise.
 | 
			
		||||
	* libc/stdlib/mbsrtowcs.c: Likewise.
 | 
			
		||||
	* libc/stdlib/wcrtomb.c: Likewise.
 | 
			
		||||
	* libc/stdlib/wcsrtombs.c: Likewise.
 | 
			
		||||
	* libc/stdlib/wctob.c: Likewise.
 | 
			
		||||
	* libc/sys/linux/prof-freq.c: Likewise.
 | 
			
		||||
	* libc/sys/linux/profile.c: Likewise.
 | 
			
		||||
	* libc/sys/linux/machine/i386/dl-procinfo.c: Likewise.
 | 
			
		||||
	* libc/sys/linux/machine/i386/dl-procinfo.h: Likewise.
 | 
			
		||||
	* libc/include/stdlib.h: Change re-entrant functions to take
 | 
			
		||||
	mbstate_t pointers.
 | 
			
		||||
	* libc/include/sys/_types.h: Define _mbstate_t.
 | 
			
		||||
	* libc/include/sys/config.h (MB_LEN_MAX): New macro.
 | 
			
		||||
	* libc/include/sys/errno.h (EILSEQ): New error code.
 | 
			
		||||
	* libc/include/sys/reent.h: Include wchar.h.  Change reentrant
 | 
			
		||||
	structure to use mbstate_t.
 | 
			
		||||
	* libc/locale/Makefile.am (LIB_SOURCES): Add new files.
 | 
			
		||||
	* libc/machine/powerpc/vfprintf.c: Use mbstate_t.
 | 
			
		||||
	* libc/machine/powerpc/vfscanf.c: Likewise.
 | 
			
		||||
	* libc/stdio/getdelim.c: Reallocate buffer only when necessary.
 | 
			
		||||
	* libc/stdio/vfprintf.c: Likewise.
 | 
			
		||||
	* libc/stdio/vfscanf.c: Likewise.
 | 
			
		||||
	* libc/stdlib/Makefile.am (LIB_SOURCES): Add new files.
 | 
			
		||||
	* libc/stdlib/mblen.c: Use mbstate_t.
 | 
			
		||||
	* libc/stdlib/mblen_r.c: Likewise.
 | 
			
		||||
	* libc/stdlib/mbstowcs.c: Likewise.
 | 
			
		||||
	* libc/stdlib/mbstowcs_r.c: Likewise.
 | 
			
		||||
	* libc/stdlib/mbtowc.c: Likewise.
 | 
			
		||||
	* libc/stdlib/mbtowc_r.c: Likewise.
 | 
			
		||||
	* libc/stdlib/wcstombs.c: Likewise.
 | 
			
		||||
	* libc/stdlib/wcstombs_r.c: Likewise.
 | 
			
		||||
	* libc/stdlib/wctomb_r.c: Likewise.
 | 
			
		||||
	* libc/sys/linux/Makefile.am (LIB_SOURCES): Add prof-freq.c and
 | 
			
		||||
	profile.c.
 | 
			
		||||
	* libc/sys/linux/machine/i386/Makefile.am (LIB_SOURCES): Add
 | 
			
		||||
	dl-procinfo.c.
 | 
			
		||||
	* libc/sys/linux/sys/errno.h (EILSEQ): New error code.
 | 
			
		||||
	* libc/sys/linux/sys/types.h (off_t): Define type.
 | 
			
		||||
	* testsuite/newlib.locale/UTF-8.c: Change locale name from UTF-8
 | 
			
		||||
	to C-UTF-8.
 | 
			
		||||
	* testsuite/newlib.locale/UTF-8.exp: Likewise.
 | 
			
		||||
 | 
			
		||||
2002-08-20  Casper S. Hornstrup  <chorns@users.sourceforge.net>
 | 
			
		||||
 | 
			
		||||
        * libc/stdlib/mallocr.c: #include windows.h on Win32.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -242,7 +242,7 @@ fi
 | 
			
		|||
# Enable printf positional argument support if requested.
 | 
			
		||||
 | 
			
		||||
if [ "${newlib_io_pos_args}" = "yes" ] ; then
 | 
			
		||||
        newlib_cflags="${newlib_cflags} -DWANT_IO_POS_ARGS"
 | 
			
		||||
	newlib_cflags="${newlib_cflags} -DWANT_IO_POS_ARGS"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Verify if shared newlib support is allowed and set appropriate variables
 | 
			
		||||
| 
						 | 
				
			
			@ -338,6 +338,7 @@ case "${host}" in
 | 
			
		|||
	##newlib_cflags="${newlib_cflags} -I`newlib-flags --kernel-dir`/include"
 | 
			
		||||
	##newlib_cflags="${newlib_cflags} -idirafter ${gcc_dir}include"
 | 
			
		||||
	;;
 | 
			
		||||
 | 
			
		||||
  m68hc11-*-*|m6811-*-*|m6812-*-*|m68hc12-*-*)
 | 
			
		||||
	;;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -500,8 +501,8 @@ case "${host}" in
 | 
			
		|||
	syscall_dir=syscalls
 | 
			
		||||
	;;
 | 
			
		||||
  m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)
 | 
			
		||||
        newlib_cflags="${newlib_cflags} -DNO_EXEC -DABORT_PROVIDED -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES"
 | 
			
		||||
        ;;
 | 
			
		||||
	newlib_cflags="${newlib_cflags} -DNO_EXEC -DABORT_PROVIDED -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES"
 | 
			
		||||
	;;
 | 
			
		||||
  mcore-*-*)
 | 
			
		||||
	newlib_cflags="${newlib_cflags}"
 | 
			
		||||
	syscall_dir=syscalls
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,140 @@
 | 
			
		|||
/*-
 | 
			
		||||
 * Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org>
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 *
 | 
			
		||||
 * $FreeBSD: src/include/langinfo.h,v 1.5 2002/03/23 17:24:53 imp Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _LANGINFO_H_
 | 
			
		||||
#define	_LANGINFO_H_
 | 
			
		||||
 | 
			
		||||
#include <sys/cdefs.h>
 | 
			
		||||
 | 
			
		||||
typedef int nl_item;
 | 
			
		||||
 | 
			
		||||
/* Extract the category and item index from a constructed `nl_item' value.  */
 | 
			
		||||
#define _NL_ITEM_CATEGORY(item)		((int) (item) >> 16)
 | 
			
		||||
#define _NL_ITEM_INDEX(item)		((int) (item) & 0xffff)
 | 
			
		||||
 | 
			
		||||
#define	CODESET		0	/* codeset name */
 | 
			
		||||
#define	D_T_FMT		1	/* string for formatting date and time */
 | 
			
		||||
#define	D_FMT		2	/* date format string */
 | 
			
		||||
#define	T_FMT		3	/* time format string */
 | 
			
		||||
#define	T_FMT_AMPM	4	/* a.m. or p.m. time formatting string */
 | 
			
		||||
#define	AM_STR		5	/* Ante Meridian affix */
 | 
			
		||||
#define	PM_STR		6	/* Post Meridian affix */
 | 
			
		||||
 | 
			
		||||
/* week day names */
 | 
			
		||||
#define	DAY_1		7
 | 
			
		||||
#define	DAY_2		8
 | 
			
		||||
#define	DAY_3		9
 | 
			
		||||
#define	DAY_4		10
 | 
			
		||||
#define	DAY_5		11
 | 
			
		||||
#define	DAY_6		12
 | 
			
		||||
#define	DAY_7		13
 | 
			
		||||
 | 
			
		||||
/* abbreviated week day names */
 | 
			
		||||
#define	ABDAY_1		14
 | 
			
		||||
#define	ABDAY_2		15
 | 
			
		||||
#define	ABDAY_3		16
 | 
			
		||||
#define	ABDAY_4		17
 | 
			
		||||
#define	ABDAY_5		18
 | 
			
		||||
#define	ABDAY_6		19
 | 
			
		||||
#define	ABDAY_7		20
 | 
			
		||||
 | 
			
		||||
/* month names */
 | 
			
		||||
#define	MON_1		21
 | 
			
		||||
#define	MON_2		22
 | 
			
		||||
#define	MON_3		23
 | 
			
		||||
#define	MON_4		24
 | 
			
		||||
#define	MON_5		25
 | 
			
		||||
#define	MON_6		26
 | 
			
		||||
#define	MON_7		27
 | 
			
		||||
#define	MON_8		28
 | 
			
		||||
#define	MON_9		29
 | 
			
		||||
#define	MON_10		30
 | 
			
		||||
#define	MON_11		31
 | 
			
		||||
#define	MON_12		32
 | 
			
		||||
 | 
			
		||||
/* abbreviated month names */
 | 
			
		||||
#define	ABMON_1		33
 | 
			
		||||
#define	ABMON_2		34
 | 
			
		||||
#define	ABMON_3		35
 | 
			
		||||
#define	ABMON_4		36
 | 
			
		||||
#define	ABMON_5		37
 | 
			
		||||
#define	ABMON_6		38
 | 
			
		||||
#define	ABMON_7		39
 | 
			
		||||
#define	ABMON_8		40
 | 
			
		||||
#define	ABMON_9		41
 | 
			
		||||
#define	ABMON_10	42
 | 
			
		||||
#define	ABMON_11	43
 | 
			
		||||
#define	ABMON_12	44
 | 
			
		||||
 | 
			
		||||
#define	ERA		45	/* era description segments */
 | 
			
		||||
#define	ERA_D_FMT	46	/* era date format string */
 | 
			
		||||
#define	ERA_D_T_FMT	47	/* era date and time format string */
 | 
			
		||||
#define	ERA_T_FMT	48	/* era time format string */
 | 
			
		||||
#define	ALT_DIGITS	49	/* alternative symbols for digits */
 | 
			
		||||
 | 
			
		||||
#define	RADIXCHAR	50	/* radix char */
 | 
			
		||||
#define	THOUSEP		51	/* separator for thousands */
 | 
			
		||||
 | 
			
		||||
#define	YESEXPR		52	/* affirmative response expression */
 | 
			
		||||
#define	NOEXPR		53	/* negative response expression */
 | 
			
		||||
#define	YESSTR		54	/* affirmative response for yes/no queries */
 | 
			
		||||
#define	NOSTR		55	/* negative response for yes/no queries */
 | 
			
		||||
 | 
			
		||||
#define	CRNCYSTR	56	/* currency symbol */
 | 
			
		||||
 | 
			
		||||
#define	D_MD_ORDER	57	/* month/day order (local extension) */
 | 
			
		||||
 | 
			
		||||
#define _NL_CTYPE_TRANSLIT_TAB_SIZE 58
 | 
			
		||||
#define _NL_CTYPE_TRANSLIT_FROM_IDX 59
 | 
			
		||||
#define _NL_CTYPE_TRANSLIT_FROM_TBL 60
 | 
			
		||||
#define _NL_CTYPE_TRANSLIT_TO_IDX 61
 | 
			
		||||
#define _NL_CTYPE_TRANSLIT_TO_TBL 62
 | 
			
		||||
#define _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN 63
 | 
			
		||||
#define _NL_CTYPE_TRANSLIT_DEFAULT_MISSING 64
 | 
			
		||||
#define _NL_CTYPE_TRANSLIT_IGNORE_LEN 65
 | 
			
		||||
#define _NL_CTYPE_TRANSLIT_IGNORE 66
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_1 70
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_2 71
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_3 72
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_4 73
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_5 74
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_6 75
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_7 76
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_8 77
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_9 78
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_10 79
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_11 80
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_12 81
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_13 82
 | 
			
		||||
#define _NL_CTYPE_EXTRA_MAP_14 83
 | 
			
		||||
 | 
			
		||||
__BEGIN_DECLS
 | 
			
		||||
char	*nl_langinfo(nl_item);
 | 
			
		||||
__END_DECLS
 | 
			
		||||
 | 
			
		||||
#endif /* !_LANGINFO_H_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -72,15 +72,15 @@ long	_EXFUN(labs,(long));
 | 
			
		|||
ldiv_t	_EXFUN(ldiv,(long __numer, long __denom));
 | 
			
		||||
_PTR	_EXFUN(malloc,(size_t __size));
 | 
			
		||||
int	_EXFUN(mblen,(const char *, size_t));
 | 
			
		||||
int	_EXFUN(_mblen_r,(struct _reent *, const char *, size_t, int *));
 | 
			
		||||
int	_EXFUN(_mblen_r,(struct _reent *, const char *, size_t, _mbstate_t *));
 | 
			
		||||
int	_EXFUN(mbtowc,(wchar_t *, const char *, size_t));
 | 
			
		||||
int	_EXFUN(_mbtowc_r,(struct _reent *, wchar_t *, const char *, size_t, int *));
 | 
			
		||||
int	_EXFUN(_mbtowc_r,(struct _reent *, wchar_t *, const char *, size_t, _mbstate_t *));
 | 
			
		||||
int	_EXFUN(wctomb,(char *, wchar_t));
 | 
			
		||||
int	_EXFUN(_wctomb_r,(struct _reent *, char *, wchar_t, int *));
 | 
			
		||||
int	_EXFUN(_wctomb_r,(struct _reent *, char *, wchar_t, _mbstate_t *));
 | 
			
		||||
size_t	_EXFUN(mbstowcs,(wchar_t *, const char *, size_t));
 | 
			
		||||
size_t	_EXFUN(_mbstowcs_r,(struct _reent *, wchar_t *, const char *, size_t, int *));
 | 
			
		||||
size_t	_EXFUN(_mbstowcs_r,(struct _reent *, wchar_t *, const char *, size_t, _mbstate_t *));
 | 
			
		||||
size_t	_EXFUN(wcstombs,(char *, const wchar_t *, size_t));
 | 
			
		||||
size_t	_EXFUN(_wcstombs_r,(struct _reent *, char *, const wchar_t *, size_t, int *));
 | 
			
		||||
size_t	_EXFUN(_wcstombs_r,(struct _reent *, char *, const wchar_t *, size_t, _mbstate_t *));
 | 
			
		||||
#ifndef __STRICT_ANSI__
 | 
			
		||||
#ifndef _REENT_ONLY
 | 
			
		||||
int     _EXFUN(mkstemp,(char *));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,4 +18,29 @@ typedef int _ssize_t;
 | 
			
		|||
typedef long _ssize_t;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define __need_wint_t
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
#ifndef _MBSTATE_T
 | 
			
		||||
#define _MBSTATE_T
 | 
			
		||||
/* Conversion state information.  */
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  int __count;
 | 
			
		||||
  union
 | 
			
		||||
  {
 | 
			
		||||
    wint_t __wch;
 | 
			
		||||
    char __wchb[4];
 | 
			
		||||
  } __value;		/* Value so far.  */
 | 
			
		||||
} _mbstate_t;
 | 
			
		||||
#endif /* _MBSTATE_T */
 | 
			
		||||
 | 
			
		||||
#ifdef __CYGWIN__
 | 
			
		||||
# ifndef MBSTATE_T
 | 
			
		||||
#  define MBSTATE_T
 | 
			
		||||
typedef _mbstate_t mbstate_t;
 | 
			
		||||
# endif /* MBSTATE_T */
 | 
			
		||||
# define WEOF (0xffffffffu)
 | 
			
		||||
#endif /* __CYGWIN__ */
 | 
			
		||||
 | 
			
		||||
#endif	/* _SYS__TYPES_H */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,10 @@
 | 
			
		|||
 | 
			
		||||
#include <machine/ieeefp.h>  /* floating point macros */
 | 
			
		||||
 | 
			
		||||
/* Length of longest possible multibyte sequence among all supported
 | 
			
		||||
   locales. */
 | 
			
		||||
#define MB_LEN_MAX 8
 | 
			
		||||
 | 
			
		||||
/* exceptions first */
 | 
			
		||||
#if defined(__H8300__) || defined(__H8500__) || defined (__H8300H__) ||  defined(__W65__) || defined (__H8300S__)
 | 
			
		||||
#define __SMALL_BITFIELDS
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -146,6 +146,7 @@ extern __IMPORT int sys_nerr;
 | 
			
		|||
#define ENOMEDIUM 135   /* No medium (in tape drive) */
 | 
			
		||||
#define ENOSHARE 136    /* No such host or network path */
 | 
			
		||||
#define ECASECLASH 137  /* Filename exists with different case */
 | 
			
		||||
#define EILSEQ 138
 | 
			
		||||
 | 
			
		||||
/* From cygwin32.  */
 | 
			
		||||
#define EWOULDBLOCK EAGAIN	/* Operation would block */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -307,9 +307,9 @@ struct _misc_reent
 | 
			
		|||
{
 | 
			
		||||
  /* miscellaneous reentrant data */
 | 
			
		||||
  char *_strtok_last;
 | 
			
		||||
  int _mblen_state;
 | 
			
		||||
  int _wctomb_state;
 | 
			
		||||
  int _mbtowc_state;
 | 
			
		||||
  _mbstate_t _mblen_state;
 | 
			
		||||
  _mbstate_t _wctomb_state;
 | 
			
		||||
  _mbstate_t _mbtowc_state;
 | 
			
		||||
  char _l64a_buf[8];
 | 
			
		||||
  int _getdate_err;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -463,9 +463,12 @@ struct _reent
 | 
			
		|||
#define _REENT_INIT_MISC(var) do { \
 | 
			
		||||
  struct _reent *_r = (var); \
 | 
			
		||||
  _r->_misc->_strtok_last = _NULL; \
 | 
			
		||||
  _r->_misc->_mblen_state = 0; \
 | 
			
		||||
  _r->_misc->_wctomb_state = 0; \
 | 
			
		||||
  _r->_misc->_mbtowc_state = 0; \
 | 
			
		||||
  _r->_misc->_mblen_state.__count = 0; \
 | 
			
		||||
  _r->_misc->_mblen_state.__value.__wch = 0; \
 | 
			
		||||
  _r->_misc->_wctomb_state.__count = 0; \
 | 
			
		||||
  _r->_misc->_wctomb_state.__value.__wch = 0; \
 | 
			
		||||
  _r->_misc->_mbtowc_state.__count = 0; \
 | 
			
		||||
  _r->_misc->_mbtowc_state.__value.__wch = 0; \
 | 
			
		||||
  _r->_misc->_l64a_buf[0] = '\0'; \
 | 
			
		||||
  _r->_misc->_getdate_err = 0; \
 | 
			
		||||
} while (0)
 | 
			
		||||
| 
						 | 
				
			
			@ -537,9 +540,9 @@ struct _reent
 | 
			
		|||
          int _gamma_signgam;
 | 
			
		||||
          __extension__ unsigned long long _rand_next;
 | 
			
		||||
          struct _rand48 _r48;
 | 
			
		||||
          int _mblen_state;
 | 
			
		||||
          int _mbtowc_state;
 | 
			
		||||
          int _wctomb_state;
 | 
			
		||||
          _mbstate_t _mblen_state;
 | 
			
		||||
          _mbstate_t _mbtowc_state;
 | 
			
		||||
          _mbstate_t _wctomb_state;
 | 
			
		||||
          char _l64a_buf[8];
 | 
			
		||||
          char _signal_buf[_REENT_SIGNAL_SIZE];
 | 
			
		||||
          int _getdate_err;  
 | 
			
		||||
| 
						 | 
				
			
			@ -575,7 +578,7 @@ struct _reent
 | 
			
		|||
    { 0,0,0,0,0,0,0,0}, 0, 1, \
 | 
			
		||||
    {{_RAND48_SEED_0, _RAND48_SEED_1, _RAND48_SEED_2}, \
 | 
			
		||||
     {_RAND48_MULT_0, _RAND48_MULT_1, _RAND48_MULT_2}, _RAND48_ADD}, \
 | 
			
		||||
    0, 0, 0, "", "", 0} } }
 | 
			
		||||
    {0, {0}}, {0, {0}}, {0, {0}}, "", "", 0} } }
 | 
			
		||||
 | 
			
		||||
#define _REENT_INIT_PTR(var) \
 | 
			
		||||
  { int i; \
 | 
			
		||||
| 
						 | 
				
			
			@ -612,9 +615,12 @@ struct _reent
 | 
			
		|||
    var->_new._reent._r48._mult[1] = _RAND48_MULT_1; \
 | 
			
		||||
    var->_new._reent._r48._mult[2] = _RAND48_MULT_2; \
 | 
			
		||||
    var->_new._reent._r48._add = _RAND48_ADD; \
 | 
			
		||||
    var->_new._reent._mblen_state = 0; \
 | 
			
		||||
    var->_new._reent._mbtowc_state = 0; \
 | 
			
		||||
    var->_new._reent._wctomb_state = 0; \
 | 
			
		||||
    var->_new._reent._mblen_state.__count = 0; \
 | 
			
		||||
    var->_new._reent._mblen_state.__value.__wch = 0; \
 | 
			
		||||
    var->_new._reent._mbtowc_state.__count = 0; \
 | 
			
		||||
    var->_new._reent._mbtowc_state.__value.__wch = 0; \
 | 
			
		||||
    var->_new._reent._wctomb_state.__count = 0; \
 | 
			
		||||
    var->_new._reent._wctomb_state.__value.__wch = 0; \
 | 
			
		||||
    var->_new._reent._l64a_buf[0] = '\0'; \
 | 
			
		||||
    var->_new._reent._signal_buf[0] = '\0'; \
 | 
			
		||||
    var->_new._reent._getdate_err = 0; \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,65 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 1988, 1993
 | 
			
		||||
 *	The Regents of the University of California.  All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 * 3. All advertising materials mentioning features or use of this software
 | 
			
		||||
 *    must display the following acknowledgement:
 | 
			
		||||
 *	This product includes software developed by the University of
 | 
			
		||||
 *	California, Berkeley and its contributors.
 | 
			
		||||
 * 4. Neither the name of the University nor the names of its contributors
 | 
			
		||||
 *    may be used to endorse or promote products derived from this software
 | 
			
		||||
 *    without specific prior written permission.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 *
 | 
			
		||||
 *	@(#)syslimits.h	8.1 (Berkeley) 6/2/93
 | 
			
		||||
 * $FreeBSD: src/sys/sys/syslimits.h,v 1.10 2001/06/18 20:24:54 wollman Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SYS_SYSLIMITS_H_
 | 
			
		||||
#define _SYS_SYSLIMITS_H_
 | 
			
		||||
 | 
			
		||||
#define	ARG_MAX			65536	/* max bytes for an exec function */
 | 
			
		||||
#ifndef CHILD_MAX
 | 
			
		||||
#define	CHILD_MAX		   40	/* max simultaneous processes */
 | 
			
		||||
#endif
 | 
			
		||||
#define	LINK_MAX		32767	/* max file link count */
 | 
			
		||||
#define	MAX_CANON		  255	/* max bytes in term canon input line */
 | 
			
		||||
#define	MAX_INPUT		  255	/* max bytes in terminal input */
 | 
			
		||||
#define	NAME_MAX		  255	/* max bytes in a file name */
 | 
			
		||||
#define	NGROUPS_MAX		   16	/* max supplemental group id's */
 | 
			
		||||
#ifndef OPEN_MAX
 | 
			
		||||
#define	OPEN_MAX		   64	/* max open files per process */
 | 
			
		||||
#endif
 | 
			
		||||
#define	PATH_MAX		 1024	/* max bytes in pathname */
 | 
			
		||||
#define	PIPE_BUF		  512	/* max bytes for atomic pipe writes */
 | 
			
		||||
#define	IOV_MAX			 1024	/* max elements in i/o vector */
 | 
			
		||||
 | 
			
		||||
#define	BC_BASE_MAX		   99	/* max ibase/obase values in bc(1) */
 | 
			
		||||
#define	BC_DIM_MAX		 2048	/* max array elements in bc(1) */
 | 
			
		||||
#define	BC_SCALE_MAX		   99	/* max scale value in bc(1) */
 | 
			
		||||
#define	BC_STRING_MAX		 1000	/* max const string length in bc(1) */
 | 
			
		||||
#define	COLL_WEIGHTS_MAX	    0	/* max weights for order keyword */
 | 
			
		||||
#define	EXPR_NEST_MAX		   32	/* max expressions nested in expr(1) */
 | 
			
		||||
#define	LINE_MAX		 2048	/* max bytes in an input line */
 | 
			
		||||
#define	RE_DUP_MAX		  255	/* max RE's in interval notation */
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
#ifndef _WCHAR_H_
 | 
			
		||||
#define _WCHAR_H_
 | 
			
		||||
 | 
			
		||||
#define __need_size_t
 | 
			
		||||
#define __need_wchar_t
 | 
			
		||||
#define __need_wint_t
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
/* For _mbstate_t definition. */
 | 
			
		||||
#include <sys/_types.h>
 | 
			
		||||
 | 
			
		||||
#ifndef WEOF
 | 
			
		||||
# define WEOF (0xffffffffu)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef MBSTATE_T
 | 
			
		||||
#define MBSTATE_T
 | 
			
		||||
typedef _mbstate_t mbstate_t;
 | 
			
		||||
#endif /* MBSTATE_T */
 | 
			
		||||
 | 
			
		||||
wint_t btowc (int c);
 | 
			
		||||
int wctob (wint_t c);
 | 
			
		||||
int mbsinit(const mbstate_t *ps);
 | 
			
		||||
size_t mbrlen(const char *s, size_t n, mbstate_t *ps);
 | 
			
		||||
size_t mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
 | 
			
		||||
size_t wcrtomb(char *s, wchar_t wc, mbstate_t *ps);
 | 
			
		||||
size_t mbsrtowcs(wchar_t *dst, const char **src, size_t len, mbstate_t *ps);
 | 
			
		||||
size_t wcsrtombs(char *dst, const wchar_t **src, size_t len, mbstate_t *ps);
 | 
			
		||||
 | 
			
		||||
#endif /* _WCHAR_H_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -4,7 +4,7 @@ AUTOMAKE_OPTIONS = cygnus
 | 
			
		|||
 | 
			
		||||
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
 | 
			
		||||
 | 
			
		||||
LIB_SOURCES = locale.c
 | 
			
		||||
LIB_SOURCES = timelocal.h timelocal.c ldpart.h ldpart.c fix_grouping.c locale.c nl_langinfo.c lnumeric.h lnumeric.c lmonetary.h lmonetary.c lmessages.h lmessages.c
 | 
			
		||||
 | 
			
		||||
liblocale_la_LDFLAGS = -Xcompiler -nostdlib
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -110,7 +110,7 @@ AUTOMAKE_OPTIONS = cygnus
 | 
			
		|||
 | 
			
		||||
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
 | 
			
		||||
 | 
			
		||||
LIB_SOURCES = locale.c
 | 
			
		||||
LIB_SOURCES = timelocal.h timelocal.c ldpart.h ldpart.c fix_grouping.c locale.c nl_langinfo.c lnumeric.h lnumeric.c lmonetary.h lmonetary.c lmessages.h lmessages.c
 | 
			
		||||
 | 
			
		||||
liblocale_la_LDFLAGS = -Xcompiler -nostdlib
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -139,11 +139,16 @@ DEFS = @DEFS@ -I. -I$(srcdir)
 | 
			
		|||
CPPFLAGS = @CPPFLAGS@
 | 
			
		||||
LIBS = @LIBS@
 | 
			
		||||
lib_a_LIBADD = 
 | 
			
		||||
@USE_LIBTOOL_FALSE@lib_a_OBJECTS =  locale.$(OBJEXT)
 | 
			
		||||
@USE_LIBTOOL_FALSE@lib_a_OBJECTS =  timelocal.$(OBJEXT) ldpart.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@fix_grouping.$(OBJEXT) locale.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@nl_langinfo.$(OBJEXT) lnumeric.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@lmonetary.$(OBJEXT) lmessages.$(OBJEXT)
 | 
			
		||||
LTLIBRARIES =  $(noinst_LTLIBRARIES)
 | 
			
		||||
 | 
			
		||||
liblocale_la_LIBADD = 
 | 
			
		||||
@USE_LIBTOOL_TRUE@liblocale_la_OBJECTS =  locale.lo
 | 
			
		||||
@USE_LIBTOOL_TRUE@liblocale_la_OBJECTS =  timelocal.lo ldpart.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@fix_grouping.lo locale.lo nl_langinfo.lo lnumeric.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@lmonetary.lo lmessages.lo
 | 
			
		||||
CFLAGS = @CFLAGS@
 | 
			
		||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 | 
			
		||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,82 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org>
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <sys/cdefs.h>
 | 
			
		||||
 | 
			
		||||
#include <ctype.h>
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
static const char nogrouping[] = { CHAR_MAX, '\0' };
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * "3;3;-1" -> "\003\003\177"
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
const char *
 | 
			
		||||
__fix_locale_grouping_str(const char *str) {
 | 
			
		||||
 | 
			
		||||
	char *src, *dst;
 | 
			
		||||
	char n;
 | 
			
		||||
 | 
			
		||||
	if (str == NULL || *str == '\0') {
 | 
			
		||||
		return nogrouping;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for (src = (char*)str, dst = (char*)str; *src != '\0'; src++) {
 | 
			
		||||
 | 
			
		||||
		/* input string examples: "3;3", "3;2;-1" */
 | 
			
		||||
		if (*src == ';')
 | 
			
		||||
			continue;
 | 
			
		||||
	
 | 
			
		||||
		if (*src == '-' && *(src+1) == '1') {
 | 
			
		||||
			*dst++ = CHAR_MAX;
 | 
			
		||||
			src++;
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!isdigit((unsigned char)*src)) {
 | 
			
		||||
			/* broken grouping string */
 | 
			
		||||
			return nogrouping;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/* assume all numbers <= 99 */
 | 
			
		||||
		n = *src - '0';
 | 
			
		||||
		if (isdigit((unsigned char)*(src+1))) {
 | 
			
		||||
			src++;
 | 
			
		||||
			n *= 10;
 | 
			
		||||
			n += *src - '0';
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		*dst = n;
 | 
			
		||||
		/* NOTE: assume all input started with "0" as 'no grouping' */
 | 
			
		||||
		if (*dst == '\0')
 | 
			
		||||
			return (dst == (char*)str) ? nogrouping : str;
 | 
			
		||||
		dst++;
 | 
			
		||||
	}
 | 
			
		||||
	*dst = '\0';
 | 
			
		||||
	return str;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,183 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2000, 2001 Alexey Zelkin <phantom@FreeBSD.org>
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <sys/cdefs.h>
 | 
			
		||||
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/stat.h>
 | 
			
		||||
#include <sys/syslimits.h>
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
#include "setlocale.h"
 | 
			
		||||
#include "ldpart.h"
 | 
			
		||||
 | 
			
		||||
static int split_lines(char *, const char *);
 | 
			
		||||
static void set_from_buf(const char *, int, const char **);
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
__part_load_locale(const char *name,
 | 
			
		||||
		int *using_locale,
 | 
			
		||||
		char *locale_buf,
 | 
			
		||||
		const char *category_filename,
 | 
			
		||||
		int locale_buf_size_max,
 | 
			
		||||
		int locale_buf_size_min,
 | 
			
		||||
		const char **dst_localebuf) {
 | 
			
		||||
 | 
			
		||||
	static char		locale_buf_C[] = "C";
 | 
			
		||||
	static int		num_lines;
 | 
			
		||||
 | 
			
		||||
	int			 fd;
 | 
			
		||||
	char			*lbuf;
 | 
			
		||||
	char			*p;
 | 
			
		||||
	const char 		*plim;
 | 
			
		||||
	char                     filename[PATH_MAX];
 | 
			
		||||
	struct stat		 st;
 | 
			
		||||
	size_t			 namesize;
 | 
			
		||||
	size_t			 bufsize;
 | 
			
		||||
	int                      save_using_locale;
 | 
			
		||||
        char *nptr;
 | 
			
		||||
 | 
			
		||||
	save_using_locale = *using_locale;
 | 
			
		||||
	*using_locale = 0;
 | 
			
		||||
 | 
			
		||||
	if (name == NULL)
 | 
			
		||||
		goto no_locale;
 | 
			
		||||
 | 
			
		||||
	if (!strcmp(name, "C") || !strcmp(name, "POSIX"))
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * If the locale name is the same as our cache, use the cache.
 | 
			
		||||
	 */
 | 
			
		||||
	lbuf = locale_buf;
 | 
			
		||||
	if (lbuf != NULL && strcmp(name, lbuf) == 0) {
 | 
			
		||||
		set_from_buf(lbuf, num_lines, dst_localebuf);
 | 
			
		||||
		*using_locale = 1;
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Slurp the locale file into the cache.
 | 
			
		||||
	 */
 | 
			
		||||
	namesize = strlen(name) + 1;
 | 
			
		||||
 | 
			
		||||
	if (!_PathLocale)
 | 
			
		||||
		goto no_locale;
 | 
			
		||||
	/* Range checking not needed, 'name' size is limited */
 | 
			
		||||
	strcpy(filename, _PathLocale);
 | 
			
		||||
	strcat(filename, "/");
 | 
			
		||||
	strcat(filename, name);
 | 
			
		||||
	strcat(filename, "/");
 | 
			
		||||
	strcat(filename, category_filename);
 | 
			
		||||
	fd = open(filename, O_RDONLY);
 | 
			
		||||
	if (fd < 0)
 | 
			
		||||
		goto no_locale;
 | 
			
		||||
	if (fstat(fd, &st) != 0)
 | 
			
		||||
		goto bad_locale;
 | 
			
		||||
	if (st.st_size <= 0)
 | 
			
		||||
		goto bad_locale;
 | 
			
		||||
	bufsize = namesize + st.st_size;
 | 
			
		||||
	locale_buf = NULL;
 | 
			
		||||
 | 
			
		||||
        if (lbuf == NULL || lbuf == locale_buf_C)
 | 
			
		||||
          {
 | 
			
		||||
            lbuf = malloc(bufsize);
 | 
			
		||||
          }
 | 
			
		||||
        else
 | 
			
		||||
          { 
 | 
			
		||||
            nptr = realloc(lbuf, bufsize);
 | 
			
		||||
            if (!nptr && lbuf)
 | 
			
		||||
              free (lbuf);
 | 
			
		||||
            lbuf = nptr;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
	if (lbuf == NULL)
 | 
			
		||||
		goto bad_locale;
 | 
			
		||||
	(void) strcpy(lbuf, name);
 | 
			
		||||
	p = lbuf + namesize;
 | 
			
		||||
	plim = p + st.st_size;
 | 
			
		||||
	if (read(fd, p, (size_t) st.st_size) != st.st_size)
 | 
			
		||||
		goto bad_lbuf;
 | 
			
		||||
	if (close(fd) != 0)
 | 
			
		||||
		goto bad_lbuf;
 | 
			
		||||
	/*
 | 
			
		||||
	 * Parse the locale file into localebuf.
 | 
			
		||||
	 */
 | 
			
		||||
	if (plim[-1] != '\n')
 | 
			
		||||
		goto bad_lbuf;
 | 
			
		||||
	num_lines = split_lines(p, plim);
 | 
			
		||||
	if (num_lines >= locale_buf_size_max)
 | 
			
		||||
		num_lines = locale_buf_size_max;
 | 
			
		||||
	else if (num_lines >= locale_buf_size_min)
 | 
			
		||||
		num_lines = locale_buf_size_min;
 | 
			
		||||
	else
 | 
			
		||||
		goto reset_locale;
 | 
			
		||||
	set_from_buf(lbuf, num_lines, dst_localebuf);
 | 
			
		||||
	/*
 | 
			
		||||
	 * Record the successful parse in the cache.
 | 
			
		||||
	 */
 | 
			
		||||
	locale_buf = lbuf;
 | 
			
		||||
 | 
			
		||||
	*using_locale = 1;
 | 
			
		||||
	return 0;
 | 
			
		||||
 | 
			
		||||
reset_locale:
 | 
			
		||||
	locale_buf = locale_buf_C;
 | 
			
		||||
	save_using_locale = 0;
 | 
			
		||||
bad_lbuf:
 | 
			
		||||
	free(lbuf);
 | 
			
		||||
bad_locale:
 | 
			
		||||
	(void)close(fd);
 | 
			
		||||
no_locale:
 | 
			
		||||
	*using_locale = save_using_locale;
 | 
			
		||||
	return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
split_lines(char *p, const char *plim) {
 | 
			
		||||
 | 
			
		||||
	int i;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; p < plim; i++) {
 | 
			
		||||
		p = strchr(p, '\n');
 | 
			
		||||
		*p++ = '\0';
 | 
			
		||||
	}
 | 
			
		||||
	return i;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
set_from_buf(const char *p, int num_lines, const char **dst_localebuf) {
 | 
			
		||||
 | 
			
		||||
	const char **ap;
 | 
			
		||||
	int i;
 | 
			
		||||
 | 
			
		||||
	for (ap = dst_localebuf, i = 0; i < num_lines; ++ap, ++i)
 | 
			
		||||
		*ap = p += strlen(p) + 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
/*-
 | 
			
		||||
 * Copyright (c) 2000, 2001 Alexey Zelkin <phantom@FreeBSD.org>
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 *
 | 
			
		||||
 * $FreeBSD: src/lib/libc/locale/ldpart.h,v 1.4 2001/12/20 18:28:52 phantom Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _LDPART_H_
 | 
			
		||||
#define	_LDPART_H_
 | 
			
		||||
 | 
			
		||||
int	__part_load_locale(const char *, int*, char *, const char *,
 | 
			
		||||
		    int, int, const char **);
 | 
			
		||||
 | 
			
		||||
#endif /* !_LDPART_H_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,89 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org>
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <sys/cdefs.h>
 | 
			
		||||
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
#include "lmessages.h"
 | 
			
		||||
#include "ldpart.h"
 | 
			
		||||
 | 
			
		||||
#define LCMESSAGES_SIZE_FULL (sizeof(struct lc_messages_T) / sizeof(char *))
 | 
			
		||||
#define LCMESSAGES_SIZE_MIN \
 | 
			
		||||
		(offsetof(struct lc_messages_T, yesstr) / sizeof(char *))
 | 
			
		||||
 | 
			
		||||
static char empty[] = "";
 | 
			
		||||
 | 
			
		||||
static const struct lc_messages_T _C_messages_locale = {
 | 
			
		||||
	"^[yY]" ,	/* yesexpr */
 | 
			
		||||
	"^[nN]" ,	/* noexpr */
 | 
			
		||||
	"yes" , 	/* yesstr */
 | 
			
		||||
	"no"		/* nostr */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct lc_messages_T _messages_locale;
 | 
			
		||||
static int	_messages_using_locale;
 | 
			
		||||
static char	*_messages_locale_buf;
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
__messages_load_locale(const char *name) {
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Propose that we can have incomplete locale file (w/o "{yes,no}str").
 | 
			
		||||
	 * Initialize them before loading.  In case of complete locale, they'll
 | 
			
		||||
	 * be initialized to loaded value, otherwise they'll not be touched.
 | 
			
		||||
	 */
 | 
			
		||||
	_messages_locale.yesstr = empty;
 | 
			
		||||
	_messages_locale.nostr = empty;
 | 
			
		||||
 | 
			
		||||
	return __part_load_locale(name, &_messages_using_locale,
 | 
			
		||||
		_messages_locale_buf, "LC_MESSAGES",
 | 
			
		||||
		LCMESSAGES_SIZE_FULL, LCMESSAGES_SIZE_MIN,
 | 
			
		||||
		(const char **)&_messages_locale);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct lc_messages_T *
 | 
			
		||||
__get_current_messages_locale(void) {
 | 
			
		||||
 | 
			
		||||
	return (_messages_using_locale
 | 
			
		||||
		? &_messages_locale
 | 
			
		||||
		: (struct lc_messages_T *)&_C_messages_locale);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef LOCALE_DEBUG
 | 
			
		||||
void
 | 
			
		||||
msgdebug() {
 | 
			
		||||
printf(	"yesexpr = %s\n"
 | 
			
		||||
	"noexpr = %s\n"
 | 
			
		||||
	"yesstr = %s\n"
 | 
			
		||||
	"nostr = %s\n",
 | 
			
		||||
	_messages_locale.yesexpr,
 | 
			
		||||
	_messages_locale.noexpr,
 | 
			
		||||
	_messages_locale.yesstr,
 | 
			
		||||
	_messages_locale.nostr
 | 
			
		||||
);
 | 
			
		||||
}
 | 
			
		||||
#endif /* LOCALE_DEBUG */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
/*-
 | 
			
		||||
 * Copyright (c) 2000, 2001 Alexey Zelkin <phantom@FreeBSD.org>
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 *
 | 
			
		||||
 * $FreeBSD: src/lib/libc/locale/lmessages.h,v 1.3 2001/12/20 18:28:52 phantom Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _LMESSAGES_H_
 | 
			
		||||
#define	_LMESSAGES_H_
 | 
			
		||||
 | 
			
		||||
struct	lc_messages_T {
 | 
			
		||||
	const char	*yesexpr;
 | 
			
		||||
	const char	*noexpr;
 | 
			
		||||
	const char	*yesstr;
 | 
			
		||||
	const char	*nostr;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct lc_messages_T *__get_current_messages_locale(void);
 | 
			
		||||
int	__messages_load_locale(const char *);
 | 
			
		||||
 | 
			
		||||
#endif /* !_LMESSAGES_H_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,143 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2000, 2001 Alexey Zelkin <phantom@FreeBSD.org>
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <sys/cdefs.h>
 | 
			
		||||
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include "lmonetary.h"
 | 
			
		||||
#include "ldpart.h"
 | 
			
		||||
 | 
			
		||||
extern int __mlocale_changed;
 | 
			
		||||
extern const char * __fix_locale_grouping_str(const char *);
 | 
			
		||||
 | 
			
		||||
#define LCMONETARY_SIZE (sizeof(struct lc_monetary_T) / sizeof(char *))
 | 
			
		||||
 | 
			
		||||
static char	empty[] = "";
 | 
			
		||||
static char	numempty[] = { CHAR_MAX, '\0'};
 | 
			
		||||
 | 
			
		||||
static const struct lc_monetary_T _C_monetary_locale = {
 | 
			
		||||
	empty,		/* int_curr_symbol */
 | 
			
		||||
	empty,		/* currency_symbol */
 | 
			
		||||
	empty,		/* mon_decimal_point */
 | 
			
		||||
	empty,		/* mon_thousands_sep */
 | 
			
		||||
	numempty,	/* mon_grouping */
 | 
			
		||||
	empty,		/* positive_sign */
 | 
			
		||||
	empty,		/* negative_sign */
 | 
			
		||||
	numempty,	/* int_frac_digits */
 | 
			
		||||
	numempty,	/* frac_digits */
 | 
			
		||||
	numempty,	/* p_cs_precedes */
 | 
			
		||||
	numempty,	/* p_sep_by_space */
 | 
			
		||||
	numempty,	/* n_cs_precedes */
 | 
			
		||||
	numempty,	/* n_sep_by_space */
 | 
			
		||||
	numempty,	/* p_sign_posn */
 | 
			
		||||
	numempty	/* n_sign_posn */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct lc_monetary_T _monetary_locale;
 | 
			
		||||
static int	_monetary_using_locale;
 | 
			
		||||
static char	*_monetary_locale_buf;
 | 
			
		||||
 | 
			
		||||
static char
 | 
			
		||||
cnv(const char *str) {
 | 
			
		||||
	int i = strtol(str, NULL, 10);
 | 
			
		||||
	if (i == -1)
 | 
			
		||||
		i = CHAR_MAX;
 | 
			
		||||
	return (char)i;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
__monetary_load_locale(const char *name) {
 | 
			
		||||
 | 
			
		||||
	int ret;
 | 
			
		||||
	__mlocale_changed = 1;
 | 
			
		||||
	ret = __part_load_locale(name, &_monetary_using_locale,
 | 
			
		||||
		_monetary_locale_buf, "LC_MONETARY",
 | 
			
		||||
		LCMONETARY_SIZE, LCMONETARY_SIZE,
 | 
			
		||||
		(const char **)&_monetary_locale);
 | 
			
		||||
	if (ret == 0 && _monetary_using_locale) {
 | 
			
		||||
		_monetary_locale.mon_grouping =
 | 
			
		||||
		     __fix_locale_grouping_str(_monetary_locale.mon_grouping);
 | 
			
		||||
 | 
			
		||||
#define M_ASSIGN_CHAR(NAME) (((char *)_monetary_locale.NAME)[0] = \
 | 
			
		||||
			     cnv(_monetary_locale.NAME))
 | 
			
		||||
 | 
			
		||||
		M_ASSIGN_CHAR(int_frac_digits);
 | 
			
		||||
		M_ASSIGN_CHAR(frac_digits);
 | 
			
		||||
		M_ASSIGN_CHAR(p_cs_precedes);
 | 
			
		||||
		M_ASSIGN_CHAR(p_sep_by_space);
 | 
			
		||||
		M_ASSIGN_CHAR(n_cs_precedes);
 | 
			
		||||
		M_ASSIGN_CHAR(n_sep_by_space);
 | 
			
		||||
		M_ASSIGN_CHAR(p_sign_posn);
 | 
			
		||||
		M_ASSIGN_CHAR(n_sign_posn);
 | 
			
		||||
	}
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct lc_monetary_T *
 | 
			
		||||
__get_current_monetary_locale(void) {
 | 
			
		||||
 | 
			
		||||
	return (_monetary_using_locale
 | 
			
		||||
		? &_monetary_locale
 | 
			
		||||
		: (struct lc_monetary_T *)&_C_monetary_locale);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef LOCALE_DEBUG
 | 
			
		||||
void
 | 
			
		||||
monetdebug() {
 | 
			
		||||
printf(	"int_curr_symbol = %s\n"
 | 
			
		||||
	"currency_symbol = %s\n"
 | 
			
		||||
	"mon_decimal_point = %s\n"
 | 
			
		||||
	"mon_thousands_sep = %s\n"
 | 
			
		||||
	"mon_grouping = %s\n"
 | 
			
		||||
	"positive_sign = %s\n"
 | 
			
		||||
	"negative_sign = %s\n"
 | 
			
		||||
	"int_frac_digits = %d\n"
 | 
			
		||||
	"frac_digits = %d\n"
 | 
			
		||||
	"p_cs_precedes = %d\n"
 | 
			
		||||
	"p_sep_by_space = %d\n"
 | 
			
		||||
	"n_cs_precedes = %d\n"
 | 
			
		||||
	"n_sep_by_space = %d\n"
 | 
			
		||||
	"p_sign_posn = %d\n"
 | 
			
		||||
	"n_sign_posn = %d\n",
 | 
			
		||||
	_monetary_locale.int_curr_symbol,
 | 
			
		||||
	_monetary_locale.currency_symbol,
 | 
			
		||||
	_monetary_locale.mon_decimal_point,
 | 
			
		||||
	_monetary_locale.mon_thousands_sep,
 | 
			
		||||
	_monetary_locale.mon_grouping,
 | 
			
		||||
	_monetary_locale.positive_sign,
 | 
			
		||||
	_monetary_locale.negative_sign,
 | 
			
		||||
	_monetary_locale.int_frac_digits[0],
 | 
			
		||||
	_monetary_locale.frac_digits[0],
 | 
			
		||||
	_monetary_locale.p_cs_precedes[0],
 | 
			
		||||
	_monetary_locale.p_sep_by_space[0],
 | 
			
		||||
	_monetary_locale.n_cs_precedes[0],
 | 
			
		||||
	_monetary_locale.n_sep_by_space[0],
 | 
			
		||||
	_monetary_locale.p_sign_posn[0],
 | 
			
		||||
	_monetary_locale.n_sign_posn[0]
 | 
			
		||||
);
 | 
			
		||||
}
 | 
			
		||||
#endif /* LOCALE_DEBUG */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,53 @@
 | 
			
		|||
/*-
 | 
			
		||||
 * Copyright (c) 2000, 2001 Alexey Zelkin <phantom@FreeBSD.org>
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 *
 | 
			
		||||
 * $FreeBSD: src/lib/libc/locale/lmonetary.h,v 1.3 2001/12/20 18:28:52 phantom Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _LMONETARY_H_
 | 
			
		||||
#define	_LMONETARY_H_
 | 
			
		||||
 | 
			
		||||
struct lc_monetary_T {
 | 
			
		||||
	const char	*int_curr_symbol;
 | 
			
		||||
	const char	*currency_symbol;
 | 
			
		||||
	const char	*mon_decimal_point;
 | 
			
		||||
	const char	*mon_thousands_sep;
 | 
			
		||||
	const char	*mon_grouping;
 | 
			
		||||
	const char	*positive_sign;
 | 
			
		||||
	const char	*negative_sign;
 | 
			
		||||
	const char	*int_frac_digits;
 | 
			
		||||
	const char	*frac_digits;
 | 
			
		||||
	const char	*p_cs_precedes;
 | 
			
		||||
	const char	*p_sep_by_space;
 | 
			
		||||
	const char	*n_cs_precedes;
 | 
			
		||||
	const char	*n_sep_by_space;
 | 
			
		||||
	const char	*p_sign_posn;
 | 
			
		||||
	const char	*n_sign_posn;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct lc_monetary_T *__get_current_monetary_locale(void);
 | 
			
		||||
int	__monetary_load_locale(const char *);
 | 
			
		||||
 | 
			
		||||
#endif /* !_LMONETARY_H_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,85 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2000, 2001 Alexey Zelkin <phantom@FreeBSD.org>
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <sys/cdefs.h>
 | 
			
		||||
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include "lnumeric.h"
 | 
			
		||||
#include "ldpart.h"
 | 
			
		||||
 | 
			
		||||
extern int __nlocale_changed;
 | 
			
		||||
extern const char *__fix_locale_grouping_str(const char *);
 | 
			
		||||
 | 
			
		||||
#define LCNUMERIC_SIZE (sizeof(struct lc_numeric_T) / sizeof(char *))
 | 
			
		||||
 | 
			
		||||
static char	numempty[] = { CHAR_MAX, '\0' };
 | 
			
		||||
 | 
			
		||||
static const struct lc_numeric_T _C_numeric_locale = {
 | 
			
		||||
	".",     	/* decimal_point */
 | 
			
		||||
	"",     	/* thousands_sep */
 | 
			
		||||
	numempty	/* grouping */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct lc_numeric_T _numeric_locale;
 | 
			
		||||
static int	_numeric_using_locale;
 | 
			
		||||
static char	*_numeric_locale_buf;
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
__numeric_load_locale(const char *name) {
 | 
			
		||||
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	__nlocale_changed = 1;
 | 
			
		||||
	ret = __part_load_locale(name, &_numeric_using_locale,
 | 
			
		||||
		_numeric_locale_buf, "LC_NUMERIC",
 | 
			
		||||
		LCNUMERIC_SIZE, LCNUMERIC_SIZE,
 | 
			
		||||
		(const char **)&_numeric_locale);
 | 
			
		||||
	if (ret == 0 && _numeric_using_locale)
 | 
			
		||||
		_numeric_locale.grouping =
 | 
			
		||||
			__fix_locale_grouping_str(_numeric_locale.grouping);
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct lc_numeric_T *
 | 
			
		||||
__get_current_numeric_locale(void) {
 | 
			
		||||
 | 
			
		||||
	return (_numeric_using_locale
 | 
			
		||||
		? &_numeric_locale
 | 
			
		||||
		: (struct lc_numeric_T *)&_C_numeric_locale);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef LOCALE_DEBUG
 | 
			
		||||
void
 | 
			
		||||
numericdebug(void) {
 | 
			
		||||
printf(	"decimal_point = %s\n"
 | 
			
		||||
	"thousands_sep = %s\n"
 | 
			
		||||
	"grouping = %s\n",
 | 
			
		||||
	_numeric_locale.decimal_point,
 | 
			
		||||
	_numeric_locale.thousands_sep,
 | 
			
		||||
	_numeric_locale.grouping
 | 
			
		||||
);
 | 
			
		||||
}
 | 
			
		||||
#endif /* LOCALE_DEBUG */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,41 @@
 | 
			
		|||
/*-
 | 
			
		||||
 * Copyright (c) 2000, 2001 Alexey Zelkin <phantom@FreeBSD.org>
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 *
 | 
			
		||||
 * $FreeBSD: src/lib/libc/locale/lnumeric.h,v 1.3 2001/12/20 18:28:52 phantom Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _LNUMERIC_H_
 | 
			
		||||
#define	_LNUMERIC_H_
 | 
			
		||||
 | 
			
		||||
struct lc_numeric_T {
 | 
			
		||||
	const char	*decimal_point;
 | 
			
		||||
	const char	*thousands_sep;
 | 
			
		||||
	const char	*grouping;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct lc_numeric_T *__get_current_numeric_locale(void);
 | 
			
		||||
int	__numeric_load_locale(const char *);
 | 
			
		||||
 | 
			
		||||
#endif /* !_LNUMERIC_H_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,90 @@
 | 
			
		|||
.\" Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org>
 | 
			
		||||
.\" All rights reserved.
 | 
			
		||||
.\"
 | 
			
		||||
.\" Redistribution and use in source and binary forms, with or without
 | 
			
		||||
.\" modification, are permitted provided that the following conditions
 | 
			
		||||
.\" are met:
 | 
			
		||||
.\" 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
.\"    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
.\" 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
.\"    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
.\"    documentation and/or other materials provided with the distribution.
 | 
			
		||||
.\"
 | 
			
		||||
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
.\" SUCH DAMAGE.
 | 
			
		||||
.\"
 | 
			
		||||
.\" $FreeBSD: src/lib/libc/locale/nl_langinfo.3,v 1.4 2002/04/13 04:25:56 dd Exp $
 | 
			
		||||
.\"
 | 
			
		||||
.Dd May 3, 2001
 | 
			
		||||
.Dt NL_LANGINFO 3
 | 
			
		||||
.Os
 | 
			
		||||
.Sh NAME
 | 
			
		||||
.Nm nl_langinfo
 | 
			
		||||
.Nd language information
 | 
			
		||||
.Sh LIBRARY
 | 
			
		||||
.Lb libc
 | 
			
		||||
.Sh SYNOPSIS
 | 
			
		||||
.In langinfo.h
 | 
			
		||||
.Ft char *
 | 
			
		||||
.Fn nl_langinfo "nl_item item"
 | 
			
		||||
.Sh DESCRIPTION
 | 
			
		||||
The
 | 
			
		||||
.Fn nl_langinfo
 | 
			
		||||
function returns a pointer to a string containing information relevant to
 | 
			
		||||
the particular language or cultural area defined in the program's locale.
 | 
			
		||||
The manifest constant names and values of
 | 
			
		||||
.Fa item
 | 
			
		||||
are defined in
 | 
			
		||||
.Aq Pa langinfo.h .
 | 
			
		||||
.Pp
 | 
			
		||||
Calls to
 | 
			
		||||
.Fn setlocale
 | 
			
		||||
with a category corresponding to the category of
 | 
			
		||||
.Fa item ,
 | 
			
		||||
or to the
 | 
			
		||||
category
 | 
			
		||||
.Dv LC_ALL ,
 | 
			
		||||
may overwrite buffer pointed by the return value.
 | 
			
		||||
.Sh EXAMPLES
 | 
			
		||||
For example:
 | 
			
		||||
.Pp
 | 
			
		||||
.Dl nl_langinfo(ABDAY_1)
 | 
			
		||||
.Pp
 | 
			
		||||
would return a pointer to the string
 | 
			
		||||
.Qq Li Dom
 | 
			
		||||
if the identified language was
 | 
			
		||||
Portuguese, and
 | 
			
		||||
.Qq Li Sun
 | 
			
		||||
if the identified language was English.
 | 
			
		||||
.Sh RETURN VALUES
 | 
			
		||||
In a locale where langinfo data is not defined,
 | 
			
		||||
.Fn nl_langinfo
 | 
			
		||||
returns a pointer to the corresponding string in the
 | 
			
		||||
.Tn POSIX
 | 
			
		||||
locale.
 | 
			
		||||
In all locales,
 | 
			
		||||
.Fn nl_langinfo
 | 
			
		||||
returns a pointer to an empty string if
 | 
			
		||||
.Fa item
 | 
			
		||||
contains an invalid setting.
 | 
			
		||||
.Sh SEE ALSO
 | 
			
		||||
.Xr setlocale 3
 | 
			
		||||
.Sh STANDARDS
 | 
			
		||||
The
 | 
			
		||||
.Fn nl_langinfo
 | 
			
		||||
function conforms to
 | 
			
		||||
.St -susv2 .
 | 
			
		||||
.Sh HISTORY
 | 
			
		||||
The
 | 
			
		||||
.Fn nl_langinfo
 | 
			
		||||
function first appeared in
 | 
			
		||||
.Fx 4.6 .
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,213 @@
 | 
			
		|||
/*-
 | 
			
		||||
 * Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org>
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <sys/cdefs.h>
 | 
			
		||||
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include <langinfo.h>
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#include "timelocal.h"
 | 
			
		||||
#include "lnumeric.h"
 | 
			
		||||
#include "lmonetary.h"
 | 
			
		||||
#include "lmessages.h"
 | 
			
		||||
 | 
			
		||||
#define TRANSITION_PERIOD_HACK
 | 
			
		||||
 | 
			
		||||
#define _REL(BASE) ((int)item-BASE)
 | 
			
		||||
 | 
			
		||||
char *
 | 
			
		||||
nl_langinfo(nl_item item) {
 | 
			
		||||
 | 
			
		||||
   char *ret, *s, *cs;
 | 
			
		||||
   static char *csym = NULL;
 | 
			
		||||
#ifdef TRANSITION_PERIOD_HACK
 | 
			
		||||
   static char *cset = NULL;
 | 
			
		||||
#endif /* TRANSITION_PERIOD_HACK */
 | 
			
		||||
   char *nptr;
 | 
			
		||||
 | 
			
		||||
   switch (item) {
 | 
			
		||||
	case CODESET:
 | 
			
		||||
		ret = "";
 | 
			
		||||
		if ((s = setlocale(LC_CTYPE, NULL)) != NULL) {
 | 
			
		||||
			if ((cs = strchr(s, '.')) != NULL) {
 | 
			
		||||
				ret = cs + 1;
 | 
			
		||||
#ifdef TRANSITION_PERIOD_HACK
 | 
			
		||||
				if (strncmp(ret, "ISO_", 4) == 0) {
 | 
			
		||||
					int slen = strlen(ret);
 | 
			
		||||
 | 
			
		||||
                                        nptr = realloc(cset, slen);
 | 
			
		||||
 | 
			
		||||
                                        if (!nptr && cset)
 | 
			
		||||
                                          free (cset);
 | 
			
		||||
 | 
			
		||||
                                        cset = nptr;
 | 
			
		||||
					if (cset != NULL) {
 | 
			
		||||
						strcpy(cset, "ISO");
 | 
			
		||||
						strcat(cset, ret + 4);
 | 
			
		||||
						ret = cset;
 | 
			
		||||
					} else
 | 
			
		||||
						ret = "";
 | 
			
		||||
				} else if (strcmp(ret, "EUC") == 0) {
 | 
			
		||||
					if (strncmp(s, "ja_JP", 5) == 0)
 | 
			
		||||
						ret = "eucJP";
 | 
			
		||||
					else if (strncmp(s, "ko_KR", 5) == 0)
 | 
			
		||||
						ret = "eucKR";
 | 
			
		||||
					else if (strncmp(s, "zh_CN", 5) == 0)
 | 
			
		||||
						ret = "eucCN";
 | 
			
		||||
				} else if (strcmp(ret, "ASCII") == 0)
 | 
			
		||||
					ret = "US-ASCII";
 | 
			
		||||
#endif /* TRANSITION_PERIOD_HACK */
 | 
			
		||||
			} else if (strcmp(s, "C") == 0 ||
 | 
			
		||||
				   strcmp(s, "POSIX") == 0
 | 
			
		||||
#ifdef TRANSITION_PERIOD_HACK
 | 
			
		||||
				   || strstr(s, "ASCII") != NULL
 | 
			
		||||
#endif /* TRANSITION_PERIOD_HACK */
 | 
			
		||||
				  )
 | 
			
		||||
				ret = "US-ASCII";
 | 
			
		||||
		}
 | 
			
		||||
		break;
 | 
			
		||||
	case D_T_FMT:
 | 
			
		||||
		ret = (char *) __get_current_time_locale()->c_fmt;
 | 
			
		||||
		break;
 | 
			
		||||
	case D_FMT:
 | 
			
		||||
		ret = (char *) __get_current_time_locale()->x_fmt;
 | 
			
		||||
		break;
 | 
			
		||||
	case T_FMT:
 | 
			
		||||
		ret = (char *) __get_current_time_locale()->X_fmt;
 | 
			
		||||
		break;
 | 
			
		||||
	case T_FMT_AMPM:
 | 
			
		||||
		ret = (char *) __get_current_time_locale()->ampm_fmt;
 | 
			
		||||
		break;
 | 
			
		||||
	case AM_STR:
 | 
			
		||||
		ret = (char *) __get_current_time_locale()->am;
 | 
			
		||||
		break;
 | 
			
		||||
	case PM_STR:
 | 
			
		||||
		ret = (char *) __get_current_time_locale()->pm;
 | 
			
		||||
		break;
 | 
			
		||||
	case DAY_1: case DAY_2: case DAY_3:
 | 
			
		||||
	case DAY_4: case DAY_5: case DAY_6: case DAY_7:
 | 
			
		||||
		ret = (char*) __get_current_time_locale()->weekday[_REL(DAY_1)];
 | 
			
		||||
		break;
 | 
			
		||||
	case ABDAY_1: case ABDAY_2: case ABDAY_3:
 | 
			
		||||
	case ABDAY_4: case ABDAY_5: case ABDAY_6: case ABDAY_7:
 | 
			
		||||
		ret = (char*) __get_current_time_locale()->wday[_REL(ABDAY_1)];
 | 
			
		||||
		break;
 | 
			
		||||
	case MON_1: case MON_2: case MON_3: case MON_4:
 | 
			
		||||
	case MON_5: case MON_6: case MON_7: case MON_8:
 | 
			
		||||
	case MON_9: case MON_10: case MON_11: case MON_12:
 | 
			
		||||
		ret = (char*) __get_current_time_locale()->month[_REL(MON_1)];
 | 
			
		||||
		break;
 | 
			
		||||
	case ABMON_1: case ABMON_2: case ABMON_3: case ABMON_4:
 | 
			
		||||
	case ABMON_5: case ABMON_6: case ABMON_7: case ABMON_8:
 | 
			
		||||
	case ABMON_9: case ABMON_10: case ABMON_11: case ABMON_12:
 | 
			
		||||
		ret = (char*) __get_current_time_locale()->mon[_REL(ABMON_1)];
 | 
			
		||||
		break;
 | 
			
		||||
	case ERA:
 | 
			
		||||
		/* XXX: need to be implemented  */
 | 
			
		||||
		ret = "";
 | 
			
		||||
		break;
 | 
			
		||||
	case ERA_D_FMT:
 | 
			
		||||
		/* XXX: need to be implemented  */
 | 
			
		||||
		ret = "";
 | 
			
		||||
		break;
 | 
			
		||||
	case ERA_D_T_FMT:
 | 
			
		||||
		/* XXX: need to be implemented  */
 | 
			
		||||
		ret = "";
 | 
			
		||||
		break;
 | 
			
		||||
	case ERA_T_FMT:
 | 
			
		||||
		/* XXX: need to be implemented  */
 | 
			
		||||
		ret = "";
 | 
			
		||||
		break;
 | 
			
		||||
	case ALT_DIGITS:
 | 
			
		||||
		/* XXX: need to be implemented  */
 | 
			
		||||
		ret = "";
 | 
			
		||||
		break;
 | 
			
		||||
	case RADIXCHAR:
 | 
			
		||||
		ret = (char*) __get_current_numeric_locale()->decimal_point;
 | 
			
		||||
		break;
 | 
			
		||||
	case THOUSEP:
 | 
			
		||||
		ret = (char*) __get_current_numeric_locale()->thousands_sep;
 | 
			
		||||
		break;
 | 
			
		||||
	case YESEXPR:
 | 
			
		||||
		ret = (char*) __get_current_messages_locale()->yesexpr;
 | 
			
		||||
		break;
 | 
			
		||||
	case NOEXPR:
 | 
			
		||||
		ret = (char*) __get_current_messages_locale()->noexpr;
 | 
			
		||||
		break;
 | 
			
		||||
	/*
 | 
			
		||||
	 * All items marked with LEGACY are available, but not recomended
 | 
			
		||||
	 * by SUSv2 to be used in portable applications since they're subject
 | 
			
		||||
	 * to remove in future specification editions
 | 
			
		||||
	 */
 | 
			
		||||
	case YESSTR:            /* LEGACY  */
 | 
			
		||||
		ret = (char*) __get_current_messages_locale()->yesstr;
 | 
			
		||||
		break;
 | 
			
		||||
	case NOSTR:             /* LEGACY  */
 | 
			
		||||
		ret = (char*) __get_current_messages_locale()->nostr;
 | 
			
		||||
		break;
 | 
			
		||||
	case CRNCYSTR:
 | 
			
		||||
		ret = "";
 | 
			
		||||
		cs = (char*) __get_current_monetary_locale()->currency_symbol;
 | 
			
		||||
		if (*cs != '\0') {
 | 
			
		||||
			char pos = localeconv()->p_cs_precedes;
 | 
			
		||||
 | 
			
		||||
			if (pos == localeconv()->n_cs_precedes) {
 | 
			
		||||
				char psn = '\0';
 | 
			
		||||
 | 
			
		||||
				if (pos == CHAR_MAX) {
 | 
			
		||||
					if (strcmp(cs, __get_current_monetary_locale()->mon_decimal_point) == 0)
 | 
			
		||||
						psn = '.';
 | 
			
		||||
				} else
 | 
			
		||||
					psn = pos ? '-' : '+';
 | 
			
		||||
				if (psn != '\0') {
 | 
			
		||||
					int clen = strlen(cs);
 | 
			
		||||
 | 
			
		||||
                                        nptr = realloc(csym, clen + 2);
 | 
			
		||||
                                        if (!nptr && csym)
 | 
			
		||||
                                          free (csym);
 | 
			
		||||
 | 
			
		||||
                                        csym = nptr;
 | 
			
		||||
 | 
			
		||||
					if (csym != NULL) {
 | 
			
		||||
						*csym = psn;
 | 
			
		||||
						strcpy(csym + 1, cs);
 | 
			
		||||
						ret = csym;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		break;
 | 
			
		||||
	case D_MD_ORDER:        /* local extension */
 | 
			
		||||
		ret = (char *) __get_current_time_locale()->md_order;
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
		ret = "";
 | 
			
		||||
   }
 | 
			
		||||
   return (ret);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
/*-
 | 
			
		||||
 * Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia.
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 *
 | 
			
		||||
 * $FreeBSD: src/lib/libc/locale/setlocale.h,v 1.4 2001/12/20 18:28:52 phantom Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _SETLOCALE_H_
 | 
			
		||||
#define	_SETLOCALE_H_
 | 
			
		||||
 | 
			
		||||
#define ENCODING_LEN 31
 | 
			
		||||
#define CATEGORY_LEN 11
 | 
			
		||||
 | 
			
		||||
extern char *_PathLocale;
 | 
			
		||||
 | 
			
		||||
#endif /* !_SETLOCALE_H_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,119 @@
 | 
			
		|||
/*-
 | 
			
		||||
 * Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org>
 | 
			
		||||
 * Copyright (c) 1997 FreeBSD Inc.
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <sys/cdefs.h>
 | 
			
		||||
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
#include "ldpart.h"
 | 
			
		||||
#include "timelocal.h"
 | 
			
		||||
 | 
			
		||||
static struct lc_time_T _time_locale;
 | 
			
		||||
static int _time_using_locale;
 | 
			
		||||
static char *time_locale_buf;
 | 
			
		||||
 | 
			
		||||
#define LCTIME_SIZE (sizeof(struct lc_time_T) / sizeof(char *))
 | 
			
		||||
 | 
			
		||||
static const struct lc_time_T	_C_time_locale = {
 | 
			
		||||
	{
 | 
			
		||||
		"Jan", "Feb", "Mar", "Apr", "May", "Jun",
 | 
			
		||||
		"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
 | 
			
		||||
	}, {
 | 
			
		||||
		"January", "February", "March", "April", "May", "June",
 | 
			
		||||
		"July", "August", "September", "October", "November", "December"
 | 
			
		||||
	}, {
 | 
			
		||||
		"Sun", "Mon", "Tue", "Wed",
 | 
			
		||||
		"Thu", "Fri", "Sat"
 | 
			
		||||
	}, {
 | 
			
		||||
		"Sunday", "Monday", "Tuesday", "Wednesday",
 | 
			
		||||
		"Thursday", "Friday", "Saturday"
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	/* X_fmt */
 | 
			
		||||
	"%H:%M:%S",
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * x_fmt
 | 
			
		||||
	 * Since the C language standard calls for
 | 
			
		||||
	 * "date, using locale's date format," anything goes.
 | 
			
		||||
	 * Using just numbers (as here) makes Quakers happier;
 | 
			
		||||
	 * it's also compatible with SVR4.
 | 
			
		||||
	 */
 | 
			
		||||
	"%m/%d/%y",
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * c_fmt
 | 
			
		||||
	 */
 | 
			
		||||
	"%a %b %e %H:%M:%S %Y",
 | 
			
		||||
 | 
			
		||||
	/* am */
 | 
			
		||||
	"AM",
 | 
			
		||||
 | 
			
		||||
	/* pm */
 | 
			
		||||
	"PM",
 | 
			
		||||
 | 
			
		||||
	/* date_fmt */
 | 
			
		||||
	"%a %b %e %H:%M:%S %Z %Y",
 | 
			
		||||
	
 | 
			
		||||
	/* alt_month
 | 
			
		||||
	 * Standalone months forms for %OB
 | 
			
		||||
	 */
 | 
			
		||||
	{
 | 
			
		||||
		"January", "February", "March", "April", "May", "June",
 | 
			
		||||
		"July", "August", "September", "October", "November", "December"
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	/* md_order
 | 
			
		||||
	 * Month / day order in dates
 | 
			
		||||
	 */
 | 
			
		||||
	"md",
 | 
			
		||||
 | 
			
		||||
	/* ampm_fmt
 | 
			
		||||
	 * To determine 12-hour clock format time (empty, if N/A)
 | 
			
		||||
	 */
 | 
			
		||||
	"%I:%M:%S %p"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct lc_time_T *
 | 
			
		||||
__get_current_time_locale(void) {
 | 
			
		||||
	return (_time_using_locale
 | 
			
		||||
		? &_time_locale
 | 
			
		||||
		: (struct lc_time_T *)&_C_time_locale);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
__time_load_locale(const char *name) {
 | 
			
		||||
 | 
			
		||||
	int	ret;
 | 
			
		||||
 | 
			
		||||
	ret = __part_load_locale(name, &_time_using_locale,
 | 
			
		||||
			time_locale_buf, "LC_TIME",
 | 
			
		||||
			LCTIME_SIZE, LCTIME_SIZE,
 | 
			
		||||
			(const char **)&_time_locale);
 | 
			
		||||
 | 
			
		||||
	return (ret);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,55 @@
 | 
			
		|||
/*-
 | 
			
		||||
 * Copyright (c) 1997-2002 FreeBSD Project.
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 *
 | 
			
		||||
 * $FreeBSD: src/lib/libc/stdtime/timelocal.h,v 1.11 2002/01/24 15:07:44 phantom Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _TIMELOCAL_H_
 | 
			
		||||
#define	_TIMELOCAL_H_
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Private header file for the strftime and strptime localization
 | 
			
		||||
 * stuff.
 | 
			
		||||
 */
 | 
			
		||||
struct lc_time_T {
 | 
			
		||||
	const char	*mon[12];
 | 
			
		||||
	const char	*month[12];
 | 
			
		||||
	const char	*wday[7];
 | 
			
		||||
	const char	*weekday[7];
 | 
			
		||||
	const char	*X_fmt;
 | 
			
		||||
	const char	*x_fmt;
 | 
			
		||||
	const char	*c_fmt;
 | 
			
		||||
	const char	*am;
 | 
			
		||||
	const char	*pm;
 | 
			
		||||
	const char	*date_fmt;
 | 
			
		||||
	const char	*alt_month[12];
 | 
			
		||||
	const char	*md_order;
 | 
			
		||||
	const char	*ampm_fmt;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct lc_time_T *__get_current_time_locale(void);
 | 
			
		||||
int	__time_load_locale(const char *);
 | 
			
		||||
 | 
			
		||||
#endif /* !_TIMELOCAL_H_ */
 | 
			
		||||
| 
						 | 
				
			
			@ -166,6 +166,7 @@ static char *rcsid = "$Id$";
 | 
			
		|||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <reent.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#ifdef __ALTIVEC__
 | 
			
		||||
#include <altivec.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -388,7 +389,7 @@ _DEFUN (_VFPRINTF_R, (data, fp, fmt0, ap),
 | 
			
		|||
	int vec_print_count;    /* number of vector chunks remaining */
 | 
			
		||||
	vec_16_byte_union vec_tmp;
 | 
			
		||||
#endif /* __ALTIVEC__ */ 
 | 
			
		||||
        int state;              /* mbtowc calls from library must not change state */
 | 
			
		||||
        mbstate_t state;          /* mbtowc calls from library must not change state */
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Choose PADSIZE to trade efficiency vs. size.  If larger printf
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,6 +107,7 @@ Supporting OS subroutines required:
 | 
			
		|||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#ifdef _HAVE_STDC
 | 
			
		||||
#include <stdarg.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -278,7 +279,7 @@ __svfscanf_r (rptr, fp, fmt0, ap)
 | 
			
		|||
  vec_union vec_buf;
 | 
			
		||||
  char *lptr;                   /* literal pointer */
 | 
			
		||||
#ifdef MB_CAPABLE
 | 
			
		||||
  int state;                    /* value to keep track of multibyte state */
 | 
			
		||||
  mbstate_t state;                /* value to keep track of multibyte state */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  char *ch_dest;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
 | 
			
		||||
# Makefile.in generated automatically by automake 1.4 from Makefile.am
 | 
			
		||||
 | 
			
		||||
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
 | 
			
		||||
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
 | 
			
		||||
# This Makefile.in is free software; the Free Software Foundation
 | 
			
		||||
# gives unlimited permission to copy and/or distribute it,
 | 
			
		||||
# with or without modifications, as long as this notice is preserved.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -109,21 +109,24 @@ __getdelim (bufptr, n, delim, fp)
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      /* Buffer is too small so reallocate a larger buffer.  */
 | 
			
		||||
      pos = ptr - buf;
 | 
			
		||||
      newsize = (*n << 1);
 | 
			
		||||
      buf = realloc (buf, newsize);
 | 
			
		||||
      if (buf == NULL)
 | 
			
		||||
      if (cont)
 | 
			
		||||
        {
 | 
			
		||||
          cont = 0;
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
          /* Buffer is too small so reallocate a larger buffer.  */
 | 
			
		||||
          pos = ptr - buf;
 | 
			
		||||
          newsize = (*n << 1);
 | 
			
		||||
          buf = realloc (buf, newsize);
 | 
			
		||||
          if (buf == NULL)
 | 
			
		||||
            {
 | 
			
		||||
              cont = 0;
 | 
			
		||||
              break;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
      /* After reallocating, continue in new buffer */          
 | 
			
		||||
      *bufptr = buf;
 | 
			
		||||
      *n = newsize;
 | 
			
		||||
      ptr = buf + pos;
 | 
			
		||||
      numbytes = newsize - pos;
 | 
			
		||||
          /* After reallocating, continue in new buffer */          
 | 
			
		||||
          *bufptr = buf;
 | 
			
		||||
          *n = newsize;
 | 
			
		||||
          ptr = buf + pos;
 | 
			
		||||
          numbytes = newsize - pos;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  _funlockfile (fp);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -184,6 +184,8 @@ static char *rcsid = "$Id$";
 | 
			
		|||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <reent.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#ifdef _HAVE_STDC
 | 
			
		||||
#include <stdarg.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -426,7 +428,7 @@ _DEFUN (_VFPRINTF_R, (data, fp, fmt0, ap),
 | 
			
		|||
	struct __siov iov[NIOV];/* ... and individual io vectors */
 | 
			
		||||
	char buf[BUF];		/* space for %c, %[diouxX], %[eEfgG] */
 | 
			
		||||
	char ox[2];		/* space for 0x hex-prefix */
 | 
			
		||||
        int state = 0;          /* mbtowc calls from library must not change state */
 | 
			
		||||
        mbstate_t state;          /* mbtowc calls from library must not change state */
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Choose PADSIZE to trade efficiency vs. size.  If larger printf
 | 
			
		||||
| 
						 | 
				
			
			@ -439,6 +441,7 @@ _DEFUN (_VFPRINTF_R, (data, fp, fmt0, ap),
 | 
			
		|||
	static _CONST char zeroes[PADSIZE] =
 | 
			
		||||
	 {'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'};
 | 
			
		||||
 | 
			
		||||
        memset (&state, '\0', sizeof (state));
 | 
			
		||||
	/*
 | 
			
		||||
	 * BEWARE, these `goto error' on error, and PAD uses `n'.
 | 
			
		||||
	 */
 | 
			
		||||
| 
						 | 
				
			
			@ -1367,7 +1370,7 @@ get_arg (int n, char *fmt, va_list *ap, int *numargs_p, union arg_val *args,
 | 
			
		|||
  STATE state, next_state;
 | 
			
		||||
  ACTION action;
 | 
			
		||||
  int pos, last_arg;
 | 
			
		||||
  int wc_state = 0;
 | 
			
		||||
  mbstate_t wc_state;
 | 
			
		||||
  int max_pos_arg = n;
 | 
			
		||||
  enum types { INT, LONG_INT, SHORT_INT, QUAD_INT, CHAR, CHAR_PTR, DOUBLE, LONG_DOUBLE };
 | 
			
		||||
  
 | 
			
		||||
| 
						 | 
				
			
			@ -1375,6 +1378,8 @@ get_arg (int n, char *fmt, va_list *ap, int *numargs_p, union arg_val *args,
 | 
			
		|||
  if (*last_fmt != NULL)
 | 
			
		||||
    fmt = *last_fmt;
 | 
			
		||||
 | 
			
		||||
  memset (&wc_state, '\0', sizeof (wc_state));
 | 
			
		||||
 | 
			
		||||
  /* we need to process either to end of fmt string or until we have actually
 | 
			
		||||
     read the desired parameter from the vararg list. */
 | 
			
		||||
  while (*fmt && n >= numargs)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,6 +107,8 @@ Supporting OS subroutines required:
 | 
			
		|||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#ifdef _HAVE_STDC
 | 
			
		||||
#include <stdarg.h>
 | 
			
		||||
#else
 | 
			
		||||
| 
						 | 
				
			
			@ -257,7 +259,7 @@ __svfscanf_r (rptr, fp, fmt0, ap)
 | 
			
		|||
  char buf[BUF];		/* buffer for numeric conversions */
 | 
			
		||||
  char *lptr;                   /* literal pointer */
 | 
			
		||||
#ifdef MB_CAPABLE
 | 
			
		||||
  int state = 0;                /* value to keep track of multibyte state */
 | 
			
		||||
  mbstate_t state;                /* value to keep track of multibyte state */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  short *sp;
 | 
			
		||||
| 
						 | 
				
			
			@ -283,6 +285,7 @@ __svfscanf_r (rptr, fp, fmt0, ap)
 | 
			
		|||
#ifndef MB_CAPABLE
 | 
			
		||||
      wc = *fmt;
 | 
			
		||||
#else
 | 
			
		||||
      memset (&state, '\0', sizeof (state));
 | 
			
		||||
      nbytes = _mbtowc_r (rptr, &wc, fmt, MB_CUR_MAX, &state);
 | 
			
		||||
#endif
 | 
			
		||||
      fmt += nbytes;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
 | 
			
		||||
# Makefile.in generated automatically by automake 1.4 from Makefile.am
 | 
			
		||||
 | 
			
		||||
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
 | 
			
		||||
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
 | 
			
		||||
# This Makefile.in is free software; the Free Software Foundation
 | 
			
		||||
# gives unlimited permission to copy and/or distribute it,
 | 
			
		||||
# with or without modifications, as long as this notice is preserved.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -79,7 +79,15 @@ LIB_SOURCES = \
 | 
			
		|||
	wcstombs.c	\
 | 
			
		||||
	wcstombs_r.c	\
 | 
			
		||||
	wctomb.c	\
 | 
			
		||||
	wctomb_r.c
 | 
			
		||||
	wctomb_r.c	\
 | 
			
		||||
	btowc.c		\
 | 
			
		||||
	mbrlen.c	\
 | 
			
		||||
	mbrtowc.c	\
 | 
			
		||||
	mbsinit.c	\
 | 
			
		||||
	mbsrtowcs.c	\
 | 
			
		||||
	wcrtomb.c	\
 | 
			
		||||
	wcsrtombs.c	\
 | 
			
		||||
	wctob.c
 | 
			
		||||
 | 
			
		||||
# Because of how libtool moves objects around, mallocr must be built last.
 | 
			
		||||
LIBADD_OBJS = freer.$(oext) reallocr.$(oext) callocr.$(oext) cfreer.$(oext) malignr.$(oext) \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -185,7 +185,15 @@ LIB_SOURCES = \
 | 
			
		|||
	wcstombs.c	\
 | 
			
		||||
	wcstombs_r.c	\
 | 
			
		||||
	wctomb.c	\
 | 
			
		||||
	wctomb_r.c
 | 
			
		||||
	wctomb_r.c	\
 | 
			
		||||
	btowc.c		\
 | 
			
		||||
	mbrlen.c	\
 | 
			
		||||
	mbrtowc.c	\
 | 
			
		||||
	mbsinit.c	\
 | 
			
		||||
	mbsrtowcs.c	\
 | 
			
		||||
	wcrtomb.c	\
 | 
			
		||||
	wcsrtombs.c	\
 | 
			
		||||
	wctob.c
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Because of how libtool moves objects around, mallocr must be built last.
 | 
			
		||||
| 
						 | 
				
			
			@ -294,7 +302,10 @@ LIBS = @LIBS@
 | 
			
		|||
@USE_LIBTOOL_FALSE@strtoull_r.$(OBJEXT) system.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@valloc.$(OBJEXT) wcstombs.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@wcstombs_r.$(OBJEXT) wctomb.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@wctomb_r.$(OBJEXT)
 | 
			
		||||
@USE_LIBTOOL_FALSE@wctomb_r.$(OBJEXT) btowc.$(OBJEXT) mbrlen.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@mbrtowc.$(OBJEXT) mbsinit.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@mbsrtowcs.$(OBJEXT) wcrtomb.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@wcsrtombs.$(OBJEXT) wctob.$(OBJEXT)
 | 
			
		||||
LTLIBRARIES =  $(noinst_LTLIBRARIES)
 | 
			
		||||
 | 
			
		||||
@USE_LIBTOOL_TRUE@libstdlib_la_DEPENDENCIES =  freer.$(oext) \
 | 
			
		||||
| 
						 | 
				
			
			@ -318,7 +329,8 @@ LTLIBRARIES =  $(noinst_LTLIBRARIES)
 | 
			
		|||
@USE_LIBTOOL_TRUE@strtod.lo strtol.lo strtoll.lo strtoll_r.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@strtoul.lo strtoull.lo strtoull_r.lo system.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@valloc.lo wcstombs.lo wcstombs_r.lo wctomb.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@wctomb_r.lo
 | 
			
		||||
@USE_LIBTOOL_TRUE@wctomb_r.lo btowc.lo mbrlen.lo mbrtowc.lo mbsinit.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@mbsrtowcs.lo wcrtomb.lo wcsrtombs.lo wctob.lo
 | 
			
		||||
CFLAGS = @CFLAGS@
 | 
			
		||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 | 
			
		||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
#include <wchar.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <reent.h>
 | 
			
		||||
 | 
			
		||||
wint_t
 | 
			
		||||
btowc (int c)
 | 
			
		||||
{
 | 
			
		||||
  mbstate_t mbs;
 | 
			
		||||
  int retval = 0;
 | 
			
		||||
  wchar_t pwc;
 | 
			
		||||
  unsigned char b;
 | 
			
		||||
 | 
			
		||||
  b = (unsigned char)c;
 | 
			
		||||
 | 
			
		||||
  /* Put mbs in initial state. */
 | 
			
		||||
  memset (&mbs, '\0', sizeof (mbs));
 | 
			
		||||
 | 
			
		||||
  _REENT_CHECK_MISC(_REENT);
 | 
			
		||||
 | 
			
		||||
  retval = _mbtowc_r (_REENT, &pwc, &b, 1, &mbs);
 | 
			
		||||
 | 
			
		||||
  if (c == EOF || retval != 1)
 | 
			
		||||
    return WEOF;
 | 
			
		||||
  else
 | 
			
		||||
    return (wint_t)pwc;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -44,6 +44,7 @@ effects vary with the locale.
 | 
			
		|||
#ifndef _REENT_ONLY
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
_DEFUN (mblen, (s, n), 
 | 
			
		||||
| 
						 | 
				
			
			@ -51,9 +52,15 @@ _DEFUN (mblen, (s, n),
 | 
			
		|||
        size_t n)
 | 
			
		||||
{
 | 
			
		||||
#ifdef MB_CAPABLE
 | 
			
		||||
        int retval = 0;
 | 
			
		||||
        _REENT_CHECK_MISC(_REENT);
 | 
			
		||||
 | 
			
		||||
        return _mbtowc_r (_REENT, NULL, s, n, &(_REENT_MBLEN_STATE(_REENT)));
 | 
			
		||||
        retval = _mbtowc_r (_REENT, NULL, s, n, &(_REENT_MBLEN_STATE(_REENT)));
 | 
			
		||||
        if (retval < 0)
 | 
			
		||||
          return -1;
 | 
			
		||||
        else
 | 
			
		||||
          return retval;
 | 
			
		||||
 | 
			
		||||
#else /* not MB_CAPABLE */
 | 
			
		||||
        if (s == NULL || *s == '\0')
 | 
			
		||||
                return 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,13 +44,14 @@ effects vary with the locale.
 | 
			
		|||
*/
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
_DEFUN (_mblen_r, (r, s, n, state), 
 | 
			
		||||
        struct _reent *r    _AND
 | 
			
		||||
        const char *s _AND
 | 
			
		||||
        size_t n _AND
 | 
			
		||||
        int *state)
 | 
			
		||||
        mbstate_t *state)
 | 
			
		||||
{
 | 
			
		||||
#ifdef MB_CAPABLE
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
#include <wchar.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <reent.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
 | 
			
		||||
size_t
 | 
			
		||||
mbrlen(const char *s, size_t n, mbstate_t *ps)
 | 
			
		||||
{
 | 
			
		||||
  mbstate_t internal;
 | 
			
		||||
 | 
			
		||||
  return mbrtowc(NULL, s, n, ps != NULL ? ps : &internal);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
#include <wchar.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <reent.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
size_t
 | 
			
		||||
mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
 | 
			
		||||
{
 | 
			
		||||
  int retval = 0;
 | 
			
		||||
  _REENT_CHECK_MISC(_REENT);
 | 
			
		||||
 | 
			
		||||
  if (s == NULL)
 | 
			
		||||
    retval = _mbtowc_r (_REENT, pwc, "", 1, ps);
 | 
			
		||||
  else
 | 
			
		||||
    retval = _mbtowc_r (_REENT, pwc, s, n, ps);
 | 
			
		||||
 | 
			
		||||
  if (*pwc == NULL)
 | 
			
		||||
    memset (ps, '\0', sizeof (mbstate_t));
 | 
			
		||||
 | 
			
		||||
  if (retval == -1)
 | 
			
		||||
    {
 | 
			
		||||
      _REENT->_errno = EILSEQ;
 | 
			
		||||
      return (size_t)(-1);
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    return (size_t)retval;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
#include <wchar.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <reent.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
mbsinit(const mbstate_t *ps)
 | 
			
		||||
{
 | 
			
		||||
  if (ps == NULL || ps->__count == 0)
 | 
			
		||||
    return 1;
 | 
			
		||||
  else
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
#include <wchar.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <reent.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
 | 
			
		||||
size_t
 | 
			
		||||
mbsrtowcs(wchar_t *dst, const char **src, size_t len, mbstate_t *ps)
 | 
			
		||||
{
 | 
			
		||||
  int retval = 0;
 | 
			
		||||
  mbstate_t internal;
 | 
			
		||||
 | 
			
		||||
  _REENT_CHECK_MISC(_REENT);
 | 
			
		||||
 | 
			
		||||
  retval = _mbstowcs_r (_REENT, dst, *src, len, ps != NULL ? ps : &internal);
 | 
			
		||||
 | 
			
		||||
  if (retval == -1)
 | 
			
		||||
    {
 | 
			
		||||
      _REENT->_errno = EILSEQ;
 | 
			
		||||
      return (size_t)(-1);
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    return (size_t)retval;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -50,6 +50,7 @@ effects vary with the locale.
 | 
			
		|||
#ifndef _REENT_ONLY
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
 | 
			
		||||
size_t
 | 
			
		||||
_DEFUN (mbstowcs, (pwcs, s, n),
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +59,8 @@ _DEFUN (mbstowcs, (pwcs, s, n),
 | 
			
		|||
        size_t n)
 | 
			
		||||
{
 | 
			
		||||
#ifdef MB_CAPABLE
 | 
			
		||||
        int state = 0;
 | 
			
		||||
        mbstate_t state;
 | 
			
		||||
        state.__count = 0;
 | 
			
		||||
 | 
			
		||||
        return _mbstowcs_r (_REENT, pwcs, s, n, &state);
 | 
			
		||||
#else /* not MB_CAPABLE */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
#include <stdlib.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
 | 
			
		||||
size_t
 | 
			
		||||
_DEFUN (_mbstowcs_r, (reent, pwcs, s, n, state),
 | 
			
		||||
| 
						 | 
				
			
			@ -6,7 +7,7 @@ _DEFUN (_mbstowcs_r, (reent, pwcs, s, n, state),
 | 
			
		|||
        wchar_t       *pwcs _AND
 | 
			
		||||
        const char    *s    _AND
 | 
			
		||||
        size_t         n    _AND
 | 
			
		||||
        int           *state)
 | 
			
		||||
        mbstate_t     *state)
 | 
			
		||||
{
 | 
			
		||||
  wchar_t *ptr = pwcs;
 | 
			
		||||
  size_t max = n;
 | 
			
		||||
| 
						 | 
				
			
			@ -16,7 +17,7 @@ _DEFUN (_mbstowcs_r, (reent, pwcs, s, n, state),
 | 
			
		|||
  while (n > 0)
 | 
			
		||||
    {
 | 
			
		||||
      bytes = _mbtowc_r (r, ptr, t, MB_CUR_MAX, state);
 | 
			
		||||
      if (bytes == -1)
 | 
			
		||||
      if (bytes < 0)
 | 
			
		||||
        return -1;
 | 
			
		||||
      else if (bytes == 0)
 | 
			
		||||
        return ptr - pwcs;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,9 +60,15 @@ _DEFUN (mbtowc, (pwc, s, n),
 | 
			
		|||
        size_t n)
 | 
			
		||||
{
 | 
			
		||||
#ifdef MB_CAPABLE
 | 
			
		||||
        int retval = 0;
 | 
			
		||||
        _REENT_CHECK_MISC(_REENT);
 | 
			
		||||
 | 
			
		||||
        return _mbtowc_r (_REENT, pwc, s, n, &(_REENT_MBTOWC_STATE(_REENT)));
 | 
			
		||||
        retval = _mbtowc_r (_REENT, pwc, s, n, &(_REENT_MBTOWC_STATE(_REENT)));
 | 
			
		||||
 | 
			
		||||
        if (retval < 0)
 | 
			
		||||
          return -1;
 | 
			
		||||
        else
 | 
			
		||||
          return retval;
 | 
			
		||||
#else /* not MB_CAPABLE */
 | 
			
		||||
        if (s == NULL)
 | 
			
		||||
                return 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,8 @@
 | 
			
		|||
#include <stdlib.h>
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include "mbctype.h"
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#ifdef MB_CAPABLE
 | 
			
		||||
typedef enum { ESCAPE, DOLLAR, BRACKET, AT, B, J, 
 | 
			
		||||
| 
						 | 
				
			
			@ -51,7 +53,7 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
 | 
			
		|||
        wchar_t       *pwc _AND 
 | 
			
		||||
        const char    *s   _AND        
 | 
			
		||||
        size_t         n   _AND
 | 
			
		||||
        int           *state)
 | 
			
		||||
        mbstate_t      *state)
 | 
			
		||||
{
 | 
			
		||||
  wchar_t dummy;
 | 
			
		||||
  unsigned char *t = (unsigned char *)s;
 | 
			
		||||
| 
						 | 
				
			
			@ -60,13 +62,13 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
 | 
			
		|||
    pwc = &dummy;
 | 
			
		||||
 | 
			
		||||
  if (s != NULL && n == 0)
 | 
			
		||||
    return -1;
 | 
			
		||||
    return -2;
 | 
			
		||||
 | 
			
		||||
#ifdef MB_CAPABLE
 | 
			
		||||
  if (r->_current_locale == NULL ||
 | 
			
		||||
      (strlen (r->_current_locale) <= 1))
 | 
			
		||||
    { /* fall-through */ }
 | 
			
		||||
  else if (!strcmp (r->_current_locale, "UTF-8"))
 | 
			
		||||
  else if (!strcmp (r->_current_locale, "C-UTF-8"))
 | 
			
		||||
    {
 | 
			
		||||
      wchar_t char1 = 0;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -139,7 +141,7 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
 | 
			
		|||
                return 3;
 | 
			
		||||
            }
 | 
			
		||||
          else
 | 
			
		||||
            return -1;
 | 
			
		||||
            return -2;
 | 
			
		||||
        }
 | 
			
		||||
      else if (char1 >= 0xf0 && char1 <= 0xf7)
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -172,7 +174,7 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
 | 
			
		|||
              return 4;
 | 
			
		||||
            }
 | 
			
		||||
          else
 | 
			
		||||
            return -1;
 | 
			
		||||
            return -2;
 | 
			
		||||
        }
 | 
			
		||||
      else if (char1 >= 0xf8 && char1 <= 0xfb)
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -208,7 +210,7 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
 | 
			
		|||
              return 5;
 | 
			
		||||
            }
 | 
			
		||||
          else
 | 
			
		||||
            return -1;
 | 
			
		||||
            return -2;
 | 
			
		||||
        }
 | 
			
		||||
      else if (char1 >= 0xfc && char1 <= 0xfd)
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -248,7 +250,7 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
 | 
			
		|||
              return 6;
 | 
			
		||||
            }
 | 
			
		||||
          else
 | 
			
		||||
            return -1;
 | 
			
		||||
            return -2;
 | 
			
		||||
        }
 | 
			
		||||
      else
 | 
			
		||||
        return -1;
 | 
			
		||||
| 
						 | 
				
			
			@ -263,7 +265,7 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
 | 
			
		|||
        {
 | 
			
		||||
          int char2 = t[1];
 | 
			
		||||
          if (n <= 1)
 | 
			
		||||
            return -1;
 | 
			
		||||
            return -2;
 | 
			
		||||
          if (_issjis2 (char2))
 | 
			
		||||
            {
 | 
			
		||||
              *pwc = (((wchar_t)*t) << 8) + (wchar_t)(*(t+1));
 | 
			
		||||
| 
						 | 
				
			
			@ -283,7 +285,7 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
 | 
			
		|||
        {
 | 
			
		||||
          int char2 = t[1];     
 | 
			
		||||
          if (n <= 1)
 | 
			
		||||
            return -1;
 | 
			
		||||
            return -2;
 | 
			
		||||
          if (_iseucjp (char2))
 | 
			
		||||
            {
 | 
			
		||||
              *pwc = (((wchar_t)*t) << 8) + (wchar_t)(*(t+1));
 | 
			
		||||
| 
						 | 
				
			
			@ -303,11 +305,11 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
 | 
			
		|||
 
 | 
			
		||||
      if (s == NULL)
 | 
			
		||||
        {
 | 
			
		||||
          *state = 0;
 | 
			
		||||
          state->__count = 0;
 | 
			
		||||
          return 1;  /* state-dependent */
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      curr_state = (*state == 0 ? ASCII : JIS);
 | 
			
		||||
      curr_state = (state->__count == 0 ? ASCII : JIS);
 | 
			
		||||
      ptr = t;
 | 
			
		||||
 | 
			
		||||
      for (i = 0; i < n; ++i)
 | 
			
		||||
| 
						 | 
				
			
			@ -351,19 +353,19 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
 | 
			
		|||
            case NOOP:
 | 
			
		||||
              break;
 | 
			
		||||
            case EMPTY:
 | 
			
		||||
              *state = 0;
 | 
			
		||||
              state->__count = 0;
 | 
			
		||||
              *pwc = (wchar_t)0;
 | 
			
		||||
              return i;
 | 
			
		||||
            case COPY_A:
 | 
			
		||||
	      *state = 0;
 | 
			
		||||
	      state->__count = 0;
 | 
			
		||||
              *pwc = (wchar_t)*ptr;
 | 
			
		||||
              return (i + 1);
 | 
			
		||||
            case COPY_J:
 | 
			
		||||
              *state = 0;
 | 
			
		||||
              state->__count = 0;
 | 
			
		||||
              *pwc = (((wchar_t)*ptr) << 8) + (wchar_t)(*(ptr+1));
 | 
			
		||||
              return (i + 1);
 | 
			
		||||
            case COPY_J2:
 | 
			
		||||
              *state = 1;
 | 
			
		||||
              state->__count = 1;
 | 
			
		||||
              *pwc = (((wchar_t)*ptr) << 8) + (wchar_t)(*(ptr+1));
 | 
			
		||||
              return (ptr - t) + 2;
 | 
			
		||||
            case MAKE_A:
 | 
			
		||||
| 
						 | 
				
			
			@ -377,7 +379,7 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
 | 
			
		|||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      return -1;  /* n < bytes needed */
 | 
			
		||||
      return -2;  /* n < bytes needed */
 | 
			
		||||
    }
 | 
			
		||||
#endif /* MB_CAPABLE */               
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -392,4 +394,3 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
 | 
			
		|||
 | 
			
		||||
  return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
#include <wchar.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <reent.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
 | 
			
		||||
size_t
 | 
			
		||||
wcrtomb(char *s, wchar_t wc, mbstate_t *ps)
 | 
			
		||||
{
 | 
			
		||||
  int retval = 0;
 | 
			
		||||
  _REENT_CHECK_MISC(_REENT);
 | 
			
		||||
 | 
			
		||||
  if (s == NULL)
 | 
			
		||||
    retval = _wctomb_r (_REENT, "", wc, ps);
 | 
			
		||||
  else
 | 
			
		||||
    retval = _wctomb_r (_REENT, s, wc, ps);
 | 
			
		||||
 | 
			
		||||
  if (retval == -1)
 | 
			
		||||
    {
 | 
			
		||||
      _REENT->_errno = EILSEQ;
 | 
			
		||||
      return (size_t)(-1);
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    return (size_t)retval;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
#include <wchar.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <reent.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
 | 
			
		||||
size_t
 | 
			
		||||
wcsrtombs (char *dst, const wchar_t **src, size_t len, mbstate_t *ps)
 | 
			
		||||
{
 | 
			
		||||
  int retval = 0;
 | 
			
		||||
  _REENT_CHECK_MISC(_REENT);
 | 
			
		||||
 | 
			
		||||
  retval = _wcstombs_r (_REENT, dst, *src, len, ps);
 | 
			
		||||
 | 
			
		||||
  if (retval == -1)
 | 
			
		||||
    {
 | 
			
		||||
      _REENT->_errno = EILSEQ;
 | 
			
		||||
      return (size_t)(-1);
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    return (size_t)retval;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -51,6 +51,7 @@ effects vary with the locale.
 | 
			
		|||
#ifndef _REENT_ONLY
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
 | 
			
		||||
size_t
 | 
			
		||||
_DEFUN (wcstombs, (s, pwcs, n),
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +60,8 @@ _DEFUN (wcstombs, (s, pwcs, n),
 | 
			
		|||
        size_t         n)
 | 
			
		||||
{
 | 
			
		||||
#ifdef MB_CAPABLE
 | 
			
		||||
        int state = 0;
 | 
			
		||||
        mbstate_t state;
 | 
			
		||||
        state.__count = 0;
 | 
			
		||||
 | 
			
		||||
        return _wcstombs_r (_REENT, s, pwcs, n, &state);
 | 
			
		||||
#else /* not MB_CAPABLE */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
#include <stdlib.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
 | 
			
		||||
size_t
 | 
			
		||||
_DEFUN (_wcstombs_r, (reent, s, pwcs, n, state),
 | 
			
		||||
| 
						 | 
				
			
			@ -6,7 +7,7 @@ _DEFUN (_wcstombs_r, (reent, s, pwcs, n, state),
 | 
			
		|||
        char          *s    _AND
 | 
			
		||||
        const wchar_t *pwcs _AND
 | 
			
		||||
        size_t         n    _AND
 | 
			
		||||
        int           *state)
 | 
			
		||||
        mbstate_t     *state)
 | 
			
		||||
{
 | 
			
		||||
  char *ptr = s;
 | 
			
		||||
  size_t max = n;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
#include <wchar.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <reent.h>
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
wctob (wint_t c)
 | 
			
		||||
{
 | 
			
		||||
  mbstate_t mbs;
 | 
			
		||||
  int retval = 0;
 | 
			
		||||
  unsigned char pwc;
 | 
			
		||||
 | 
			
		||||
  /* Put mbs in initial state. */
 | 
			
		||||
  memset (&mbs, '\0', sizeof (mbs));
 | 
			
		||||
 | 
			
		||||
  _REENT_CHECK_MISC(_REENT);
 | 
			
		||||
 | 
			
		||||
  retval = _wctomb_r (_REENT, &pwc, c, &mbs);
 | 
			
		||||
 | 
			
		||||
  if (c == EOF || retval != 1)
 | 
			
		||||
    return WEOF;
 | 
			
		||||
  else
 | 
			
		||||
    return (int)pwc;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
#include <locale.h>
 | 
			
		||||
#include "mbctype.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -8,11 +9,11 @@ _DEFUN (_wctomb_r, (r, s, wchar, state),
 | 
			
		|||
        struct _reent *r     _AND 
 | 
			
		||||
        char          *s     _AND
 | 
			
		||||
        wchar_t        wchar _AND
 | 
			
		||||
        int           *state)
 | 
			
		||||
        mbstate_t     *state)
 | 
			
		||||
{
 | 
			
		||||
  if (strlen (r->_current_locale) <= 1)
 | 
			
		||||
    { /* fall-through */ }
 | 
			
		||||
  else if (!strcmp (r->_current_locale, "UTF-8"))
 | 
			
		||||
  else if (!strcmp (r->_current_locale, "C-UTF-8"))
 | 
			
		||||
    {
 | 
			
		||||
      if (s == NULL)
 | 
			
		||||
        return 0; /* UTF-8 encoding is not state-dependent */
 | 
			
		||||
| 
						 | 
				
			
			@ -125,10 +126,10 @@ _DEFUN (_wctomb_r, (r, s, wchar, state),
 | 
			
		|||
        /* first byte is non-zero..validate multi-byte char */
 | 
			
		||||
          if (_isjis (char1) && _isjis (char2)) 
 | 
			
		||||
            {
 | 
			
		||||
              if (*state == 0)
 | 
			
		||||
              if (state->__count == 0)
 | 
			
		||||
                {
 | 
			
		||||
                  /* must switch from ASCII to JIS state */
 | 
			
		||||
                  *state = 1;
 | 
			
		||||
                  state->__count = 1;
 | 
			
		||||
                  *s++ = ESC_CHAR;
 | 
			
		||||
                  *s++ = '$';
 | 
			
		||||
                  *s++ = 'B';
 | 
			
		||||
| 
						 | 
				
			
			@ -143,10 +144,10 @@ _DEFUN (_wctomb_r, (r, s, wchar, state),
 | 
			
		|||
        }
 | 
			
		||||
      else
 | 
			
		||||
        {
 | 
			
		||||
          if (*state != 0)
 | 
			
		||||
          if (state->__count != 0)
 | 
			
		||||
            {
 | 
			
		||||
              /* must switch from JIS to ASCII state */
 | 
			
		||||
              *state = 0;
 | 
			
		||||
              state->__count = 0;
 | 
			
		||||
              *s++ = ESC_CHAR;
 | 
			
		||||
              *s++ = '(';
 | 
			
		||||
              *s++ = 'B';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
 | 
			
		||||
AUTOMAKE_OPTIONS = cygnus
 | 
			
		||||
 | 
			
		||||
INCLUDES = -I$(srcdir)/include $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
 | 
			
		||||
INCLUDES = -I$(srcdir)/include $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) $(INCLTDL)
 | 
			
		||||
 | 
			
		||||
SUBDIRS = machine \
 | 
			
		||||
	cmath \
 | 
			
		||||
| 
						 | 
				
			
			@ -76,6 +76,8 @@ LIB_SOURCES = \
 | 
			
		|||
	pread.c \
 | 
			
		||||
	pread64.c \
 | 
			
		||||
	process.c \
 | 
			
		||||
	prof-freq.c \
 | 
			
		||||
	profile.c \
 | 
			
		||||
	psignal.c \
 | 
			
		||||
	pvallocr.c \
 | 
			
		||||
	pwrite.c \
 | 
			
		||||
| 
						 | 
				
			
			@ -165,8 +167,19 @@ lib.a:  $(ADD_OBJS) $(lib_a_OBJECTS)
 | 
			
		|||
 | 
			
		||||
endif # USE_LIBTOOL
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
include $(srcdir)/../../../Makefile.shared
 | 
			
		||||
objectlist.awk.in: $(noinst_LTLIBRARIES) $(SUBLIBS)
 | 
			
		||||
	-rm -f objectlist.awk.in
 | 
			
		||||
	for i in `ls *.lo` ; \
 | 
			
		||||
	  do \
 | 
			
		||||
	    echo $$i `pwd`/$$i >> objectlist.awk.in ; \
 | 
			
		||||
	done
 | 
			
		||||
	for j in $(SUBLIBS) ; \
 | 
			
		||||
	  do \
 | 
			
		||||
	    export i=`echo $$j | sed -e 's,\(.*\)\/[^\/]*$$,\1,'`; \
 | 
			
		||||
	    if test $$i != "." && test -f $$i/objectlist.awk.in; then \
 | 
			
		||||
	    	cat $$i/objectlist.awk.in >> objectlist.awk.in ; \
 | 
			
		||||
	    fi; \
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
all: crt0.o crt1.o
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@
 | 
			
		|||
# PARTICULAR PURPOSE.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SHELL = @SHELL@
 | 
			
		||||
 | 
			
		||||
srcdir = @srcdir@
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +96,7 @@ sys_dir = @sys_dir@
 | 
			
		|||
 | 
			
		||||
AUTOMAKE_OPTIONS = cygnus
 | 
			
		||||
 | 
			
		||||
INCLUDES = -I$(srcdir)/include $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
 | 
			
		||||
INCLUDES = -I$(srcdir)/include $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) $(INCLTDL)
 | 
			
		||||
 | 
			
		||||
SUBDIRS = machine \
 | 
			
		||||
	cmath \
 | 
			
		||||
| 
						 | 
				
			
			@ -173,6 +172,8 @@ LIB_SOURCES = \
 | 
			
		|||
	pread.c \
 | 
			
		||||
	pread64.c \
 | 
			
		||||
	process.c \
 | 
			
		||||
	prof-freq.c \
 | 
			
		||||
	profile.c \
 | 
			
		||||
	psignal.c \
 | 
			
		||||
	pvallocr.c \
 | 
			
		||||
	pwrite.c \
 | 
			
		||||
| 
						 | 
				
			
			@ -287,6 +288,7 @@ LIBS = @LIBS@
 | 
			
		|||
@USE_LIBTOOL_FALSE@mstats.$(OBJEXT) mtrim.$(OBJEXT) mtrimr.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@ntp_gettime.$(OBJEXT) pathconf.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@pread.$(OBJEXT) pread64.$(OBJEXT) process.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@prof-freq.$(OBJEXT) profile.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@psignal.$(OBJEXT) pvallocr.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@pwrite.$(OBJEXT) pwrite64.$(OBJEXT) raise.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@readdir64.$(OBJEXT) realloc.$(OBJEXT) \
 | 
			
		||||
| 
						 | 
				
			
			@ -325,10 +327,10 @@ LTLIBRARIES =  $(noinst_LTLIBRARIES)
 | 
			
		|||
@USE_LIBTOOL_TRUE@mq_open.lo mq_receive.lo mq_send.lo mq_setattr.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@mq_unlink.lo msize.lo msizer.lo mstats.lo mtrim.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@mtrimr.lo ntp_gettime.lo pathconf.lo pread.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@pread64.lo process.lo psignal.lo pvallocr.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@pwrite.lo pwrite64.lo raise.lo readdir64.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@realloc.lo reallocr.lo realpath.lo rename.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@resource.lo scandir64.lo sched.lo select.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@pread64.lo process.lo prof-freq.lo profile.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@psignal.lo pvallocr.lo pwrite.lo pwrite64.lo raise.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@readdir64.lo realloc.lo reallocr.lo realpath.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@rename.lo resource.lo scandir64.lo sched.lo select.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@seteuid.lo sethostname.lo setrlimit64.lo shm_open.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@shm_unlink.lo sig.lo sigaction.lo sigqueue.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@signal.lo siglongjmp.lo sigset.lo sigwait.lo \
 | 
			
		||||
| 
						 | 
				
			
			@ -357,7 +359,7 @@ OBJECTS = $(lib_a_OBJECTS) $(liblinux_la_OBJECTS)
 | 
			
		|||
all: all-redirect
 | 
			
		||||
.SUFFIXES:
 | 
			
		||||
.SUFFIXES: .S .c .lo .o .obj .s
 | 
			
		||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) $(srcdir)/../../../Makefile.shared
 | 
			
		||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
 | 
			
		||||
	cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile
 | 
			
		||||
 | 
			
		||||
Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
 | 
			
		||||
| 
						 | 
				
			
			@ -688,11 +690,18 @@ maintainer-clean
 | 
			
		|||
@USE_LIBTOOL_FALSE@	$(RANLIB) $@
 | 
			
		||||
@USE_LIBTOOL_FALSE@	rm -rf tmp
 | 
			
		||||
 | 
			
		||||
objectlist.awk.in: $(noinst_LTLIBRARIES)
 | 
			
		||||
objectlist.awk.in: $(noinst_LTLIBRARIES) $(SUBLIBS)
 | 
			
		||||
	-rm -f objectlist.awk.in
 | 
			
		||||
	for i in `ls *.lo` ; \
 | 
			
		||||
	do \
 | 
			
		||||
	  echo $$i `pwd`/$$i >> objectlist.awk.in ; \
 | 
			
		||||
	  do \
 | 
			
		||||
	    echo $$i `pwd`/$$i >> objectlist.awk.in ; \
 | 
			
		||||
	done
 | 
			
		||||
	for j in $(SUBLIBS) ; \
 | 
			
		||||
	  do \
 | 
			
		||||
	    export i=`echo $$j | sed -e 's,\(.*\)\/[^\/]*$$,\1,'`; \
 | 
			
		||||
	    if test $$i != "." && test -f $$i/objectlist.awk.in; then \
 | 
			
		||||
	    	cat $$i/objectlist.awk.in >> objectlist.awk.in ; \
 | 
			
		||||
	    fi; \
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
all: crt0.o crt1.o
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -200,6 +200,8 @@ extern int32_t __ieee754_rem_pio2 (double,double*);
 | 
			
		|||
extern double __ieee754_scalb (double,double);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* This is necessary because the hardware accelerated version of libm
 | 
			
		||||
   does not provide the __ieee754 functions. */
 | 
			
		||||
#define __ieee754_sinh   sinh
 | 
			
		||||
#define __ieee754_hypot  hypot
 | 
			
		||||
#define __ieee754_hypotf hypotf
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -215,7 +215,7 @@ posix_fpathconf (fd, name)
 | 
			
		|||
	/* AIO is only allowed on regular files and block devices.  */
 | 
			
		||||
	struct stat64 st;
 | 
			
		||||
 | 
			
		||||
	if (__fxstat64 (_STAT_VER, fd, &st) < 0
 | 
			
		||||
	if (fstat64 (fd, &st) < 0
 | 
			
		||||
	    || (! S_ISREG (st.st_mode) && ! S_ISBLK (st.st_mode)))
 | 
			
		||||
	  return -1;
 | 
			
		||||
	else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@ AUTOMAKE_OPTIONS = cygnus
 | 
			
		|||
 | 
			
		||||
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
 | 
			
		||||
 | 
			
		||||
LIB_SOURCES = get_clockfreq.c getpagesize.c hp-timing.c setjmp.S sigaction.c
 | 
			
		||||
LIB_SOURCES = get_clockfreq.c getpagesize.c hp-timing.c setjmp.S sigaction.c dl-procinfo.c
 | 
			
		||||
 | 
			
		||||
liblinuxi386_la_LDFLAGS = -Xcompiler -nostdlib
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -98,7 +98,7 @@ AUTOMAKE_OPTIONS = cygnus
 | 
			
		|||
 | 
			
		||||
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
 | 
			
		||||
 | 
			
		||||
LIB_SOURCES = get_clockfreq.c getpagesize.c hp-timing.c setjmp.S sigaction.c
 | 
			
		||||
LIB_SOURCES = get_clockfreq.c getpagesize.c hp-timing.c setjmp.S sigaction.c dl-procinfo.c
 | 
			
		||||
 | 
			
		||||
liblinuxi386_la_LDFLAGS = -Xcompiler -nostdlib
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -124,12 +124,14 @@ LIBS = @LIBS@
 | 
			
		|||
lib_a_LIBADD = 
 | 
			
		||||
@USE_LIBTOOL_FALSE@lib_a_OBJECTS =  get_clockfreq.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@getpagesize.$(OBJEXT) hp-timing.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@setjmp.$(OBJEXT) sigaction.$(OBJEXT)
 | 
			
		||||
@USE_LIBTOOL_FALSE@setjmp.$(OBJEXT) sigaction.$(OBJEXT) \
 | 
			
		||||
@USE_LIBTOOL_FALSE@dl-procinfo.$(OBJEXT)
 | 
			
		||||
LTLIBRARIES =  $(noinst_LTLIBRARIES)
 | 
			
		||||
 | 
			
		||||
liblinuxi386_la_LIBADD = 
 | 
			
		||||
@USE_LIBTOOL_TRUE@liblinuxi386_la_OBJECTS =  get_clockfreq.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@getpagesize.lo hp-timing.lo setjmp.lo sigaction.lo
 | 
			
		||||
@USE_LIBTOOL_TRUE@getpagesize.lo hp-timing.lo setjmp.lo sigaction.lo \
 | 
			
		||||
@USE_LIBTOOL_TRUE@dl-procinfo.lo
 | 
			
		||||
CFLAGS = @CFLAGS@
 | 
			
		||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 | 
			
		||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,38 @@
 | 
			
		|||
/* Data for Linux/i386 version of processor capability information.
 | 
			
		||||
   Copyright (C) 2001 Free Software Foundation, Inc.
 | 
			
		||||
   This file is part of the GNU C Library.
 | 
			
		||||
   Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001.
 | 
			
		||||
 | 
			
		||||
   The GNU C Library is free software; you can redistribute it and/or
 | 
			
		||||
   modify it under the terms of the GNU Lesser General Public
 | 
			
		||||
   License as published by the Free Software Foundation; either
 | 
			
		||||
   version 2.1 of the License, or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   The GNU C Library is distributed in the hope that it will be useful,
 | 
			
		||||
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
   Lesser General Public License for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU Lesser General Public
 | 
			
		||||
   License along with the GNU C Library; if not, write to the Free
 | 
			
		||||
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 | 
			
		||||
   02111-1307 USA.  */
 | 
			
		||||
 | 
			
		||||
/* This information must be kept in sync with the _DL_HWCAP_COUNT and
 | 
			
		||||
   _DL_PLATFORM_COUNT definitions in procinfo.h.  */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* If anything should be added here check whether the size of each string
 | 
			
		||||
   is still ok with the given array size.  */
 | 
			
		||||
const char _dl_x86_cap_flags[][7] =
 | 
			
		||||
  {
 | 
			
		||||
    "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
 | 
			
		||||
    "cx8", "apic", "10", "sep", "mtrr", "pge", "mca", "cmov",
 | 
			
		||||
    "pat", "pse36", "psn", "19", "20", "21", "22", "mmx",
 | 
			
		||||
    "osfxsr", "xmm", "xmm2", "27", "28", "29", "30", "amd3d"
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
const char _dl_x86_platforms[][5] =
 | 
			
		||||
  {
 | 
			
		||||
    "i386", "i486", "i586", "i686"
 | 
			
		||||
  };
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,132 @@
 | 
			
		|||
/* Linux/i386 version of processor capability information handling macros.
 | 
			
		||||
   Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
 | 
			
		||||
   This file is part of the GNU C Library.
 | 
			
		||||
   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 | 
			
		||||
 | 
			
		||||
   The GNU C Library is free software; you can redistribute it and/or
 | 
			
		||||
   modify it under the terms of the GNU Lesser General Public
 | 
			
		||||
   License as published by the Free Software Foundation; either
 | 
			
		||||
   version 2.1 of the License, or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
   The GNU C Library is distributed in the hope that it will be useful,
 | 
			
		||||
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
   Lesser General Public License for more details.
 | 
			
		||||
 | 
			
		||||
   You should have received a copy of the GNU Lesser General Public
 | 
			
		||||
   License along with the GNU C Library; if not, write to the Free
 | 
			
		||||
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 | 
			
		||||
   02111-1307 USA.  */
 | 
			
		||||
 | 
			
		||||
#ifndef _DL_PROCINFO_H
 | 
			
		||||
#define _DL_PROCINFO_H	1
 | 
			
		||||
 | 
			
		||||
#include <ldsodefs.h>
 | 
			
		||||
 | 
			
		||||
/* If anything should be added here check whether the size of each string
 | 
			
		||||
   is still ok with the given array size.  */
 | 
			
		||||
extern const char _dl_x86_cap_flags[][7];
 | 
			
		||||
#define _DL_HWCAP_COUNT 32
 | 
			
		||||
 | 
			
		||||
extern const char _dl_x86_platforms[][5];
 | 
			
		||||
#define _DL_PLATFORMS_COUNT	4
 | 
			
		||||
 | 
			
		||||
/* Start at 48 to reserve some space.  */
 | 
			
		||||
#define _DL_FIRST_PLATFORM	48
 | 
			
		||||
/* Mask to filter out platforms.  */
 | 
			
		||||
#define _DL_HWCAP_PLATFORM	(7ULL << _DL_FIRST_PLATFORM)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static inline int
 | 
			
		||||
__attribute__ ((unused))
 | 
			
		||||
_dl_procinfo (int word)
 | 
			
		||||
{
 | 
			
		||||
  /* This table should match the information from arch/i386/kernel/setup.c
 | 
			
		||||
     in the kernel sources.  */
 | 
			
		||||
  int i;
 | 
			
		||||
 | 
			
		||||
  _dl_printf ("AT_HWCAP:   ");
 | 
			
		||||
 | 
			
		||||
  for (i = 0; i < _DL_HWCAP_COUNT; ++i)
 | 
			
		||||
    if (word & (1 << i))
 | 
			
		||||
      _dl_printf (" %s", _dl_x86_cap_flags[i]);
 | 
			
		||||
 | 
			
		||||
  _dl_printf ("\n");
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline const char *
 | 
			
		||||
__attribute__ ((unused))
 | 
			
		||||
_dl_hwcap_string (int idx)
 | 
			
		||||
{
 | 
			
		||||
  return _dl_x86_cap_flags[idx];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static inline const char *
 | 
			
		||||
__attribute__ ((unused))
 | 
			
		||||
_dl_platform_string (int idx)
 | 
			
		||||
{
 | 
			
		||||
  return _dl_x86_platforms [idx - _DL_FIRST_PLATFORM];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
  HWCAP_I386_FPU   = 1 << 0,
 | 
			
		||||
  HWCAP_I386_VME   = 1 << 1,
 | 
			
		||||
  HWCAP_I386_DE    = 1 << 2,
 | 
			
		||||
  HWCAP_I386_PSE   = 1 << 3,
 | 
			
		||||
  HWCAP_I386_TSC   = 1 << 4,
 | 
			
		||||
  HWCAP_I386_MSR   = 1 << 5,
 | 
			
		||||
  HWCAP_I386_PAE   = 1 << 6,
 | 
			
		||||
  HWCAP_I386_MCE   = 1 << 7,
 | 
			
		||||
  HWCAP_I386_CX8   = 1 << 8,
 | 
			
		||||
  HWCAP_I386_APIC  = 1 << 9,
 | 
			
		||||
  HWCAP_I386_SEP   = 1 << 11,
 | 
			
		||||
  HWCAP_I386_MTRR  = 1 << 12,
 | 
			
		||||
  HWCAP_I386_PGE   = 1 << 13,
 | 
			
		||||
  HWCAP_I386_MCA   = 1 << 14,
 | 
			
		||||
  HWCAP_I386_CMOV  = 1 << 15,
 | 
			
		||||
  HWCAP_I386_FCMOV = 1 << 16,
 | 
			
		||||
  HWCAP_I386_MMX   = 1 << 23,
 | 
			
		||||
  HWCAP_I386_OSFXSR = 1 << 24,
 | 
			
		||||
  HWCAP_I386_XMM   = 1 << 25,
 | 
			
		||||
  HWCAP_I386_XMM2  = 1 << 26,
 | 
			
		||||
  HWCAP_I386_AMD3D = 1 << 31,
 | 
			
		||||
 | 
			
		||||
  /* XXX Which others to add here?  */
 | 
			
		||||
  HWCAP_IMPORTANT = (HWCAP_I386_MMX)
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static inline int
 | 
			
		||||
__attribute__ ((unused))
 | 
			
		||||
_dl_string_hwcap (const char *str)
 | 
			
		||||
{
 | 
			
		||||
  int i;
 | 
			
		||||
 | 
			
		||||
  for (i = 0; i < _DL_HWCAP_COUNT; i++)
 | 
			
		||||
    {
 | 
			
		||||
      if (strcmp (str, _dl_x86_cap_flags[i]) == 0)
 | 
			
		||||
	return i;
 | 
			
		||||
    }
 | 
			
		||||
  return -1;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static inline int
 | 
			
		||||
__attribute__ ((unused))
 | 
			
		||||
_dl_string_platform (const char *str)
 | 
			
		||||
{
 | 
			
		||||
  int i;
 | 
			
		||||
 | 
			
		||||
  if (str != NULL)
 | 
			
		||||
    for (i = 0; i < _DL_PLATFORMS_COUNT; ++i)
 | 
			
		||||
      {
 | 
			
		||||
	if (strcmp (str, _dl_x86_platforms[i]) == 0)
 | 
			
		||||
	  return _DL_FIRST_PLATFORM + i;
 | 
			
		||||
      }
 | 
			
		||||
  return -1;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif /* dl-procinfo.h */
 | 
			
		||||
| 
						 | 
				
			
			@ -212,7 +212,7 @@ posix_pathconf (const char *path, int name)
 | 
			
		|||
	/* AIO is only allowed on regular files and block devices.  */
 | 
			
		||||
	struct stat64 st;
 | 
			
		||||
 | 
			
		||||
	if (__xstat64 (_STAT_VER, path, &st) < 0
 | 
			
		||||
	if (stat64 (path, &st) < 0
 | 
			
		||||
	    || (! S_ISREG (st.st_mode) && ! S_ISBLK (st.st_mode)))
 | 
			
		||||
	  return -1;
 | 
			
		||||
	else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,54 @@
 | 
			
		|||
/* Return frequency of ticks reported by profil.  Generic version. */
 | 
			
		||||
/*-
 | 
			
		||||
 * Copyright (c) 1983, 1992, 1993
 | 
			
		||||
 *	The Regents of the University of California.  All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions
 | 
			
		||||
 * are met:
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
 *    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
 *    documentation and/or other materials provided with the distribution.
 | 
			
		||||
 * 4. Neither the name of the University nor the names of its contributors
 | 
			
		||||
 *    may be used to endorse or promote products derived from this software
 | 
			
		||||
 *    without specific prior written permission.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#include <libc-internal.h>
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
__profile_frequency (void)
 | 
			
		||||
{
 | 
			
		||||
  /*
 | 
			
		||||
   * Discover the tick frequency of the machine if something goes wrong,
 | 
			
		||||
   * we return 0, an impossible hertz.
 | 
			
		||||
   */
 | 
			
		||||
  struct itimerval tim;
 | 
			
		||||
 | 
			
		||||
  tim.it_interval.tv_sec = 0;
 | 
			
		||||
  tim.it_interval.tv_usec = 1;
 | 
			
		||||
  tim.it_value.tv_sec = 0;
 | 
			
		||||
  tim.it_value.tv_usec = 0;
 | 
			
		||||
  setitimer(ITIMER_REAL, &tim, 0);
 | 
			
		||||
  setitimer(ITIMER_REAL, 0, &tim);
 | 
			
		||||
  if (tim.it_interval.tv_usec < 2)
 | 
			
		||||
    return 0;
 | 
			
		||||
  return (1000000 / tim.it_interval.tv_usec);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
/* libc/sys/linux/profile.c - profiling system call */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <machine/syscall.h>
 | 
			
		||||
 | 
			
		||||
#define __NR_profil 98
 | 
			
		||||
 | 
			
		||||
int  profil(u_short  *buf,  size_t  bufsiz, size_t offset,
 | 
			
		||||
            u_int scale);
 | 
			
		||||
 | 
			
		||||
_syscall4(int,profil,unsigned short *,buf,size_t,bufsiz,size_t,offset,unsigned int, scale)
 | 
			
		||||
| 
						 | 
				
			
			@ -29,5 +29,6 @@ extern __IMPORT int _sys_nerr;
 | 
			
		|||
 | 
			
		||||
#define ENOTSUP EOPNOTSUPP
 | 
			
		||||
#define EFTYPE          79              /* Inappropriate file type or format */
 | 
			
		||||
#define EILSEQ          84
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -149,6 +149,7 @@ typedef __ino64_t ino64_t;
 | 
			
		|||
typedef __uint32_t uintptr_t;
 | 
			
		||||
typedef __int32_t intptr_t;
 | 
			
		||||
typedef __off64_t off64_t;
 | 
			
		||||
typedef __off_t off_t;
 | 
			
		||||
 | 
			
		||||
#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
 | 
			
		||||
typedef	struct _physadr {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -139,13 +139,13 @@ int main()
 | 
			
		|||
    int retval;
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    if (!setlocale(LC_CTYPE, "UTF-8"))
 | 
			
		||||
    if (!setlocale(LC_CTYPE, "C-UTF-8"))
 | 
			
		||||
      {
 | 
			
		||||
        printf("Failed to set UTF-8 locale.\n");
 | 
			
		||||
        printf("Failed to set C-UTF-8 locale.\n");
 | 
			
		||||
        return 1;
 | 
			
		||||
      }
 | 
			
		||||
    else
 | 
			
		||||
      printf("Set UTF-8 locale.\n");
 | 
			
		||||
      printf("Set C-UTF-8 locale.\n");
 | 
			
		||||
 | 
			
		||||
    /* 2  Boundary condition test cases */
 | 
			
		||||
    /* 2.1  First possible sequence of a certain length */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,7 @@
 | 
			
		|||
load_lib checkoutput.exp
 | 
			
		||||
 | 
			
		||||
set expected_output {
 | 
			
		||||
"Set UTF-8 locale."
 | 
			
		||||
"Set C-UTF-8 locale."
 | 
			
		||||
"* U-00000000"
 | 
			
		||||
"* U-00000080"
 | 
			
		||||
"* U-00000800"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue