PERFORCE change 173099 for review
Gabor Kovesdan
gabor at FreeBSD.org
Wed Jan 13 22:16:33 UTC 2010
http://p4web.freebsd.org/chv.cgi?CH=173099
Change 173099 by gabor at gabor_aspire on 2010/01/13 22:14:54
MFHg:
LIBRARY
=====================================================================
- Fix segfault of BIG5 module [1]
- Fix some mapping problems of Big5-family, so these encodings can
be used now
- Some more mapping improvements for other encodings
- GNU: Implement ICONV_HOOKS for iconvctl()
- GNU: Initial implementation of ICONV_FALLBACKS for iconvctl()
(these also seem to be incomplete in GNU)
- GNU: Correct prototype of iconv_canonicalize()
- Fix segfaults in iconv_none
- Eliminate icconv.dir lookup facility; use iconv_none for identical
conversions and iconv_std for the rest
- GNU: Add _libiconv_version variable
- Eliminate ABI versioning, we will not need it
- Excessive reduce in warnings, higher WARNS levels
- Add ISCII-DEV alias for MACDEVANAGARI
- Fix 1 -> 2, 1 -> 3 and 1 -> 4 mappings in NONE module, which
makes it possible to use more accurate transliteration, just
like GNU
- Improved transliteration for the following encodings:
ARMSCII-8, ISO8859-2, ISO8859-3, ISO8859-4, ISO8859-5,
ISO8859-6, ISO8859-7, ISO8859-8, ISO8859-9, ISO8859-10,
ISO8859-11, ISO8859-13, ISO8859-14, ISO8859-15, ISO8859-16,
KOI8-R, KOI8-U, KOI8-RU, PT154, VISCII, CP1131, CP1251,
CP866
- Rename _iconv.c to iconv.c
- GNU: Add support for iconv_open_into()
- GNU: Add libiconv_open_into alias
BIN
=====================================================================
- iconv: Add support for "-" as an alias of stdin per POSIX
- iconv: Rename -ll to -L per POSIX.1-2008 Utility Syntax Guidelines
REGRESSION-TEST
=====================================================================
- gnu/posix: Some new test cases
- tablegen: Add -d for diagnostical output
- tablegen: skip illegal Unicode input, which only works in GNU
- Remove check between UTF-x, it is not necessary
- tablegen: Add -c to generate Citrus-like tables
DOCS
=====================================================================
- MLINKS for iconv_open.3 and iconv_close.3
- Added manpages:
- iconvlist.3
- iconv_canonicalize.3
- __iconv_get_list.3
- MLINKS for __iconv_free_list.3
- iconv.3: Document POSIX.1-2008 conformance
- mkesdb.3: Document -m
- esdb.5: Improved description
- csmapper.5: Improved description
MISC
=====================================================================
- Cleanup of redundant alias names (duplicates)
- Cleanup of unused code parts
- Axe out unused interfaces
- Provide a freshinstall target for first-time install
- Add my copyright to some files I have touched
Submitted by: Kuang-Chung Chiu <buganini at gmail.com>
Affected files ...
.. //depot/projects/soc2009/gabor_iconv/extracted/Makefile#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/TESTING-HOWTO#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/include/iconv.h#3 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/Makefile#8 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/_iconv.c#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype.c#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype_fallback.c#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype_fallback.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype_local.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype_template.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_esdb.h#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_iconv.c#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_iconv.h#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_iconv_local.h#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_mapper.c#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_mapper.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_mapper_local.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_none.c#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_none.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_prop.c#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_prop.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_stdenc.c#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_stdenc.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_stdenc_local.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_stdenc_template.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/iconvctl.3#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/BIG5/citrus_big5.c#8 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/BIG5/citrus_big5.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/DECHanyu/citrus_dechanyu.c#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/DECHanyu/citrus_dechanyu.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/EUC/citrus_euc.c#8 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/EUC/citrus_euc.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/EUCTW/citrus_euctw.c#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/EUCTW/citrus_euctw.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/GBK2K/citrus_gbk2k.c#8 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/GBK2K/citrus_gbk2k.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/HZ/citrus_hz.c#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/HZ/citrus_hz.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/ISO2022/citrus_iso2022.c#8 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/ISO2022/citrus_iso2022.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/JOHAB/citrus_johab.c#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/JOHAB/citrus_johab.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/MSKanji/citrus_mskanji.c#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/MSKanji/citrus_mskanji.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UES/citrus_ues.c#8 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UES/citrus_ues.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UTF7/citrus_utf7.c#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UTF7/citrus_utf7.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UTF8/citrus_utf8.c#8 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UTF8/citrus_utf8.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/VIQR/citrus_viqr.c#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/VIQR/citrus_viqr.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/ZW/citrus_zw.c#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/ZW/citrus_zw.h#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/iconv_none/Makefile#9 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/iconv_none/citrus_iconv_none.c#8 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/iconv_std/Makefile#9 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/iconv_std/citrus_iconv_std.c#8 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_646/citrus_mapper_646.c#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_none/Makefile#9 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_none/citrus_mapper_none.c#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_serial/citrus_mapper_serial.c#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_std/Makefile#9 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_std/citrus_mapper_std.c#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_zone/citrus_mapper_zone.c#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/Makefile#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/BIG5/mapper.dir.BIG5.src#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/CNS/mapper.dir.CNS.src#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/JIS/mapper.dir.JIS.src#8 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/APPLE/MAC.alias#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/BIG5/Big5.alias#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EBCDIC/EBCDIC.alias#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EUC/EUC.alias#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/GB/GB.alias#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-2022/ISO-2022.alias#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-8859/ISO-8859.alias#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO646/ISO646.alias#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/TCVN/TCVN.alias#4 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/iconv/Makefile#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/iconv/iconv.dir#5 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/man/man5/Makefile#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/man/man5/csmapper.5#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/share/man/man5/esdb.5#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/Makefile#6 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/gnu/Makefile#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/gnu/gnu.c#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/posix/posix.c#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ARMSCII-8-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ASCII-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/BIG5#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/BIG5-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/CP1131#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/CP1131-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/CP1251-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/CP866-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/CP949#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/CP949-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/EUC-CN-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/EUC-JP#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/EUC-JP-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/EUC-KR#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/EUC-KR-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/GB18030-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/GB2312-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/GBK-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-1-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-10-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-11-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-13-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-14-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-15-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-16-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-2-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-3-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-4-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-5-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-6-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-7-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-8-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/ISO8859-9-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/KOI8-R-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/KOI8-U-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/PT154-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/SHIFT_JIS#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/SHIFT_JIS-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/UTF-7#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/UTF-7-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/UTF-8-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/ref/VISCII-rev#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/refgen/Makefile#2 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/tablegen/Makefile#3 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/tablegen/tablegen.c#4 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/iconv/iconv.1#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/iconv/iconv.c#7 edit
.. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/mkesdb/mkesdb.1#2 edit
Differences ...
==== //depot/projects/soc2009/gabor_iconv/extracted/Makefile#2 (text+ko) ====
@@ -7,4 +7,10 @@
usr.bin \
share
+freshinstall:
+ cd include && make install
+ cd lib && make all install clean
+ cd usr.bin && make all install clean
+ cd share && make all install clean
+
.include <bsd.subdir.mk>
==== //depot/projects/soc2009/gabor_iconv/extracted/TESTING-HOWTO#7 (text+ko) ====
@@ -1,36 +1,12 @@
-The following instructions describe how you can try out Citrus iconv on
-your system.
+To install tthe library, the utility and the necessary pieces of metadata
+on your system, jusr run "make freshinstall" in the top-level directory
+(where this file is located).
-You have to accomplish the following steps:
+Now, you have the iconv utility installed in /usr/bin, and the library
+in /usr/lib. The library is installed as libiconv.so, just like the GNU
+version, so in some cases, they might interfere. Use this software for
+your own responsability.
-1, Install includes.
-
- cd include
- make install
-
-2, Install the library.
-
- cd lib/libiconv
- make all
- make install LIBDIR=/usr/lib
-
-2, Install library modules.
-
- cd lib/libiconv_modules
- make all
- mkdir /usr/lib/i18n
- make install
-
-3, Install the utilities.
-
- cd usr.bin
- make all
- make install BINDIR=/usr/bin
-
-2, Install conversion tables.
-
- cd share/i18n
- make all install
-
-Now, you have the iconv utility installed in /usr/bin, and the library
-in /usr/lib.
+--
+Gabor Kovesdan
+gabor at FreeBSD.org
==== //depot/projects/soc2009/gabor_iconv/extracted/include/iconv.h#3 (text+ko) ====
@@ -1,7 +1,8 @@
/* $NetBSD: iconv.h,v 1.6 2005/02/03 04:39:32 perry Exp $ */
/*-
- * Copyright (c)2003 Citrus Project,
+ * Copyright (c) 2003 Citrus Project,
+ * Copyright (c) 2009, 2010 Gabor Kovesdan <gabor at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -64,13 +65,21 @@
*/
/* Historical versions */
-#define libiconv_open iconv_open
-#define libiconv_close iconv_close
-#define libiconv iconv
+#define libiconv_open iconv_open
+#define libiconv_open_into iconv_open_into
+#define libiconv_close iconv_close
+#define libiconv iconv
/* We have iconvctl() */
#define _LIBICONV_VERSION 0x0108
+extern int _libiconv_version;
+typedef struct {
+ void *spaceholder[8];
+} iconv_allocation_t;
+
+int iconv_open_into(const char *, const char *, iconv_allocation_t *);
+
/*
* iconvctl() request macros
*/
@@ -91,9 +100,31 @@
void *data;
};
+typedef void (*iconv_unicode_mb_to_uc_fallback) (const char*,
+ size_t, void (*write_replacement) (const unsigned int *,
+ size_t, void*), void*, void*);
+typedef void (*iconv_unicode_uc_to_mb_fallback) (unsigned int,
+ void (*write_replacement) (const char *, size_t, void*),
+ void*, void*);
+typedef void (*iconv_wchar_mb_to_wc_fallback) (const char*, size_t,
+ void (*write_replacement) (const wchar_t *, size_t, void*),
+ void*, void*);
+typedef void (*iconv_wchar_wc_to_mb_fallback) (wchar_t,
+ void (*write_replacement) (const char *, size_t, void*),
+ void*, void*);
+
+struct iconv_fallbacks {
+ iconv_unicode_mb_to_uc_fallback mb_to_uc_fallback;
+ iconv_unicode_uc_to_mb_fallback uc_to_mb_fallback;
+ iconv_wchar_mb_to_wc_fallback mb_to_wc_fallback;
+ iconv_wchar_wc_to_mb_fallback wc_to_mb_fallback;
+ void *data;
+};
+
+
void iconvlist(int (*do_one) (unsigned int, const char * const *,
void *), void *);
-const char *_iconv_canonalize(const char *);
+const char *iconv_canonicalize(const char *);
int iconvctl(iconv_t, int, void *);
__END_DECLS
==== //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/Makefile#8 (text+ko) ====
@@ -3,14 +3,17 @@
LIB= iconv
SHLIB_MAJOR= 4
MAN= iconv.3 \
- iconvctl.3
-SRCS= _iconv.c \
- citrus_bcs.c \
+ iconvctl.3 \
+ iconv_canonicalize.3 \
+ iconvlist.3 \
+ __iconv_get_list.3
+MLINKS= iconv.3 iconv_open.3 \
+ iconv.3 iconv_close.3 \
+ __iconv_get_list.3 __iconv_free_list.3
+SRCS= citrus_bcs.c \
citrus_bcs_strtol.c \
citrus_bcs_strtoul.c \
citrus_csmapper.c \
- citrus_ctype.c \
- citrus_ctype_fallback.c \
citrus_db.c \
citrus_db_factory.c \
citrus_db_hash.c \
@@ -26,9 +29,11 @@
citrus_none.c \
citrus_pivot_factory.c \
citrus_prop.c \
- citrus_stdenc.c
+ citrus_stdenc.c \
+ citrus_stdenc_fallbacks.c \
+ iconv.c
CFLAGS+= --param max-inline-insns-single=128 -I ${.CURDIR}/../../include
-WARNS?= 3
+WARNS?= 6
.include <bsd.lib.mk>
==== //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/_iconv.c#7 (text+ko) ====
@@ -1,256 +1,0 @@
-/* $NetBSD: iconv.c,v 1.11 2009/03/03 16:22:33 explorer Exp $ */
-
-/*-
- * Copyright (c)2003 Citrus 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.
- */
-
-#include <sys/cdefs.h>
-
-#include <assert.h>
-#include <errno.h>
-#include <iconv.h>
-#include <paths.h>
-#include <stdbool.h>
-#include <sys/queue.h>
-
-#include "netbsdism.h"
-
-#ifdef __weak_alias
-__weak_alias(iconv, _iconv)
-__weak_alias(iconv_open, _iconv_open)
-__weak_alias(iconv_close, _iconv_close)
-#endif
-
-#include <sys/types.h>
-#include <string.h>
-#include <stdlib.h>
-#include "citrus_types.h"
-#include "citrus_module.h"
-#include "citrus_esdb.h"
-#include "citrus_hash.h"
-#include "citrus_iconv.h"
-
-#define ISBADF(_h_) (!(_h_) || (_h_) == (iconv_t)-1)
-
-iconv_t
-iconv_open(const char *out, const char *in)
-{
- int ret;
- struct _citrus_iconv *handle;
- char *out_truncated;
- char *p;
-
- /*
- * Remove anything following a //, as these are options (like
- * //ignore, //translate, etc) and we just don't handle them.
- * This is for compatibilty with software that uses thees
- * blindly.
- */
- out_truncated = strdup(out);
- if (out_truncated == NULL) {
- errno = ENOMEM;
- return ((iconv_t)-1);
- }
-
- p = out_truncated;
- while (*p != 0) {
- if (p[0] == '/' && p[1] == '/') {
- *p = '\0';
- break;
- }
- p++;
- }
-
- ret = _citrus_iconv_open(&handle, _PATH_ICONV, in, out_truncated);
- free(out_truncated);
- if (ret) {
- errno = ret == ENOENT ? EINVAL : ret;
- return ((iconv_t)-1);
- }
-
- if (strcasestr(out, "//IGNORE"))
- handle->cv_shared->ci_discard_ilseq = true;
- else
- handle->cv_shared->ci_discard_ilseq = false;
-
- return ((iconv_t)(void *)handle);
-}
-
-int
-iconv_close(iconv_t handle)
-{
- if (ISBADF(handle)) {
- errno = EBADF;
- return (-1);
- }
-
- _citrus_iconv_close((struct _citrus_iconv *)(void *)handle);
-
- return (0);
-}
-
-size_t
-iconv(iconv_t handle, const char **in, size_t *szin, char **out, size_t *szout)
-{
- int err;
- size_t ret;
-
- if (ISBADF(handle)) {
- errno = EBADF;
- return ((size_t)-1);
- }
-
- err = _citrus_iconv_convert(
- (struct _citrus_iconv *)(void *)handle, in, szin, out, szout,
- 0, &ret);
- if (err) {
- errno = err;
- ret = (size_t)-1;
- }
-
- return (ret);
-}
-
-size_t
-__iconv(iconv_t handle, const char **in, size_t *szin, char **out,
- size_t *szout, u_int32_t flags, size_t *invalids)
-{
- int err;
- size_t ret;
-
- if (ISBADF(handle)) {
- errno = EBADF;
- return ((size_t)-1);
- }
-
- err = _citrus_iconv_convert(
- (struct _citrus_iconv *)(void *)handle, in, szin, out, szout,
- flags, &ret);
- if (invalids)
- *invalids = ret;
- if (err) {
- errno = err;
- ret = (size_t)-1;
- }
-
- return (ret);
-}
-
-int
-__iconv_get_list(char ***rlist, size_t *rsz, bool l)
-{
- int ret;
-
- ret = _citrus_esdb_get_list(rlist, rsz, l);
- if (ret) {
- errno = ret;
- return -1;
- }
-
- return 0;
-}
-
-void
-__iconv_free_list(char **list, size_t sz)
-{
- _citrus_esdb_free_list(list, sz);
-}
-
-/*
- * GNU-compatibile non-standard interfaces.
- */
-void
-iconvlist(int (*do_one) (unsigned int, const char * const *,
- void *), void *data)
-{
- char **list;
- size_t sz;
-
- if (__iconv_get_list(&list, &sz, true))
- list = NULL;
-
- const char * const * names = (const char * const *)list;
- unsigned int i = sz;
- do_one(i, names, data);
-
- __iconv_free_list(list, sz);
-}
-
-__inline const char
-*_iconv_canonalize(const char *name)
-{
- return (_citrus_iconv_canonalize(name));
-}
-
-int
-iconvctl(iconv_t cd, int request, void *argument)
-{
- int *i = (int *)argument;
- struct iconv_hooks *hooks = (struct iconv_hooks *)argument;
- struct _citrus_iconv *cv = (struct _citrus_iconv *)(void *)cd;
- const char *convname;
- char *src, *dst;
-
- if (ISBADF(cd)) {
- errno = EBADF;
- return (-1);
- }
-
- switch (request) {
- case ICONV_TRIVIALP:
- convname = cv->cv_shared->ci_convname;
- dst = strchr(convname, '/');
-
- strlcpy(src, convname, dst - convname + 1);
- dst++;
- if ((convname == NULL) || (src == NULL) || (dst == NULL))
- return (-1);
- *i = strcmp(src, dst) == 0 ? 1 : 0;
- return (0);
- case ICONV_GET_TRANSLITERATE:
- *i = 1;
- return (0);
- case ICONV_SET_TRANSLITERATE:
- return ((*i == 1) ? 0 : -1);
- case ICONV_GET_DISCARD_ILSEQ:
- *i = cv->cv_shared->ci_discard_ilseq ? 1 : 0;
- return (0);
- case ICONV_SET_DISCARD_ILSEQ:
- cv->cv_shared->ci_discard_ilseq = *i;
- return (0);
- case ICONV_SET_HOOKS:
- if (hooks != NULL)
- cv->cv_shared->ci_hooks = *hooks;
- else {
- cv->cv_shared->ci_hooks.uc_hook = NULL;
- cv->cv_shared->ci_hooks.wc_hook = NULL;
- cv->cv_shared->ci_hooks.data = NULL;
- }
- return (0);
- default:
- errno = EINVAL;
- return (-1);
- }
-}
==== //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype.c#6 (text+ko) ====
@@ -1,173 +1,0 @@
-/* $NetBSD: citrus_ctype.c,v 1.5 2008/06/14 16:01:07 tnozaki Exp $ */
-
-/*-
- * Copyright (c)1999, 2000, 2001, 2002 Citrus 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.
- */
-
-#include <sys/cdefs.h>
-
-#include <sys/types.h>
-#include <assert.h>
-#include <errno.h>
-#include <limits.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <stddef.h>
-#include <wchar.h>
-#include "citrus_module.h"
-#include "citrus_ctype.h"
-#include "citrus_ctype_fallback.h"
-#include "citrus_none.h"
-#include _CITRUS_DEFAULT_CTYPE_HEADER
-
-_citrus_ctype_rec_t _citrus_ctype_default = {
- &_CITRUS_DEFAULT_CTYPE_OPS, /* cc_ops */
- NULL, /* cc_closure */
- NULL /* cc_module */
-};
-
-static int _initctypemodule(_citrus_ctype_t, char const *, _citrus_module_t,
- void *, size_t, size_t);
-
-static int
-_initctypemodule(_citrus_ctype_t cc, char const *modname,
- _citrus_module_t handle, void *variable, size_t lenvar,
- size_t szpriv)
-{
- int ret;
- _citrus_ctype_getops_t getops;
-
- cc->cc_module = handle;
-
- getops = (_citrus_ctype_getops_t)_citrus_find_getops(cc->cc_module,
- modname,
- "ctype");
- if (getops == NULL)
- return (EINVAL);
-
- cc->cc_ops = (_citrus_ctype_ops_rec_t *)malloc(sizeof(*cc->cc_ops));
- if (cc->cc_ops == NULL)
- return (ENOMEM);
-
- ret = (*getops)(cc->cc_ops, sizeof(*cc->cc_ops),
- _CITRUS_CTYPE_ABI_VERSION);
- if (ret)
- goto bad;
-
- /* If return ABI version is not expected, fixup it here*/
- switch (cc->cc_ops->co_abi_version) {
- case 0x00000001:
- cc->cc_ops->co_btowc = &_citrus_ctype_btowc_fallback;
- cc->cc_ops->co_wctob = &_citrus_ctype_wctob_fallback;
- /* FALLTHROUGH */
- case 0x00000002:
- /* FALLTHROUGH */
- default:
- break;
- }
-
- /* validation check */
- if (cc->cc_ops->co_init == NULL ||
- cc->cc_ops->co_uninit == NULL ||
- cc->cc_ops->co_get_mb_cur_max == NULL ||
- cc->cc_ops->co_mblen == NULL ||
- cc->cc_ops->co_mbrlen == NULL ||
- cc->cc_ops->co_mbrtowc == NULL ||
- cc->cc_ops->co_mbsinit == NULL ||
- cc->cc_ops->co_mbsrtowcs == NULL ||
- cc->cc_ops->co_mbstowcs == NULL ||
- cc->cc_ops->co_mbtowc == NULL ||
- cc->cc_ops->co_wcrtomb == NULL ||
- cc->cc_ops->co_wcsrtombs == NULL ||
- cc->cc_ops->co_wcstombs == NULL ||
- cc->cc_ops->co_wctomb == NULL ||
- cc->cc_ops->co_btowc == NULL ||
- cc->cc_ops->co_wctob == NULL)
- goto bad;
-
- /* init and get closure */
- ret = (*cc->cc_ops->co_init)(
- &cc->cc_closure, variable, lenvar, szpriv);
- if (ret)
- goto bad;
-
- return (0);
-
-bad:
- if (cc->cc_ops)
- free(cc->cc_ops);
- cc->cc_ops = NULL;
-
- return (ret);
-}
-
-int
-_citrus_ctype_open(_citrus_ctype_t *rcc,
- char const *encname, void *variable, size_t lenvar,
- size_t szpriv)
-{
- int ret;
- _citrus_module_t handle;
- _citrus_ctype_t cc;
-
- if (!strcmp(encname, _CITRUS_DEFAULT_CTYPE_NAME)) {
- *rcc = &_citrus_ctype_default;
- return (0);
- }
- ret = _citrus_load_module(&handle, encname);
- if (ret)
- return (ret);
-
- cc = calloc(1, sizeof(*cc));
- if (!cc) {
- _citrus_unload_module(handle);
- return (errno);
- }
-
- ret = _initctypemodule(cc, encname, handle, variable, lenvar, szpriv);
- if (ret) {
- _citrus_unload_module(cc->cc_module);
- free(cc);
- return (ret);
- }
-
- *rcc = cc;
-
- return (0);
-}
-
-void
-_citrus_ctype_close(_citrus_ctype_t cc)
-{
-
- if (cc == &_citrus_ctype_default)
- return;
- (*cc->cc_ops->co_uninit)(cc->cc_closure);
- free(cc->cc_ops);
- _citrus_unload_module(cc->cc_module);
- free(cc);
-}
==== //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype.h#6 (text+ko) ====
@@ -1,156 +1,0 @@
-/* $NetBSD: citrus_ctype.h,v 1.2 2003/03/05 20:18:15 tshiozak Exp $ */
-
-/*-
- * Copyright (c)2002 Citrus 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.
- *
- */
-
-#ifndef _CITRUS_CTYPE_H_
-#define _CITRUS_CTYPE_H_
-
-#include "citrus_ctype_local.h"
-
-typedef struct _citrus_ctype_rec *_citrus_ctype_t;
-
-__BEGIN_DECLS
-int _citrus_ctype_open(_citrus_ctype_t * __restrict,
- char const * __restrict, void * __restrict,
- size_t, size_t);
-void _citrus_ctype_close(_citrus_ctype_t);
-__END_DECLS
-
-static __inline unsigned
-_citrus_ctype_get_mb_cur_max(_citrus_ctype_t cc)
-{
-
- return (*cc->cc_ops->co_get_mb_cur_max)(cc->cc_closure);
-}
-
-static __inline int
-_citrus_ctype_mblen(_citrus_ctype_t cc, const char *s, size_t n, int *nresult)
-{
-
- return (*cc->cc_ops->co_mblen)(cc->cc_closure, s, n, nresult);
-}
-
-static __inline int
-_citrus_ctype_mbrlen(_citrus_ctype_t cc, const char *s, size_t n,
- void *pspriv, size_t *nresult)
-{
-
- return (*cc->cc_ops->co_mbrlen)(cc->cc_closure, s, n, pspriv, nresult);
-}
-
-static __inline int
-_citrus_ctype_mbrtowc(_citrus_ctype_t cc, wchar_t *pwc, const char *s,
- size_t n, void *pspriv, size_t *nresult)
-{
-
- return (*cc->cc_ops->co_mbrtowc)(cc->cc_closure, pwc, s, n, pspriv,
- nresult);
-}
-
-static __inline int
-_citrus_ctype_mbsinit(_citrus_ctype_t cc, void const *pspriv, int *nresult)
-{
-
- return (*cc->cc_ops->co_mbsinit)(cc->cc_closure, pspriv, nresult);
-}
-
-static __inline int
-_citrus_ctype_mbsrtowcs(_citrus_ctype_t cc, wchar_t *pwcs, const char **s,
- size_t n, void *pspriv, size_t *nresult)
-{
-
- return (*cc->cc_ops->co_mbsrtowcs)(cc->cc_closure, pwcs, s, n, pspriv,
- nresult);
-}
-
-static __inline int
-_citrus_ctype_mbstowcs(_citrus_ctype_t cc, wchar_t *pwcs, const char *s,
- size_t n, size_t *nresult)
-{
-
- return (*cc->cc_ops->co_mbstowcs)(cc->cc_closure, pwcs, s, n, nresult);
-}
-
-static __inline int
-_citrus_ctype_mbtowc(_citrus_ctype_t cc, wchar_t *pw, const char *s, size_t n,
- int *nresult)
-{
-
- return (*cc->cc_ops->co_mbtowc)(cc->cc_closure, pw, s, n, nresult);
-}
-
-static __inline int
-_citrus_ctype_wcrtomb(_citrus_ctype_t cc, char *s, wchar_t wc,
- void *pspriv, size_t *nresult)
-{
-
- return (*cc->cc_ops->co_wcrtomb)(cc->cc_closure, s, wc, pspriv,
- nresult);
-}
-
-static __inline int
-_citrus_ctype_wcsrtombs(_citrus_ctype_t cc, char *s, const wchar_t **ppwcs,
- size_t n, void *pspriv, size_t *nresult)
-{
-
- return (*cc->cc_ops->co_wcsrtombs)(cc->cc_closure, s, ppwcs, n,
- pspriv, nresult);
-}
-
-static __inline int
-_citrus_ctype_wcstombs(_citrus_ctype_t cc, char *s, const wchar_t *wcs,
- size_t n, size_t *nresult)
-{
-
- return (*cc->cc_ops->co_wcstombs)(cc->cc_closure, s, wcs, n, nresult);
-}
-
-static __inline int
-_citrus_ctype_wctomb(_citrus_ctype_t cc, char *s, wchar_t wc, int *nresult)
-{
-
- return (*cc->cc_ops->co_wctomb)(cc->cc_closure, s, wc, nresult);
-}
-
-static __inline int
-_citrus_ctype_btowc(_citrus_ctype_t cc, int c, wint_t *wcresult)
-{
-
- return (*cc->cc_ops->co_btowc)(cc, c, wcresult);
-}
-
-static __inline int
-_citrus_ctype_wctob(_citrus_ctype_t cc, wint_t c, int *cresult)
-{
-
- return (*cc->cc_ops->co_wctob)(cc, c, cresult);
-}
-
-extern _citrus_ctype_rec_t _citrus_ctype_default;
-
-#endif
==== //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype_fallback.c#6 (text+ko) ====
@@ -1,101 +1,0 @@
-/* $NetBSD: citrus_ctype_fallback.c,v 1.2 2003/06/27 14:52:25 yamt Exp $ */
-
-/*-
- * Copyright (c)2003 Citrus 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.
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list