From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- intl/icu/source/extra/Makefile.in | 81 ++ intl/icu/source/extra/scrptrun/Makefile.in | 89 ++ intl/icu/source/extra/scrptrun/readme.html | 69 + intl/icu/source/extra/scrptrun/scrptrun.cpp | 203 +++ intl/icu/source/extra/scrptrun/scrptrun.h | 156 +++ intl/icu/source/extra/scrptrun/srtest.cpp | 41 + intl/icu/source/extra/scrptrun/srtest.dsp | 110 ++ intl/icu/source/extra/scrptrun/srtest.dsw | 29 + intl/icu/source/extra/uconv/Makefile.in | 182 +++ intl/icu/source/extra/uconv/README | 17 + intl/icu/source/extra/uconv/makedata.mak | 108 ++ intl/icu/source/extra/uconv/pkgdata.inc.in | 64 + intl/icu/source/extra/uconv/pkgdataMakefile.in | 42 + intl/icu/source/extra/uconv/resfiles.mk | 11 + intl/icu/source/extra/uconv/resources/fr.txt | 106 ++ intl/icu/source/extra/uconv/resources/root.txt | 130 ++ intl/icu/source/extra/uconv/samples/ISO-8859-2.txt | 2 + intl/icu/source/extra/uconv/samples/ISO-8859-3.txt | 6 + .../extra/uconv/samples/danish-ISO-8859-1.txt | 18 + intl/icu/source/extra/uconv/samples/eucJP.txt | 37 + .../source/extra/uconv/samples/hangul-eucKR.txt | 2 + .../icu/source/extra/uconv/samples/hania-eucKR.txt | 2 + .../icu/source/extra/uconv/samples/ibm-37-test.txt | 1 + intl/icu/source/extra/uconv/samples/iso8859-1.txt | 18 + intl/icu/source/extra/uconv/samples/koi8r.txt | 6 + .../source/extra/uconv/samples/utf8/armenian.txt | 4 + .../source/extra/uconv/samples/utf8/banviet.txt | 11 + .../extra/uconv/samples/utf8/chinese-ulysses.txt | 222 ++++ intl/icu/source/extra/uconv/samples/utf8/croat.txt | 2 + .../icu/source/extra/uconv/samples/utf8/danish.txt | 18 + intl/icu/source/extra/uconv/samples/utf8/greek.txt | 44 + .../icu/source/extra/uconv/samples/utf8/hangul.txt | 2 + intl/icu/source/extra/uconv/samples/utf8/hania.txt | 2 + intl/icu/source/extra/uconv/samples/utf8/jap.txt | 37 + .../icu/source/extra/uconv/samples/utf8/korean.txt | 20 + intl/icu/source/extra/uconv/samples/utf8/linji.txt | 918 +++++++++++++ intl/icu/source/extra/uconv/samples/utf8/many.txt | 18 + .../source/extra/uconv/samples/utf8/maopoem.txt | 23 + .../source/extra/uconv/samples/utf8/russian.txt | 6 + .../extra/uconv/samples/utf8/simplechinese.txt | 14 + .../source/extra/uconv/samples/utf8/turkish.txt | 6 + .../source/extra/uconv/samples/utf8/utf-8-demo.txt | 7 + intl/icu/source/extra/uconv/uconv.1.in | 445 +++++++ intl/icu/source/extra/uconv/uconv.cpp | 1397 ++++++++++++++++++++ intl/icu/source/extra/uconv/uconv.vcxproj | 299 +++++ intl/icu/source/extra/uconv/uconv.vcxproj.filters | 50 + intl/icu/source/extra/uconv/unicode/uwmsg.h | 31 + intl/icu/source/extra/uconv/uwmsg.c | 265 ++++ 48 files changed, 5371 insertions(+) create mode 100644 intl/icu/source/extra/Makefile.in create mode 100644 intl/icu/source/extra/scrptrun/Makefile.in create mode 100644 intl/icu/source/extra/scrptrun/readme.html create mode 100644 intl/icu/source/extra/scrptrun/scrptrun.cpp create mode 100644 intl/icu/source/extra/scrptrun/scrptrun.h create mode 100644 intl/icu/source/extra/scrptrun/srtest.cpp create mode 100644 intl/icu/source/extra/scrptrun/srtest.dsp create mode 100644 intl/icu/source/extra/scrptrun/srtest.dsw create mode 100644 intl/icu/source/extra/uconv/Makefile.in create mode 100644 intl/icu/source/extra/uconv/README create mode 100644 intl/icu/source/extra/uconv/makedata.mak create mode 100644 intl/icu/source/extra/uconv/pkgdata.inc.in create mode 100644 intl/icu/source/extra/uconv/pkgdataMakefile.in create mode 100644 intl/icu/source/extra/uconv/resfiles.mk create mode 100644 intl/icu/source/extra/uconv/resources/fr.txt create mode 100644 intl/icu/source/extra/uconv/resources/root.txt create mode 100644 intl/icu/source/extra/uconv/samples/ISO-8859-2.txt create mode 100644 intl/icu/source/extra/uconv/samples/ISO-8859-3.txt create mode 100644 intl/icu/source/extra/uconv/samples/danish-ISO-8859-1.txt create mode 100644 intl/icu/source/extra/uconv/samples/eucJP.txt create mode 100644 intl/icu/source/extra/uconv/samples/hangul-eucKR.txt create mode 100644 intl/icu/source/extra/uconv/samples/hania-eucKR.txt create mode 100644 intl/icu/source/extra/uconv/samples/ibm-37-test.txt create mode 100644 intl/icu/source/extra/uconv/samples/iso8859-1.txt create mode 100644 intl/icu/source/extra/uconv/samples/koi8r.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/armenian.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/banviet.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/croat.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/danish.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/greek.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/hangul.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/hania.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/jap.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/korean.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/linji.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/many.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/maopoem.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/russian.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/simplechinese.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/turkish.txt create mode 100644 intl/icu/source/extra/uconv/samples/utf8/utf-8-demo.txt create mode 100644 intl/icu/source/extra/uconv/uconv.1.in create mode 100644 intl/icu/source/extra/uconv/uconv.cpp create mode 100644 intl/icu/source/extra/uconv/uconv.vcxproj create mode 100644 intl/icu/source/extra/uconv/uconv.vcxproj.filters create mode 100644 intl/icu/source/extra/uconv/unicode/uwmsg.h create mode 100644 intl/icu/source/extra/uconv/uwmsg.c (limited to 'intl/icu/source/extra') diff --git a/intl/icu/source/extra/Makefile.in b/intl/icu/source/extra/Makefile.in new file mode 100644 index 000000000..4dd2818bd --- /dev/null +++ b/intl/icu/source/extra/Makefile.in @@ -0,0 +1,81 @@ +# Copyright (C) 2016 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html +#****************************************************************************** +# +# Copyright (C) 1999-2011, International Business Machines +# Corporation and others. All Rights Reserved. +# +#****************************************************************************** +## Makefile.in for ICU extras +## Stephen F. Booth + +## Install directory information +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ + +top_builddir = .. + +include $(top_builddir)/icudefs.mk + +## Build directory information +subdir = extra + +## Files to remove for 'make clean' +CLEANFILES = *~ + +SUBDIRS = uconv + +## List of phony targets +.PHONY : all all-local all-recursive install install-local \ +install-recursive clean clean-local clean-recursive distclean \ +distclean-local distclean-recursive dist dist-recursive dist-local \ +check check-recursive check-local check-exhaustive + +## Clear suffix list +.SUFFIXES : + +## List of standard targets +all: all-recursive all-local +install: install-recursive install-local +clean: clean-recursive clean-local +distclean : distclean-recursive distclean-local +dist: dist-recursive dist-local +check: all check-recursive check-local + +check-exhaustive: check + +## Recursive targets +all-recursive install-recursive clean-recursive distclean-recursive dist-recursive check-recursive: + @dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "$(MAKE)[$(MAKELEVEL)]: Making \`$$target' in \`$$subdir'"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-local"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $$local_target) || exit; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) "$$target-local" || exit; \ + fi + +all-local: + +install-local: + +dist-local: + +clean-local: + test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES) + +check-local: + +distclean-local: clean-local + $(RMV) Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/intl/icu/source/extra/scrptrun/Makefile.in b/intl/icu/source/extra/scrptrun/Makefile.in new file mode 100644 index 000000000..6712c4356 --- /dev/null +++ b/intl/icu/source/extra/scrptrun/Makefile.in @@ -0,0 +1,89 @@ +## Copyright (C) 2016 and later: Unicode, Inc. and others. +## License & terms of use: http://www.unicode.org/copyright.html +## Makefile.in for ICU - extra/scrptrun +## Copyright (c) 2001-2011, International Business Machines Corporation and +## others. All Rights Reserved. + +## Source directory information +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ + +top_builddir = ../.. + +include $(top_builddir)/icudefs.mk + +## Platform-specific setup +include @platform_make_fragment@ + +## Build directory information +subdir = extra/scrptrun + +## Extra files to remove for 'make clean' +CLEANFILES = *~ $(DEPS) + +## Target information +TARGET = srtest + +DEFS = @DEFS@ +CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/common -I$(top_srcdir) +CFLAGS = @CFLAGS@ +CXXFLAGS = @CXXFLAGS@ +ENABLE_RPATH = @ENABLE_RPATH@ +ifeq ($(ENABLE_RPATH),YES) +RPATHLDFLAGS = $(LD_RPATH)$(LD_RPATH_PRE)$(libdir) +endif +LDFLAGS = @LDFLAGS@ $(RPATHLDFLAGS) +LIBS = $(LIBICUUC) @LIBS@ @LIB_M@ + +OBJECTS = scrptrun.o srtest.o + +DEPS = $(OBJECTS:.o=.d) + +## List of phony targets +.PHONY : all all-local install install-local clean clean-local \ +distclean distclean-local dist dist-local check check-local + +## Clear suffix list +.SUFFIXES : + +## List of standard targets +all: all-local +install: install-local +clean: clean-local +distclean : distclean-local +dist: dist-local +check: all check-local + +all-local: $(TARGET) + +install-local: + +dist-local: + +clean-local: + test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES) + $(RMV) $(OBJECTS) $(TARGET) + +distclean-local: clean-local + $(RMV) Makefile + +check-local: all-local + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(TARGET) : $(OBJECTS) + $(LINK.cc) -o $@ $^ $(LIBS) + $(POST_BUILD_STEP) + +invoke: + ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION) + +ifeq (,$(MAKECMDGOALS)) +-include $(DEPS) +else +ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),) +-include $(DEPS) +endif +endif diff --git a/intl/icu/source/extra/scrptrun/readme.html b/intl/icu/source/extra/scrptrun/readme.html new file mode 100644 index 000000000..9968a5e85 --- /dev/null +++ b/intl/icu/source/extra/scrptrun/readme.html @@ -0,0 +1,69 @@ + + + + + + + + + ScriptRun readme + + + +

+What is scrptrun and srtest?

+The ICU LayoutEngine must be called with text in a single script. scrptrun.h +and scrptrun.cpp implement the ScriptRun class, which can be used to find +runs of text that is in a single script. It uses a basic iteration interface. +

srtest is a little program that tests ScriptRun. You can use it as an +example of how to use ScriptRun. Here's what the output should look like: +

Script 'DEVANAGARI' +from 0 to 9. +
Script 'ARABIC' from +9 to 17. +
Script 'CYRILLIC' from +17 to 25. +
Script 'LATIN' from +25 to 33. +
Script 'HAN' from 33 +to 35. +
Script 'HIRAGANA' from +35 to 41. +
Script 'KATAKANA' from +41 to 45. +
Script 'DESERET' from +45 to 53.
+ +

+How do I build scrptrun and srtest?

+To use the ScriptRun class in a Windows application, just include scrptrun.h +and scrptrun.cpp right out of the <icu>\source\extra\scrptrun directory +into your project. You'll also need to add the <icu>\source]extra\scrptrun +directory to the "Additional include directories" section of the "Preprocessor" +category on the "C/C++" tab in the project settings. +

On UNIX systems the simplest thing to do is to just copy scrptrun.h +and scrptrun.cpp into your source directory. If you want to use them from +<icu>/source/extra/scrpturn, it's a bit trickier: the default dependency +rules don't work on source files in a different directory. You need to +add separate dependency rules for scrptrun.o and scrptrun.d. See <icu>/source/samples/layout/Makefile.in +for an example of how to do this. You'll also have to add -I$(top_srcdir)/extra/scrptrun +to your compiler flags so that the compiler can find scrptrun.h. If your +application has to build on multiple UNIX platforms, it might be difficult +to wirte dependency rules that will work correctly on all platforms. In +that case, you're probably better off copying the scrpturn files to your +source directory. +

Building srtest is easy, on Windows build the srtest workspace in <icu>\source\extra\scrptrun. +On UNIX, connect to <top-build-dir>/extra/scrptrun and do "make all" +

+Notes

+ + + + + diff --git a/intl/icu/source/extra/scrptrun/scrptrun.cpp b/intl/icu/source/extra/scrptrun/scrptrun.cpp new file mode 100644 index 000000000..bd5105aaa --- /dev/null +++ b/intl/icu/source/extra/scrptrun/scrptrun.cpp @@ -0,0 +1,203 @@ +// Copyright (C) 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html +/* + ******************************************************************************* + * + * Copyright (C) 1999-2016, International Business Machines + * Corporation and others. All Rights Reserved. + * + ******************************************************************************* + * file name: scrptrun.cpp + * + * created on: 10/17/2001 + * created by: Eric R. Mader + */ + +#include "unicode/utypes.h" +#include "unicode/uscript.h" + +#include "cmemory.h" +#include "scrptrun.h" + +const char ScriptRun::fgClassID=0; + +UChar32 ScriptRun::pairedChars[] = { + 0x0028, 0x0029, // ascii paired punctuation + 0x003c, 0x003e, + 0x005b, 0x005d, + 0x007b, 0x007d, + 0x00ab, 0x00bb, // guillemets + 0x2018, 0x2019, // general punctuation + 0x201c, 0x201d, + 0x2039, 0x203a, + 0x3008, 0x3009, // chinese paired punctuation + 0x300a, 0x300b, + 0x300c, 0x300d, + 0x300e, 0x300f, + 0x3010, 0x3011, + 0x3014, 0x3015, + 0x3016, 0x3017, + 0x3018, 0x3019, + 0x301a, 0x301b +}; + +const int32_t ScriptRun::pairedCharCount = UPRV_LENGTHOF(pairedChars); +const int32_t ScriptRun::pairedCharPower = 1 << highBit(pairedCharCount); +const int32_t ScriptRun::pairedCharExtra = pairedCharCount - pairedCharPower; + +int8_t ScriptRun::highBit(int32_t value) +{ + if (value <= 0) { + return -32; + } + + int8_t bit = 0; + + if (value >= 1 << 16) { + value >>= 16; + bit += 16; + } + + if (value >= 1 << 8) { + value >>= 8; + bit += 8; + } + + if (value >= 1 << 4) { + value >>= 4; + bit += 4; + } + + if (value >= 1 << 2) { + value >>= 2; + bit += 2; + } + + if (value >= 1 << 1) { + value >>= 1; + bit += 1; + } + + return bit; +} + +int32_t ScriptRun::getPairIndex(UChar32 ch) +{ + int32_t probe = pairedCharPower; + int32_t index = 0; + + if (ch >= pairedChars[pairedCharExtra]) { + index = pairedCharExtra; + } + + while (probe > (1 << 0)) { + probe >>= 1; + + if (ch >= pairedChars[index + probe]) { + index += probe; + } + } + + if (pairedChars[index] != ch) { + index = -1; + } + + return index; +} + +UBool ScriptRun::sameScript(int32_t scriptOne, int32_t scriptTwo) +{ + return scriptOne <= USCRIPT_INHERITED || scriptTwo <= USCRIPT_INHERITED || scriptOne == scriptTwo; +} + +UBool ScriptRun::next() +{ + int32_t startSP = parenSP; // used to find the first new open character + UErrorCode error = U_ZERO_ERROR; + + // if we've fallen off the end of the text, we're done + if (scriptEnd >= charLimit) { + return false; + } + + scriptCode = USCRIPT_COMMON; + + for (scriptStart = scriptEnd; scriptEnd < charLimit; scriptEnd += 1) { + UChar high = charArray[scriptEnd]; + UChar32 ch = high; + + // if the character is a high surrogate and it's not the last one + // in the text, see if it's followed by a low surrogate + if (high >= 0xD800 && high <= 0xDBFF && scriptEnd < charLimit - 1) + { + UChar low = charArray[scriptEnd + 1]; + + // if it is followed by a low surrogate, + // consume it and form the full character + if (low >= 0xDC00 && low <= 0xDFFF) { + ch = (high - 0xD800) * 0x0400 + low - 0xDC00 + 0x10000; + scriptEnd += 1; + } + } + + UScriptCode sc = uscript_getScript(ch, &error); + int32_t pairIndex = getPairIndex(ch); + + // Paired character handling: + // + // if it's an open character, push it onto the stack. + // if it's a close character, find the matching open on the + // stack, and use that script code. Any non-matching open + // characters above it on the stack will be poped. + if (pairIndex >= 0) { + if ((pairIndex & 1) == 0) { + parenStack[++parenSP].pairIndex = pairIndex; + parenStack[parenSP].scriptCode = scriptCode; + } else if (parenSP >= 0) { + int32_t pi = pairIndex & ~1; + + while (parenSP >= 0 && parenStack[parenSP].pairIndex != pi) { + parenSP -= 1; + } + + if (parenSP < startSP) { + startSP = parenSP; + } + + if (parenSP >= 0) { + sc = parenStack[parenSP].scriptCode; + } + } + } + + if (sameScript(scriptCode, sc)) { + if (scriptCode <= USCRIPT_INHERITED && sc > USCRIPT_INHERITED) { + scriptCode = sc; + + // now that we have a final script code, fix any open + // characters we pushed before we knew the script code. + while (startSP < parenSP) { + parenStack[++startSP].scriptCode = scriptCode; + } + } + + // if this character is a close paired character, + // pop it from the stack + if (pairIndex >= 0 && (pairIndex & 1) != 0 && parenSP >= 0) { + parenSP -= 1; + startSP -= 1; + } + } else { + // if the run broke on a surrogate pair, + // end it before the high surrogate + if (ch >= 0x10000) { + scriptEnd -= 1; + } + + break; + } + } + + return true; +} + diff --git a/intl/icu/source/extra/scrptrun/scrptrun.h b/intl/icu/source/extra/scrptrun/scrptrun.h new file mode 100644 index 000000000..b6b3a2b56 --- /dev/null +++ b/intl/icu/source/extra/scrptrun/scrptrun.h @@ -0,0 +1,156 @@ +// Copyright (C) 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html +/* + ******************************************************************************* + * + * Copyright (C) 1999-2003, International Business Machines + * Corporation and others. All Rights Reserved. + * + ******************************************************************************* + * file name: scrptrun.h + * + * created on: 10/17/2001 + * created by: Eric R. Mader + */ + +#ifndef __SCRPTRUN_H +#define __SCRPTRUN_H + +#include "unicode/utypes.h" +#include "unicode/uobject.h" +#include "unicode/uscript.h" + +struct ScriptRecord +{ + UChar32 startChar; + UChar32 endChar; + UScriptCode scriptCode; +}; + +struct ParenStackEntry +{ + int32_t pairIndex; + UScriptCode scriptCode; +}; + +class ScriptRun : public UObject { +public: + ScriptRun(); + + ScriptRun(const UChar chars[], int32_t length); + + ScriptRun(const UChar chars[], int32_t start, int32_t length); + + void reset(); + + void reset(int32_t start, int32_t count); + + void reset(const UChar chars[], int32_t start, int32_t length); + + int32_t getScriptStart(); + + int32_t getScriptEnd(); + + UScriptCode getScriptCode(); + + UBool next(); + + /** + * ICU "poor man's RTTI", returns a UClassID for the actual class. + * + * @stable ICU 2.2 + */ + virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); } + + /** + * ICU "poor man's RTTI", returns a UClassID for this class. + * + * @stable ICU 2.2 + */ + static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; } + +private: + + static UBool sameScript(int32_t scriptOne, int32_t scriptTwo); + + int32_t charStart; + int32_t charLimit; + const UChar *charArray; + + int32_t scriptStart; + int32_t scriptEnd; + UScriptCode scriptCode; + + ParenStackEntry parenStack[128]; + int32_t parenSP; + + static int8_t highBit(int32_t value); + static int32_t getPairIndex(UChar32 ch); + + static UChar32 pairedChars[]; + static const int32_t pairedCharCount; + static const int32_t pairedCharPower; + static const int32_t pairedCharExtra; + + /** + * The address of this static class variable serves as this class's ID + * for ICU "poor man's RTTI". + */ + static const char fgClassID; +}; + +inline ScriptRun::ScriptRun() +{ + reset(NULL, 0, 0); +} + +inline ScriptRun::ScriptRun(const UChar chars[], int32_t length) +{ + reset(chars, 0, length); +} + +inline ScriptRun::ScriptRun(const UChar chars[], int32_t start, int32_t length) +{ + reset(chars, start, length); +} + +inline int32_t ScriptRun::getScriptStart() +{ + return scriptStart; +} + +inline int32_t ScriptRun::getScriptEnd() +{ + return scriptEnd; +} + +inline UScriptCode ScriptRun::getScriptCode() +{ + return scriptCode; +} + +inline void ScriptRun::reset() +{ + scriptStart = charStart; + scriptEnd = charStart; + scriptCode = USCRIPT_INVALID_CODE; + parenSP = -1; +} + +inline void ScriptRun::reset(int32_t start, int32_t length) +{ + charStart = start; + charLimit = start + length; + + reset(); +} + +inline void ScriptRun::reset(const UChar chars[], int32_t start, int32_t length) +{ + charArray = chars; + + reset(start, length); +} + + +#endif diff --git a/intl/icu/source/extra/scrptrun/srtest.cpp b/intl/icu/source/extra/scrptrun/srtest.cpp new file mode 100644 index 000000000..d4ec8506d --- /dev/null +++ b/intl/icu/source/extra/scrptrun/srtest.cpp @@ -0,0 +1,41 @@ +// Copyright (C) 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html +/* + * %W% %E% + * + * (C) Copyright IBM Corp. 2001-2016 - All Rights Reserved + * + */ + +#include "unicode/utypes.h" +#include "unicode/uscript.h" + +#include "cmemory.h" +#include "scrptrun.h" + +#include + +UChar testChars[] = { + 0x0020, 0x0946, 0x0939, 0x093F, 0x0928, 0x094D, 0x0926, 0x0940, 0x0020, + 0x0627, 0x0644, 0x0639, 0x0631, 0x0628, 0x064A, 0x0629, 0x0020, + 0x0420, 0x0443, 0x0441, 0x0441, 0x043A, 0x0438, 0x0439, 0x0020, + 'E', 'n', 'g', 'l', 'i', 's', 'h', 0x0020, + 0x6F22, 0x5B75, 0x3068, 0x3072, 0x3089, 0x304C, 0x306A, 0x3068, + 0x30AB, 0x30BF, 0x30AB, 0x30CA, + 0xD801, 0xDC00, 0xD801, 0xDC01, 0xD801, 0xDC02, 0xD801, 0xDC03 +}; + +int32_t testLength = UPRV_LENGTHOF(testChars); + +void main() +{ + ScriptRun scriptRun(testChars, 0, testLength); + + while (scriptRun.next()) { + int32_t start = scriptRun.getScriptStart(); + int32_t end = scriptRun.getScriptEnd(); + UScriptCode code = scriptRun.getScriptCode(); + + printf("Script '%s' from %d to %d.\n", uscript_getName(code), start, end); + } +} diff --git a/intl/icu/source/extra/scrptrun/srtest.dsp b/intl/icu/source/extra/scrptrun/srtest.dsp new file mode 100644 index 000000000..f5e23dfdb --- /dev/null +++ b/intl/icu/source/extra/scrptrun/srtest.dsp @@ -0,0 +1,110 @@ +# Microsoft Developer Studio Project File - Name="srtest" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=srtest - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "srtest.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "srtest.mak" CFG="srtest - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "srtest - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "srtest - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "srtest - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 ..\..\..\lib\icuuc.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "srtest - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ..\..\..\lib\icuucd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "srtest - Win32 Release" +# Name "srtest - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\scrptrun.cpp +# End Source File +# Begin Source File + +SOURCE=.\srtest.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\scrptrun.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/intl/icu/source/extra/scrptrun/srtest.dsw b/intl/icu/source/extra/scrptrun/srtest.dsw new file mode 100644 index 000000000..6609c4f20 --- /dev/null +++ b/intl/icu/source/extra/scrptrun/srtest.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "srtest"=.\srtest.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/intl/icu/source/extra/uconv/Makefile.in b/intl/icu/source/extra/uconv/Makefile.in new file mode 100644 index 000000000..7d0af0420 --- /dev/null +++ b/intl/icu/source/extra/uconv/Makefile.in @@ -0,0 +1,182 @@ +## Copyright (C) 2016 and later: Unicode, Inc. and others. +## License & terms of use: http://www.unicode.org/copyright.html +## ****************************************************************************** +## * +## * Copyright (C) 1999-2014, International Business Machines +## * Corporation and others. All Rights Reserved. +## * +## ******************************************************************************* +## Makefile.in for ICU - uconv +## Steven R. Loomis + +## Set the following to dll or static or common.. +UCONVMSG_MODE=static +############################################################## + +srcdir=@srcdir@ +top_srcdir=@top_srcdir@ + +top_builddir = ../.. +subdir = extra/uconv + +include $(top_builddir)/icudefs.mk + +MSGNAME=uconvmsg + +# RESSRC comes from resfiles.mk +FILESEPCHAR=/ +include $(srcdir)/resfiles.mk + +RESDIR=$(MSGNAME) +RESFILES=$(RESSRC:$(RESOURCESDIR)$(FILESEPCHAR)%.txt=$(RESDIR)/%.res) + +## + +TARGET_STUB_NAME = uconv + +SECTION = 1 + +ALL_MAN_FILES = $(TARGET_STUB_NAME).$(SECTION) + +## Extra files to remove for 'make clean' +CLEANFILES = *~ $(DEPS) $(ALL_MAN_FILES) + +## Target information +TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT) + +CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(srcdir)/../toolutil +CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit +LIBS = $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M) + +ifeq ($(PKGDATA_OPTS),) +PKGDATA_OPTS = -O pkgdata.inc +endif + +## generic settings for data - common. +PKGMODE=common +INSTALLTO=$(DESTDIR)$(ICUDATA_DIR) +UCONVMSG_LIB=package-resfiles + +## Static mode +ifeq ($(UCONVMSG_MODE),static) +DEFS += -DUCONVMSG_LINK=$(MSGNAME) +UCONVMSG_LIB = $(RESDIR)/$(LIBPREFIX)$(STATIC_PREFIX_WHEN_USED)$(MSGNAME).$(A) +LIBS += $(UCONVMSG_LIB) +PKGMODE=static +INSTALLTO=$(libdir) +endif + +## DLL mode +ifeq ($(UCONVMSG_MODE),dll) +DEFS += -DUCONVMSG_LINK=$(MSGNAME) +LIBS += -L$(RESDIR) -l$(MSGNAME) +PKGMODE=dll +INSTALLTO=$(libdir) +endif + +OBJECTS = uconv.o uwmsg.o + +DEPS = $(OBJECTS:.o=.d) + +## List of phony targets +.PHONY : all all-local install install-local clean clean-local \ +distclean resclean distclean-local dist dist-local \ +check check-local build-dir package-resfiles install-resfiles install-man + +## Clear suffix list +.SUFFIXES : + +## List of standard targets +all: all-local + +install: install-local +clean: clean-local +distclean : distclean-local +dist: dist-local +check: check-local + +all-local: build-dir $(TARGET) $(ALL_MAN_FILES) + +install-local: all-local install-target install-resfiles install-man + +install-target: all-local + $(MKINSTALLDIRS) $(DESTDIR)$(bindir) + $(INSTALL) $(TARGET) $(DESTDIR)$(bindir) + +dist-local: + +clean-local: resclean + test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES) $(RESFILES) + $(RMV) $(OBJECTS) $(TARGET) + +resclean: + @#-$(INVOKE) $(TOOLBINDIR)/pkgdata --clean -p $(RESDIR) -O pkgdata.inc -m $(PKGMODE) -d $(RESDIR) -T $(RESDIR) $(RESDIR)/$(RESDIR).lst + $(RMV) pkgdata.inc $(RESDIR) + +distclean-local: clean-local + $(RMV) Makefile $(DEPS) + +check-local: $(TARGET) +ifneq (,$(filter $(PKGDATA_MODE),files common)) + @echo "Currently, pkgdata is in \"$(PKGDATA_MODE)\" mode." + @echo "To test uconv, run this manually after installing ICU:" + @echo "\"./$(TARGET) -f ibm-37 $(srcdir)/samples/ibm-37-test.txt\"" +else + $(INVOKE) ./$(TARGET) -f ibm-37 $(srcdir)/samples/ibm-37-test.txt +endif + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +pkgdata.inc: pkgdataMakefile + $(MAKE) -f pkgdataMakefile + +build-dir: + @$(MKINSTALLDIRS) $(RESDIR) + +pkgdataMakefile: + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(TARGET_STUB_NAME).$(SECTION): $(srcdir)/$(TARGET_STUB_NAME).$(SECTION).in pkgdata.inc + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$(TARGET_STUB_NAME).$(SECTION) CONFIG_HEADERS= $(SHELL) ./config.status + +$(TARGET) : $(OBJECTS) $(UCONVMSG_LIB) + $(LINK.cc) $(OUTOPT)$@ $(OBJECTS) $(LIBS) + $(POST_BUILD_STEP) + +# The | is an order-only prerequisite. This helps when the -j option is used, +# and we don't want the files to be built before the directories are built. +ifneq ($(filter order-only,$(.FEATURES)),) +$(RESFILES) $(RESDIR)/$(RESDIR).lst: | build-dir +endif + +$(UCONVMSG_LIB): $(RESFILES) $(RESDIR)/$(RESDIR).lst pkgdata.inc + $(INVOKE) $(PKGDATA_INVOKE_OPTS) $(TOOLBINDIR)/pkgdata -p $(MSGNAME) $(PKGDATA_OPTS) -m $(PKGMODE) -s $(RESDIR) -d $(RESDIR) -T $(RESDIR) $(RESDIR)/$(RESDIR).lst + +$(RESDIR)/$(RESDIR).lst: Makefile $(srcdir)/resfiles.mk + @-$(RMV) $@ + @for file in $(RESFILES:$(RESDIR)/%.res=%.res); do \ + echo $$file >> $@; \ + done; + +# no install for static mode +ifneq ($(UCONVMSG_MODE),static) +install-resfiles: $(RESFILES) $(RESDIR)/$(RESDIR).lst pkgdata.inc + $(MKINSTALLDIRS) $(DESTDIR)$(ICUDATA_DIR) + $(INVOKE) $(TOOLBINDIR)/pkgdata -p $(RESDIR) -O pkgdata.inc -m $(PKGMODE) -d $(RESDIR) -I $(INSTALLTO) -T $(RESDIR) $(RESDIR)/$(RESDIR).lst +else +install-resfiles: +endif + +$(MSGNAME)/%.res: $(srcdir)/$(RESOURCESDIR)/%.txt + $(INVOKE) $(TOOLBINDIR)/genrb -e UTF-8 -s $(^D) -d $(@D) $(^F) + +install-man: $(ALL_MAN_FILES) + $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION) + $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION) + + + diff --git a/intl/icu/source/extra/uconv/README b/intl/icu/source/extra/uconv/README new file mode 100644 index 000000000..5f0a84261 --- /dev/null +++ b/intl/icu/source/extra/uconv/README @@ -0,0 +1,17 @@ +Copyright (C) 2016 and later: Unicode, Inc. and others. +License & terms of use: http://www.unicode.org/copyright.html +Copyright (c) 2002, International Business Machines Corporation and others. All Rights Reserved. + +The uconv command is an iconv(1)-like conversion / transcoding +program. Please check its manual page, or run uconv -h, for help. + +Help, as well as error messages, are displayed through the use of a +resource bundle. Please contact Steven Loomis if you +want to offer a translation of these messages for a particular locale. + +uconv was originally written and contributed to icuapps by Jonas Utterström +, and offered simple conversion and +a way to know which encodings were available. It has since then be +moved to the main ICU distribution and converted to the C conversion +API, and is maintained by Yves Arrouye who seems +to always be looking for one more feature or option to add to the tool. diff --git a/intl/icu/source/extra/uconv/makedata.mak b/intl/icu/source/extra/uconv/makedata.mak new file mode 100644 index 000000000..52d7c4930 --- /dev/null +++ b/intl/icu/source/extra/uconv/makedata.mak @@ -0,0 +1,108 @@ +# Copyright (C) 2016 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html +#********************************************************************** +#* Copyright (C) 1999-2008, International Business Machines Corporation +#* and others. All Rights Reserved. +#********************************************************************** +# nmake file for creating data files on win32 +# invoke with +# nmake /f makedata.mak icup= [Debug|Release] +# +# 12/10/1999 weiv Created + +#If no config, we default to debug +!IF "$(CFG)" == "" +CFG=Debug +!MESSAGE No configuration specified. Defaulting to common - Win32 Debug. +!ENDIF + +#Here we test if a valid configuration is given +!IF "$(CFG)" != "Release" && "$(CFG)" != "release" && "$(CFG)" != "Debug" && "$(CFG)" != "debug" && "$(CFG)" != "x86\Release" && "$(CFG)" != "x86\Debug" && "$(CFG)" != "x64\Release" && "$(CFG)" != "x64\Debug" +!MESSAGE Invalid configuration "$(CFG)" specified. +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "makedata.mak" CFG="Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "Release" +!MESSAGE "Debug" +!MESSAGE +!ERROR An invalid configuration is specified. +!ENDIF + +#Let's see if user has given us a path to ICU +#This could be found according to the path to makefile, but for now it is this way +!IF "$(ICUP)"=="" +!ERROR Can't find path! +!ENDIF +!MESSAGE ICU path is $(ICUP) +RESNAME=uconvmsg +RESDIR=resources +RESFILES=resfiles.mk +ICUDATA=$(ICUP)\data + +DLL_OUTPUT=.\$(CFG) +# set the following to 'static' or 'dll' depending +PKGMODE=static + +ICD=$(ICUDATA)^\ +DATA_PATH=$(ICUP)\data^\ + +!IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug" +ICUTOOLS=$(ICUP)\bin64 +PATH = $(ICUP)\bin64;$(PATH) +!ELSE +ICUTOOLS=$(ICUP)\bin +PATH = $(ICUP)\bin;$(PATH) +!ENDIF + +# Suffixes for data files +.SUFFIXES : .ucm .cnv .dll .dat .res .txt .c + +# We're including a list of resource files. +FILESEPCHAR= + +!IF EXISTS("$(RESFILES)") +!INCLUDE "$(RESFILES)" +!ELSE +!ERROR ERROR: cannot find "$(RESFILES)" +!ENDIF +RES_FILES = $(RESSRC:.txt=.res) +RB_FILES = resources\$(RES_FILES:.res =.res resources\) +RESOURCESDIR= + +# This target should build all the data files +!IF "$(PKGMODE)" == "dll" +OUTPUT = "$(DLL_OUTPUT)\$(RESNAME).dll" +!ELSE +OUTPUT = "$(DLL_OUTPUT)\$(RESNAME).lib" +!ENDIF + +ALL : $(OUTPUT) + @echo All targets are up to date (mode $(PKGMODE)) + + +# invoke pkgdata - static +"$(DLL_OUTPUT)\$(RESNAME).lib" : $(RB_FILES) $(RESFILES) + @echo Building $(RESNAME).lib + @"$(ICUTOOLS)\pkgdata" -f -v -m static -c -p $(RESNAME) -d "$(DLL_OUTPUT)" -s "$(RESDIR)" <> $(OUTPUTFILE) + @echo SO=$(SO) >> $(OUTPUTFILE) + @echo SOBJ=$(SOBJ) >> $(OUTPUTFILE) + @echo A=$(A) >> $(OUTPUTFILE) + @echo LIBPREFIX=$(LIBPREFIX)$(STATIC_PREFIX_WHEN_USED) >> $(OUTPUTFILE) + @echo LIB_EXT_ORDER=$(FINAL_SO_TARGET) >> $(OUTPUTFILE) + @echo COMPILE="$(COMPILE.c)" >> $(OUTPUTFILE) + @echo LIBFLAGS="-I$(top_srcdir)/common -I$(top_builddir)/common $(SHAREDLIBCPPFLAGS) $(SHAREDLIBCFLAGS)" >> $(OUTPUTFILE) + @echo GENLIB="$(SHLIB.c)" >> $(OUTPUTFILE) + @echo LDICUDTFLAGS=$(LDFLAGSICUDT) >> $(OUTPUTFILE) + @echo LD_SONAME=$(LD_SONAME) >> $(OUTPUTFILE) + @echo RPATH_FLAGS=$(RPATH_FLAGS) >> $(OUTPUTFILE) + @echo BIR_LDFLAGS=$(BIR_LDFLAGS) >> $(OUTPUTFILE) + @echo AR=$(AR) >> $(OUTPUTFILE) + @echo ARFLAGS=$(ARFLAGS) >> $(OUTPUTFILE) + @echo RANLIB=$(RANLIB) >> $(OUTPUTFILE) + @echo INSTALL_CMD=$(INSTALL) >> $(OUTPUTFILE) + +clean : + $(RMV) $(OUTPUTFILE) + diff --git a/intl/icu/source/extra/uconv/resfiles.mk b/intl/icu/source/extra/uconv/resfiles.mk new file mode 100644 index 000000000..2117127ea --- /dev/null +++ b/intl/icu/source/extra/uconv/resfiles.mk @@ -0,0 +1,11 @@ +# Copyright (C) 2016 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html +# Copyright (c) 2000-2002 IBM, Inc. and Others. +# A small makefile containing the list of resource bundles +# to include in uconv. + +# The variable FILESEPCHAR is defined by the caller to be +# the character separating components of a filename. + +RESOURCESDIR = resources +RESSRC = $(RESOURCESDIR)$(FILESEPCHAR)root.txt $(RESOURCESDIR)$(FILESEPCHAR)fr.txt diff --git a/intl/icu/source/extra/uconv/resources/fr.txt b/intl/icu/source/extra/uconv/resources/fr.txt new file mode 100644 index 000000000..180fb9b67 --- /dev/null +++ b/intl/icu/source/extra/uconv/resources/fr.txt @@ -0,0 +1,106 @@ +// -*- Coding: utf-8; -*- [all uconv resource files] +// Copyright (C) 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html +// +// Copyright (c) 2000-2004 IBM, Inc. and Others. +// +// Root translation file for uconv messages. +// So you want to translate this file??? Great! +// 1. copy it to a new name [ex: se.txt] +// +// 2. You might wish to comment out ALL lines, and then uncomment them +// as you add translations. That way, you don't inadvertently mark +// an untranslated English (or whatever) string as already +// translated. The base translation might change! +// +// 3. These files are in UTF-8 format (even though root uses only +// ASCII) +// +// 4. Make note of the location of {0}, {1}, etc.. they are taken from +// arguments to u_wmsg() in order.. +// +// 5. Add se.txt to RESSRC= in resfiles.mk and to the project file on +// the Windows side. +// +// 6. Send it in to srl@jtcsv.com or ask on the ICU mailing list! thanks! + +fr +{ + // uconv errors + + lcUsageWord { "usage" } + ucUsageWord { "Usage" } + usage { + "{0}: {1} " + "[ -h, -?, --help ] [ -V, --version ] [ -s, --silent ] [ -v, --verbose ] " + "[ -l, --list | --list-code code | --default-code | -L, --list-transliterators ] " + "[ --canon ] [ -x translitération ] " + "[ --to-callback callback | -c ] [ --from-callback callback | -i ] [ --callback callback ] " + "[ --fallback | --no-fallback ] " + "[ -b, --block-size taille ] " + "[ -f, --from-code code ] [ -t, --to-code code ] " + "[ --add-signature ] [ --remove-signature ] " + "[ -o, --output fichier ] " + "[ fichier ... ]\n" + } + + // TODO there is some English in here + help { "Options : -h, --help affiche ce message\n" + " -V, --version affiche la version du programme\n" +" -s, --silent supprime les messages\n" +" -v, --verbose affiche les progrès\n" +" -l, --list liste tous les encodages disponibles\n" +" --list-code code liste juste l''encodage donné\n" +" --default-code liste juste l''encodage par défaut\n" +" -L, --list-transliterators liste tous les translitérateurs\n" +" --canon affiche la liste dans le format de cnvrtrs.txt(5)\n" +" -x translitération passe le texte à travers translitération\n" +" --to-callback callback utilise callback sur l''encodage cible\n" +" -c omet les caractères invalides de la sortie\n" +" --from-callback callback utilise callback sur l''encodage source\n" +" -i omet les séquences invalides de l''entrée\n" +" --callback callback utilise callback sur les deux encodages\n" +" -b, --block-size taille lit des blocks de taille octets (défaut : 4096)\n" +" --fallback utilise les correspondances de secours\n" +" --no-fallback n''utilise pas les correspondances de secours\n" +" -f, --from-code code fixe l''encodage d''origine\n" +" -t, --to-code code fixe l''encodage de destination\n" +" --add-signature add a U+FEFF Unicode signature character (BOM)\n" +" --remove-signature remove a U+FEFF Unicode signature character (BOM)\n" +" -o, --output fichier écrit la sortie dans fichier\n" +"\n" +"Callbacks :" } + + cantGetNames { "Ne peux obtenir la liste des encodages.\n" } // 0: err + cantGetTag { "Ne peux obtenir le nom de l'étiquette standard : {0}.\n" } // 0: err + + noSuchCodeset { "Ne peux trouver l''encodage : {0}.\n" } // 0: name of the encoding + noFromCodeset { "L''encodage d''origine n''a pas été fixé (utilisez -f).\n" } + noToCodeset { "L''encodage de destination n''a pas été fixé (utilisez -t).\n" } + + badBlockSize { "Taille de bloc incorrecte : {0}.\n" } // 0: size of the block + + cantSetInBinMode { "Ne peux mettre l''entrée standard en mode binaire.\n" } + cantSetOutBinMode { "Ne peux mettre la sortie standard en mode binaire.\n" } + + cantOpenFromCodeset { "Ne peux ouvrir de convertisseur pour l''encodage d''origine {0} : {1}.\n" } // 0:set, 1: err + cantOpenToCodeset { "Ne peux ouvrir de convertisseur pour l''encodage de destination {0} : {1}.\n" } // 0:set, 1: err + + cantCreateTranslit { "Ne peux créer la translitération \"{0}\": {1}.\n" } // 0:set, 1: err + cantCreateTranslitParseErr { "Ne peux créer la translitération \"{0}\": {1}, ligne {2}, position {3}.\n" } // 0: set, 1: err, 2: line, 3: offset + + cantSetCallback { "Ne peux fixer le callack de transcodage : {0}.\n" } // 0: err + + unknownCallback { "Callback inconnu : {0}.\n" } // 0: callback name + + cantOpenInputF { "Ne peux ouvrir le fichier d''entrée {0} : {1}.\n" } // 0: file, 1: strerror [OS error string] + cantCreateOutputF { "Ne peux créer le fichier de sortie {0} : {1}.\n" } // 0: file, 1: strerror [OS error string] + + cantWrite { "Le texte converti ne peut pas être écrit : {0}.\n" } // 0: OS error string + cantRead { "Erreur de lecture du fichier d''entrée : {0}.\n" } // 0: OS error string + + // TODO retranslate the problemCvt... messages because their format changed + //problemCvtToU { "La conversion d''Unicode vers l''encodage de destination a échoué à la position {0} : {1}.\n" } // 0: position, 1: err + //problemCvtFromU { "La conversion de l''encodage original vers Unicode a échoué à la position {0} : {1}.\n" } // 0: position, 1: err + //problemCvtFromUOut { "La conversion de l''encodage original vers Unicode a échoué à la position {0} de la sortie : {1}.\n" } // 0: position, 1: err +} diff --git a/intl/icu/source/extra/uconv/resources/root.txt b/intl/icu/source/extra/uconv/resources/root.txt new file mode 100644 index 000000000..9b241e08c --- /dev/null +++ b/intl/icu/source/extra/uconv/resources/root.txt @@ -0,0 +1,130 @@ +// -*- Coding: utf-8; -*- [all uconv resource files] +// Copyright (C) 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html +// +// Copyright (c) 2000-2004 IBM, Inc. and Others. +// +// Root translation file for uconv messages. +// So you want to translate this file??? Great! +// 1. copy it to a new name [ex: se.txt] +// +// 2. You might wish to comment out ALL lines, and then uncomment them +// as you add translations. That way, you don't inadvertently mark +// an untranslated English (or whatever) string as already +// translated. The base translation might change! +// +// 3. These files are in UTF-8 format (even though root uses only +// ASCII) +// +// 4. Make note of the location of {0}, {1}, etc.. they are taken from +// arguments to u_wmsg() in order.. +// +// 5. Add se.txt to RESSRC= in resfiles.mk and to the project file on +// the Windows side. +// +// 6. Send it in to srl@jtcsv.com or ask on the ICU mailing list! thanks! + +root +{ + // uconv errors + + lcUsageWord { "usage" } + ucUsageWord { "Usage" } + usage { + "{0}: {1} " + "[ -h, -?, --help ] [ -V, --version ] [ -s, --silent ] [ -v, --verbose ] " + "[ -l, --list | --list-code code | --default-code | -L, --list-transliterators ] " + "[ --canon ] [ -x transliteration ] " + "[ --to-callback callback | -c ] [ --from-callback callback | -i ] [ --callback callback ] " + "[ --fallback | --no-fallback ] " + "[ -b, --block-size size ] " + "[ -f, --from-code code ] [ -t, --to-code code ] " + "[ --add-signature ] [ --remove-signature ] " + "[ -o, --output file ] " + "[ file ... ]\n" } + + help { "Options: -h, --help print this message\n" + " -V, --version print the program version\n" + " -s, --silent suppress messages\n" + " -v, --verbose display progress information\n" + " -l, --list list all available encodings\n" + " --list-code code list only the given encoding\n" + " --default-code list only the default encoding\n" + " -L, --list-transliterators list all available transliterators\n" + " --canon print list in cnvrtrs.txt(5) format\n" + " -x transliteration run everything through transliteration\n" + " --to-callback callback use callback on destination encoding\n" + " -c omit invalid characters from the output\n" + " --from-callback callback use callback on original encoding\n" + " -i ignore invalid sequences in the input\n" + " --callback callback use callback on both encodings\n" + " -b, --block-size size read size bytes blocks (default: 4096)\n" + " --fallback use fallback mapping\n" + " --no-fallback do not use fallback mapping\n" + " -f, --from-code code set the original encoding\n" + " -t, --to-code code set the destination encoding\n" + " --add-signature add a U+FEFF Unicode signature character (BOM)\n" + " --remove-signature remove a U+FEFF Unicode signature character (BOM)\n" + " -o, --output file write output to file\n" + "\n" + "Callbacks:" + } + + cantGetNames { "Couldn''t get available converter names.\n" } // 0: err + cantGetTag { "Couldn''t get standard tag name: {0}.\n" } // 0: err + + noSuchCodeset { "Couldn''t find encoding: {0}.\n" } // 0: name of the encoding + noFromCodeset { "No original encoding set (use -f).\n" } + noToCodeset { "No destination encoding set (use -t).\n" } + + badBlockSize { "Bad block size: {0}.\n" } // 0: size of the block + + cantSetInBinMode { "Couldn't set standard input to binary mode." } + cantSetOutBinMode { "Couldn't set standard output to binary mode." } + + cantOpenFromCodeset { "Couldn''t open converter for original encoding {0}: {1}.\n" } // 0:set, 1: err + cantOpenToCodeset { "Couldn''t open converteur for destination encoding {0}: {1}.\n" } // 0: set, 1: err + + cantCreateTranslit { "Couldn''t create transliteration \"{0}\": {1}.\n" } // 0: set, 1: err + cantCreateTranslitParseErr { "Couldn''t create transliteration \"{0}\": {1}, line {2}, offset {3}.\n" } // 0: set, 1: err, 2: line, 3: offset + + cantSetCallback { "Couldn''t set transcoding callback: {0}.\n" } // 0: err + + unknownCallback { "Unknown callback: {0}.\n" } // 0: callback name + + cantOpenInputF { "Couldn''t open input file {0}: {1}.\n" } // 0: file, 1: strerror [OS error string] + cantCreateOutputF { "Couldn''t create output file {0}: {1}.\n" } // 0: file, 1: strerror [OS error string] + + cantWrite { "The converted text couldn't be written: {0}.\n" } // 0: OS error string + cantRead { "Error reading from input file: {0}.\n" } // 0: OS error string + + problemCvtToU { "Conversion to Unicode from codepage failed at input byte position {0}. Bytes: {1} Error: {2}\n" } // 0: position, 1: bytes, 2: err + problemCvtFromU { "Conversion from Unicode to codepage failed at input byte position {0}. Unicode: {1} Error: {2}\n"} // 0: position, 1: Unicode, 2: err + problemCvtFromUOut { "Conversion from Unicode to codepage failed at output byte position {0}. Unicode: {1} Error: {2}\n"} // 0: position, 1: Unicode, 2: err + +// ICU errors - used by u_wmsg_errorName() + + U_USING_FALLBACK_ERROR { "Using fallback data" } + U_USING_DEFAULT_ERROR { "Using default data" } + U_ZERO_ERROR { "No error has occured" } + U_ILLEGAL_ARGUMENT_ERROR { "Illegal argument" } + U_MISSING_RESOURCE_ERROR { "A resource was missing" } + U_INVALID_FORMAT_ERROR { "Invalid format" } + U_FILE_ACCESS_ERROR { "Problem accessing that file/object" } + U_INTERNAL_PROGRAM_ERROR { "Internal program error" } + U_MESSAGE_PARSE_ERROR { "Parse error on message format" } + U_MEMORY_ALLOCATION_ERROR { "Out of memory" } + U_INDEX_OUTOFBOUNDS_ERROR { "An index was out-of-bounds" } + U_PARSE_ERROR { "Parse error" } + U_INVALID_CHAR_FOUND { "Invalid character found" } + U_TRUNCATED_CHAR_FOUND { "Truncated character found" } + U_ILLEGAL_CHAR_FOUND { "Illegal character found" } + U_INVALID_TABLE_FORMAT { "Invalid table data format" } + U_INVALID_TABLE_FILE { "Invalid table data file" } + U_BUFFER_OVERFLOW_ERROR { "Buffer overflow" } + U_UNSUPPORTED_ERROR { "A feature was unsupported" } + U_RESOURCE_TYPE_MISMATCH { "Resource type mismatch" } + U_ILLEGAL_ESCAPE_SEQUENCE { "Illegal escape sequence found" } + U_UNSUPPORTED_ESCAPE_SEQUENCE {"Unsupported escape sequence found" } +} + diff --git a/intl/icu/source/extra/uconv/samples/ISO-8859-2.txt b/intl/icu/source/extra/uconv/samples/ISO-8859-2.txt new file mode 100644 index 000000000..61e8d712b --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/ISO-8859-2.txt @@ -0,0 +1,2 @@ +Dobar dan! Kako ste? Ja sam Marina +Dodigoviæ. Kako se Vi zovete? diff --git a/intl/icu/source/extra/uconv/samples/ISO-8859-3.txt b/intl/icu/source/extra/uconv/samples/ISO-8859-3.txt new file mode 100644 index 000000000..b6ba7937f --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/ISO-8859-3.txt @@ -0,0 +1,6 @@ +Yukarda mavi gök, asa»¹da ya»¹z yer yarat¹ld¹kta; ikisinin aras¹nda insan +o»lu yarat¹lm¹º. ©nsan o»ullar¹ üzerine ecdad¹m Bum¹n hakan, ©stemi hakan +tahta oturmuº; oturarak Türk milletinin ülkesini, türesini, idare edivermiº, +tanzim edivermis. Dört taraf hep düºman imiº. Asker sevk edip dört taraftaki +kavmi hep (itaati alt¹na) alm¹º hep muti k¹lm¹º. Baºl¹lara baº e»dirmiº, +dizlilere diz çöktürmüº. diff --git a/intl/icu/source/extra/uconv/samples/danish-ISO-8859-1.txt b/intl/icu/source/extra/uconv/samples/danish-ISO-8859-1.txt new file mode 100644 index 000000000..95e57d6c7 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/danish-ISO-8859-1.txt @@ -0,0 +1,18 @@ + Foto ______ det formodede fødehus, hjørnet ______ Hans Jensensstræde og Bangs Boder. + (H. C. Andersens Hus, Odense). + +BARNDOMSOMGIVELSERNE + Skønt H. C. Andersens barndomsomgivelser var meget fattige, blev de i hans rige fantasi + solbeskinnede. + Der findes en mandtalsliste fra nogle få år ______ H. C. Andersens fødsel. Den er ______ 1801 + og den giver klare oplysninger om, hvor mange der boede ______ Odense og hvad de var + beskæftigede ______. Den omfatter 1199 husstande. Hvis man fordeler disse ______ erhverv, + får man 102 embeds- og bestillingsmænd, 26 officerer, 12 der beskæftiger sig med + immaterielle erhverv, 81 som lever ______ handel, 36 værtshusholdere, 460 håndværkere, 39 + avlsmænd og urtemænd, 121 soldater, 97 daglejere, 139 enlige kvinder og + almissemedlemmer, 29 pensionister og rentenydere. + H. C. Andersens forældre tilhørte samfundets laveste lag. Faderen var friskomager, og + når han meldte sig ______ militærtjeneste ______ Napoleons side, har det nok ikke så meget været + idealisme som praktisk økonomi. For at sikre sig en soldats værgeløn. Han kom ikke + længere end ______ Holsten. Han fik høj feber og måtte sendes hjem. Da han kom hjem, + forværredes sygdommen og han døde. diff --git a/intl/icu/source/extra/uconv/samples/eucJP.txt b/intl/icu/source/extra/uconv/samples/eucJP.txt new file mode 100644 index 000000000..680efb1d1 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/eucJP.txt @@ -0,0 +1,37 @@ +¥¦¥¤¥ó¥«¥ê¥Ã¥¹¤ÎÆüËܸì +¡¡ ¡Ö¥æ¡¼¥¶¡¼¥Õ¥ì¥ó¥É¥ê¡×¡Ã¤È¡Ã¸Æ¤Ð¤ì¤ë¡Ã +¡¡¡¡¤ê¤æ¤¦¤Ï¡¢¤´¤¯ ¡ÃÉáÄ̤Ρÿͤ¬¤´¤¯¡Ã +¡¡¡¡´ØÃ±¤Ë ¡Ã»ÈÍÑ ¡ÃÊýË¡¤ò¡Ã¥Þ¥¹¥¿¡¼¡Ã¤Ç¤­¡¢¡Ã +¡¡¡¡ËèÆü¤Î¡Ã¥¿¥¤¥× ¡Ã ¤Î ¡Ã»Å»ö¤Ë¤¹¤° ¡Ã +¡¡¡¡ÌòΩ¤Æ¤ë¤³¤È¤¬¤Ç¤­¤ë¤³¤È¤«¤é¤­¤Æ¤¤¤ë¡£¡Ã +¡¡¡¡¤è¤Ð¤ì¤ë¡¡¡¡¡¡¡¡?¡¡¡¡¡¡ ¡¡¸Æ¤Ð¤ì¤ë +¡¡¡¡¤ê¤å¤¦¤Ï¡¢¤´¤¯¡¡?¡¡¡¡¡¡¡¡ Íýͳ¤Ï¡¢¤´¤¯ +¡¡¡¡¤Õ¤Ä¤¦¤Î¡¡¡¡¡¡¡¡?¡¡¡¡¡¡¡¡ÉáÄ̤Π+¡¡¡¡¤Ò¤È¤¬¤´¤¯¡¡¡¡¡¡?¡¡¡¡¡¡¡¡¿Í¤¬¤´¤¯ +¡¡¡¡¤«¤ó¤¿¤ó¤Ë¡¡¡¡¡¡?¡¡¡¡¡¡¡¡´Êñ¤Ë +¡¡¡¡¤·¤è¤¦¡¡¡¡¡¡¡¡¡¡?¡¡¡¡¡¡¡¡»ÈÍÑ +¡¡¡¡¤Û¤¦¤Û¤¦¤ò¡¡¡¡¡¡?¡¡¡¡¡¡¡¡ÊýË¡¤ò +¡¡¡¡¤Þ¤¤¤Ë¤Á¤Î¡¡¡¡¡¡?¡¡¡¡¡¡¡¡ËèÆü¤Î +¡¡¡¡¤·¤´¤È¤Ë¤¹¤°¡¡¡¡?¡¡¡¡¡¡¡¡»Å»ö¤Ë¤¹¤° +¡¡¡¡¤ä¤¯¤À¤Æ¤ë¤³¤È¤¬¤Ç¤­¤ë¤³¤È¤«¤é¤­¤Æ¤¤¤ë¡£? +¡¡¡¡ÌòΩ¤Æ¤ë¤³¤È¤¬¤Ç¤­¤ë¤³¤È¤«¤é¤­¤Æ¤¤¤ë¡£ +¤¢¡¡¤¤¡¡¤¦¡¡¤¨¡¡¤ª¡¡ +¤¡¡¡¤£¡¡¤¥¡¡¤§¡¡¤© +¤«¡¡¤­¡¡¤¯¡¡¤±¡¡¤³¡¡¡¡¤­¤ã ¤­¤å¡¡¤­¤ç +¤µ¡¡¤·¡¡¤¹¡¡¤»¡¡¤½¡¡¡¡¤·¤ã¡¡ ¤·¤å ¤·¤§¡¡¤·¤ç +¤¿¡¡¤Á¡¡¤Ä¡¡¤Æ¡¡¤È¡¡¡¡ ¤Á¤ã¡¡¤Á¤å¡¡¤Á¤§ ¤Á¤ç +¤Ê¡¡¤Ë¡¡¤Ì¡¡¤Í¡¡¤Î¡¡¡¡ ¤Ë¤ã¡¡ ¤Ë¤å¡¡¤Ë¤ç +¤Ï¡¡¤Ò¡¡¤Õ¡¡¤Ø¡¡¤Û¡¡¡¡ ¤Ò¤ã ¡¡¤Ò¤å ¤Ò¤ç + ¤Õ¤¡¡¡¤Õ¤£¡¡¤Õ¤§¡¡¤Õ¤© +¤Þ¡¡¤ß¡¡¤à¡¡¤á¡¡¤â¡¡¡¡ ¤ß¤ã¡¡¡¡¤ß¤å¡¡¡¡¤ß¤ç +¤ä¡¡(¤¤)¡¡¤æ (¤¨) ¤è¡¡¡¡ ¤ã¡¡¡¡¡¡¤å¡¡¡¡¡¡¤ç +¤é¡¡¤ê¡¡¤ë¡¡¤ì¡¡¤í¡¡¡¡¤ê¤ã ¤ê¤å¡¡ ¤ê¤ç +¤ï¡¡¤ð (¤¦) ¤ñ¡¡ ¤ò ¤î ¡¡¥ð¡¡¡¡¡¡¥ñ +¤ó ? ¤Ã ¥«¡¡¥± +¤¬¡¡¤®¡¡¤°¡¡¤²¡¡¤´¡¡¡¡ ¤®¤ã¡¡¤®¤å¡¡¤®¤ç + ¤°¤î¡¡¤°¤§ +¤¶¡¡¤¸¡¡¤º¡¡¤¼¡¡¤¾¡¡¡¡¤¸¤ã¡¡ ¤¸¤å¡¡ ¤¸¤§¡¡¤¸¤ç +¤À¡¡¤Â¡¡¤Å¡¡¤Ç¡¡¤É¡¡¡¡¤Â¤ã¡¡¤Â¤£¡¡ ¤Â¤å ¤Â¤§¡¡¤Â¤© +¤Ð¡¡¤Ó¡¡¤Ö¡¡¤Ù¡¡¤Ü¡¡¡¡¡¡¤Ó¤ã¡¡¤Ó¤å¡¡¤Ó¤ç +¤Ñ¡¡¤Ô¡¡¤×¡¡¤Ú¡¡¤Ý¡¡¡¡¡¡¤Ô¤ã¡¡¤Ô¤å¡¡¤Ô¤ç +¥ï¡¡¥¦¥£ ¥¦¡¡¥¦¥§ ¥¦¥©¡¡¥ô¥¡¡¡¥ô¥£¡¡¥ô¡¡¥ô¥§¡¡¥ô¥© diff --git a/intl/icu/source/extra/uconv/samples/hangul-eucKR.txt b/intl/icu/source/extra/uconv/samples/hangul-eucKR.txt new file mode 100644 index 000000000..90a0393b7 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/hangul-eucKR.txt @@ -0,0 +1,2 @@ +µµ¼­°ü +Çѱ¹ diff --git a/intl/icu/source/extra/uconv/samples/hania-eucKR.txt b/intl/icu/source/extra/uconv/samples/hania-eucKR.txt new file mode 100644 index 000000000..3197f751b --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/hania-eucKR.txt @@ -0,0 +1,2 @@ +??º§ +?? \ No newline at end of file diff --git a/intl/icu/source/extra/uconv/samples/ibm-37-test.txt b/intl/icu/source/extra/uconv/samples/ibm-37-test.txt new file mode 100644 index 000000000..d5fd11637 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/ibm-37-test.txt @@ -0,0 +1 @@ +×Áââz@Ö•¥…™¢‰–•@†™–”@‰‚”`ó÷@¦¢@¢¤ƒƒ…¢¢†¤“K% \ No newline at end of file diff --git a/intl/icu/source/extra/uconv/samples/iso8859-1.txt b/intl/icu/source/extra/uconv/samples/iso8859-1.txt new file mode 100644 index 000000000..95e57d6c7 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/iso8859-1.txt @@ -0,0 +1,18 @@ + Foto ______ det formodede fødehus, hjørnet ______ Hans Jensensstræde og Bangs Boder. + (H. C. Andersens Hus, Odense). + +BARNDOMSOMGIVELSERNE + Skønt H. C. Andersens barndomsomgivelser var meget fattige, blev de i hans rige fantasi + solbeskinnede. + Der findes en mandtalsliste fra nogle få år ______ H. C. Andersens fødsel. Den er ______ 1801 + og den giver klare oplysninger om, hvor mange der boede ______ Odense og hvad de var + beskæftigede ______. Den omfatter 1199 husstande. Hvis man fordeler disse ______ erhverv, + får man 102 embeds- og bestillingsmænd, 26 officerer, 12 der beskæftiger sig med + immaterielle erhverv, 81 som lever ______ handel, 36 værtshusholdere, 460 håndværkere, 39 + avlsmænd og urtemænd, 121 soldater, 97 daglejere, 139 enlige kvinder og + almissemedlemmer, 29 pensionister og rentenydere. + H. C. Andersens forældre tilhørte samfundets laveste lag. Faderen var friskomager, og + når han meldte sig ______ militærtjeneste ______ Napoleons side, har det nok ikke så meget været + idealisme som praktisk økonomi. For at sikre sig en soldats værgeløn. Han kom ikke + længere end ______ Holsten. Han fik høj feber og måtte sendes hjem. Da han kom hjem, + forværredes sygdommen og han døde. diff --git a/intl/icu/source/extra/uconv/samples/koi8r.txt b/intl/icu/source/extra/uconv/samples/koi8r.txt new file mode 100644 index 000000000..578a30f12 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/koi8r.txt @@ -0,0 +1,6 @@ +áÍÅÒÉËÁÎÓËÉÅ ÓÕÄÁ ÎÁÈÏÄÑÔÓÑ × ÍÅÖÄÕÎÁÒÏÄÎÙÈ ×ÏÄÁÈ. ñÐÏÎÉÑ +×ÙÒÁÚÉÌÁ ÓÅÒØÅÚÎÏÅ ÂÅÓÐÏËÏÊÓÔ×Ï ÓÏ×ÅÔÓËÉÍÉ ÄÅÊÓÔ×ÉÑÍÉ. +ðÅÎÔÁÇÏÎ ÂÅÓÐÏËÏÊÓÔ×Á ÎÅ ÐÒÏÑ×ÉÌ. óûá ÐÒÏ×ÏÄÑÔ ÐÏÄÏÂÎÏÅ ÓÌÅÖÅ- +ÎÉÅ ÚÁ ÓÏ×ÅÔÓËÉÍÉ ÓÕÄÁÍÉ × ëÁÒÉÂÓËÏÍ ÍÏÒÅ. ðÒÁ×ÄÁ, ËÏÌÉÞÅÓÔ×Ï +ÓÏ×ÅÔÓËÉÈ ÓÁÍÏÌÅÔÏ× ×ÙÚ×ÁÌÏ ÎÅËÏÔÏÒÏÅ ÕÄÉ×ÌÅÎÉÅ.. + diff --git a/intl/icu/source/extra/uconv/samples/utf8/armenian.txt b/intl/icu/source/extra/uconv/samples/utf8/armenian.txt new file mode 100644 index 000000000..21e2a7352 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/armenian.txt @@ -0,0 +1,4 @@ +ԱեÖÕ¥Õ°Õ« Õ«Õ´ Õ¬Õ¡Õ¾ ?Ö‚Õ²Õ«Õ¥ Õ¬Õ¡Õ¾Õ¡Ö€Õ¡Ö€, +Ô¿ÕµÕ¡Õ¥Õ¢Õ½ Õ¹Õ¿Õ¡ÕµÕ« Õ¯Õ¡Õ½Õ¯Õ¡Õ®Õ« Õ´Õ°Õ£Õ«Õ¥... +Ô±ÕµÕ¥ÕºÕ°Õ½ Õ¯?Ö‚Õ¦Õ°Õ« Õ´Õ°Õ¯Õ¥ Õ«Õ¥Õ® ?Õ¡Õ¾Õ¡Õ¿Ö€, +Ô±ÕµÕ¥ÕºÕ°Õ½ Õ¯?Ö‚Õ¦Õ°Õ« ?Õ¡Õ¾Õ¡Õ¿Õ¡Õ¬ Õ´Õ°Õ¯Õ«Õ¥Ö‰ diff --git a/intl/icu/source/extra/uconv/samples/utf8/banviet.txt b/intl/icu/source/extra/uconv/samples/utf8/banviet.txt new file mode 100644 index 000000000..7d9cafe73 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/banviet.txt @@ -0,0 +1,11 @@ +Bần chỉ là má»™t anh nghèo xác, ngày ngày lang-thang +khắp xóm này qua xóm khác xin ăn. Quần áo +rách-mướp Bần cÅ©ng chả coi sao, chân không có giầy và +đầu cÅ©ng chẳng có mÅ©. Giá»i nắng hay giá»i mưa Bần +không bao giá» quan-tâm. Má»™t ngưòi như Bần thì ai cÅ©ng +tưởng là không còn có gì là quí-vât nữa. Thế nhưng ta +nhầm vì Bần có cái quạt mo, Bần quí lắm. Bần quí và giữ +luôn không rá»i bá» bao giá». Giá»i nắng thì Bần che đầu, +giá»i mưa Bần cÅ©ng nhá» nó mà đỡ ướt. Muốn ngồi Bần +dùng làm chiếu và đêm đến các chú muá»—i vo-ve thì Bần +dùng để dánh Ä‘uổi các chú ấy. diff --git a/intl/icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt b/intl/icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt new file mode 100644 index 000000000..d2d2c6cfe --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt @@ -0,0 +1,222 @@ +  俺正和首都警署的è€ç‰¹æ´›ä¼Šåœ¨å‡‰äº­å±±è¡—角那儿寒喧呢,该死的,冷ä¸ä¸å„¿çš„æ¥äº†ä¸€åæ‰«çƒŸå›±çš„背时家伙,他那长玩æ„儿差点儿戳进了俺那眼ç›é‡Œå¤´åŽ»ã€‚ä¿ºè½¬å›žè„‘è¢‹ï¼Œæ­£æ‰“ç®—ç‹ ã€…åœ°æ•™è®­ä»–ä¸€é¡¿ï¼Œæ²¡æ›¾æƒ³ä¸€çœ¼çœ‹è§çŸ³å¤´æ–œå¢»è¡—那儿æ¥äº†ä¸ªäººï¼Œé“是è°å‘¢ï¼ŒåŽŸæ¥æ˜¯çº¦ãƒ»å“ˆå› æ–¯ã€‚ +  ___囉,约,俺说。你怎么样?那个扫烟囱的背时家伙,用他的长把儿刷å­å·®ç‚¹å„¿æŠŠæˆ‘çš„çœ¼ç›æ…掉。你看è§äº†å—? +  ___ç…¤çƒŸåˆ°ï¼Œè¿æ°”好,约说。你刚æ‰è¯´è¯çš„那个è€å°å­æ˜¯è°ï¼Ÿ +  ___è€ç‰¹æ´›ä¼Šå‘—ï¼Œä¿ºè¯´ï¼ŒåŽŸæ¥æ˜¯éƒ¨é˜Ÿçš„ã€‚é‚£å®¶ä¼™åˆæ˜¯æ‰«å¸šåˆæ˜¯æ¢¯å­ï¼ŒæŠŠäº¤é€šéƒ½å µå¡žèµ·æ¥äº†ï¼Œä¿ºæ¨ä¸å¾—把他逮起æ¥ã€‚ +  ___你到这片儿æ¥å¹²å—?约问。 +  ___没有什么å±äº‹ï¼Œä¿ºè¯´ã€‚å…µè¥æ•™å ‚那边,å°é¸¡èƒ¡åŒå£ä¸Šæœ‰ä¸€ä¸ªèƒŒæ—¶çš„大个å­ï¼Œä¸è¦è„¸çš„æ¶æ£__è€ç‰¹æ´›ä¼Šå°±æ˜¯ç»™æˆ‘é€äº†é‚£å®¶ä¼™çš„一点儿底__è¦äº†å¤©ä¸»çŸ¥é“多少茶å¶å’Œç³–ï¼Œä»–ç­”åº”æ¯æ˜ŸæœŸä»˜ä¸‰å…ˆä»¤ï¼Œè¯´æ˜¯åœ¨å”郡还有个农庄。货主是那边海梯斯堡街附近的一个å°çŸ®å­ï¼Œå嫿‘©è¥¿ãƒ»èµ«ä½æ ¼çš„。 +  ___割包皮的å—?#1 约说。 +==注1:尤太教男人自幼å³å‰²åŽ»åŒ…çš®ã€‚== +  ___å¯ä¸å—ï¼Œä¿ºè¯´ã€‚å¤´ä¸ŠåŽ»äº†ä¸€ç‚¹å„¿ã€‚ä¸€ä¸ªå§“å‰æ‹‰è’‚çš„è€ç®¡å­å·¥ã€‚我已ç»é’‰äº†ä»–ä¸¤ä¸ªæ˜ŸæœŸï¼Œå¯æ˜¯ä¸€ä¸ªä¾¿å£«ä¹ŸæŒ¤ä¸å‡ºæ¥ã€‚ +  ___你现在就干这勾当?约说。 +  ___å¯ä¸å—,俺说。大人物è½é­„到这ç§åœ°æ­¥ï¼šæ”¶å€’å¸ã€è’å¸ã€‚å¯è¿™å®¶ä¼™å‘€ï¼Œåƒä»–这样臭å远扬的背时土匪,你走上一天的路也难得è§åˆ°ä¸€ä¸ªï¼Œä¸€è„¸çš„麻å­å¤Ÿè£…一场阵头雨的。{你就告诉他å§ï¼Œï½ä»–说「我等ç€ä»–呢,ï½ä»–说,{我专门儿地等ç€ä»–冿´¾ä½ æ¥,åªè¦ä»–æ•¢,ï½ä»–说,{我就让法庭给他å‘传票,没有错儿,告他个无照è¥ä¸šã€‚ï½ä»–说完这è¯,      那模样就åƒè¦çˆ†ç‚¸èµ›çš„。耶稣哪,那犹太å°å­ç«å†’三丈的模样儿å¯çœŸé€—笑ï¼ï½›ä»–å–æˆ‘çš„èŒ¶ã€‚ä»–åƒæˆ‘的糖。他倒ä¸ä»˜æˆ‘çš„å¸ï¼Ÿï½ï¼»241ï¼½ + èŒ²æœ‰éƒ½æŸæž—市沃德ç å¤´åŒºå‡¯æ–‡é“å三å·å•†äººæ‘©è¥¿ãƒ»èµ«ä½æ ¼ï¼Œä¸‹ç§°å”®æ–¹ï¼Œå‡ºå”®è€ä¹…食å“å¹¶é€äº¤éƒ½æŸæž—市阿伦ç å¤´åŒºå‡‰äº­å±±äºŒåä¹å·ç»…士迈克尔・ Eãƒ»å‰æ‹‰è’‚先生,下称购方,计开一级茶å¶äº”磅,常衡制,æ¯å¸¸è¡¡åˆ¶ç£…价三先令零便士,碎晶体白糖常衡制三斯通#1,æ¯å¸¸è¡¡åˆ¶ç£…价三便士,该购方由该售方供应物å“åŽåº”付该售方英å¸ä¸€é•‘五先令åˆå…­ä¾¿å£«ï¼Œæ­¤æ¬¾åº”由该购方以æ¯å‘¨åˆ†å¿åŠžæ³•ä»˜ä¸Žå”®æ–¹ï¼Œå³æ¯ä¸ƒåŽ†æ—¥ä»˜è‹±å¸ä¸‰å…ˆä»¤é›¶ä¾¿å£«ï¼›è¯¥è´­æ–¹å¯¹è¯¥è€ä¹…食å“ä¸å¾—å…¸å½“ã€æŠµæŠ¼ã€å‡ºå”®æˆ–作其他方å¼è½¬è®©ï¼Œè¯¥å”®æ–¹æ‹¥æœ‰å¹¶ç»§ç»­æ‹¥æœ‰å…¨é¢è€Œä¸å¯ä¾µçŠ¯ä¹‹æ‰€æœ‰æƒï¼Œè¯¥å”®æ–¹æœ‰æƒè‡ªç”±ä»»æ„处ç†ï¼Œç›´è‡³æ­¤æ¬¾ç”±è¯¥è´­æ–¹æŒ‰ç…§æ­¤çº¦æ‰€å®šæ–¹å¼å‘该售方付清为止,此约于由该售方与其财产继承人ã€ä¸šåŠ¡ç»§æ‰¿äººã€å§”托代ç†äººã€æŒ‡å®šå—让人为一方,该购方与其财产继承人业务继承人ã€å§”托代ç†äººã€æŒ‡å®šå—让人为å¦ä¸€æ–¹äºŽæœ¬æ—¥äºŽæ­¤è®®å®šã€‚ +==注1:「斯通ã€ä¸ºè‹±å›½é‡é‡å•ä½ï¼Œä¸€èˆ¬åˆå四磅。==   +  ___你是严格的滴酒ä¸å…¥çš„å—?约说。 +  ___除了 å–酒的时候,啥也ä¸å–,俺说。 +  ___åŽ»æ‹œè®¿ä¸€ä¸‹å’±ä»¬é‚£ä½æœ‹å‹æ€Žä¹ˆæ ·ï¼Ÿçº¦è¯´ã€‚ +  ___è°ï¼Ÿä¿ºè¯´ã€‚他呀,精神错乱上了天主的约翰那儿去了#2ï¼Œå¯æ€œçš„家伙。 +==注2:「天主的约翰ã€ä¸ºéƒ½æŸæž—郡 一瘋人院。== +  ___是å–他自己的貨色å–çš„å§ï¼Ÿ +  ___å¯ä¸å—Žï¼Œä¿ºèªªã€‚å¨å£«å¿ŒåŠ æ°´ï¼Œä¸Šäº†è…¦å­ã€‚ +  ___èµ°å§ï¼Œä¸Šå·´å°¼ãƒ»åŸºå°”å—酒店å§ï¼Œçº¦è¯´ã€‚æˆ‘è¦æ‰¾å…¬æ°‘。 +  ___就是巴尼å®è´å„¿å§ï¼Œä¿ºè¯´ã€‚有什么怪事儿或是好事儿å—? +  ___å±äº‹å„¿ä¹Ÿæ²¡æœ‰ï¼Œçº¦è¯´ã€‚我采访城标饭店那个会议了。 +  ___啥会,约?俺说。 +  ___牧牛贸易,约说,讨论å£å•¼ç–«çš„。我è¦ç»™å…¬æ°‘é€ä¸ªä¿¡å„¿ã€‚ +  俺们绕过亚麻厂兵è¥ï¼Œç»•ç€æ³•院åŽå¤´ï¼Œè¾¹èµ°è¾¹èŠã€‚约这ä½è€å…„,有  的时候是挺够朋å‹çš„,å¯ä»–å°±æ˜¯è€æ²¡æœ‰ã€‚耶稣 呀,俺å¯å’½ä¸ä¸‹èƒŒæ—¶çš„æ»‘头剿‹‰è’‚è¿™å£æ°”,白日打劫的土匪。告他个无照è¥ä¸šï¼Œä»–说。 +  在那美丽的伊尼斯è²å°”#3,有那么一片土地,圣迈肯的土地。#4一座高塔在此拔地而起,四周远处都能望è§ã€‚有许多大人物在此安眠,许多大å鼎々的英雄王公在此安眠如生。这片土地委实èµå¿ƒæ‚¦ç›®ï¼Œä¸Šæœ‰æ½ºã€…æµæ°´ï¼Œæ°´ä¸­ç¾¤ 鱼嬉æˆï¼Œæœ‰é²‚ ,有鲽鱼。有拟鲤,有大比目,有尖嘴黑绒鳕,有鲑鱼,有黄盖鲽,有è±é²†ï¼Œæœ‰é²†é²½ï¼Œæœ‰é’鳕,还有å„ç§æ‚鱼,以其他å„ç±»ä¸è®¡å…¶æ•°çš„æ°´æ—ã€‚åœ¨è¥¿æ–¹å’Œä¸œæ–¹ï¼Œé«˜å¤§çš„æ ‘æœ¨åœ¨å’Œé£Žå¹æ‹‚之中,å‘å››é¢å…«æ–¹æ–æ™ƒç€æžå…¶ä¼˜ç¾Žçš„æžå¶ï¼Œæœ‰é£˜ã€…然的悬铃木,有黎巴嫩雪æ¾ï¼Œæœ‰æŒºæ‹”的梧æ¡ï¼Œæœ‰æ”¹è‰¯æ¡‰æ ‘,以åŠå…¶ä»–树木世界优良å“ç§ï¼Œè¿™ä¸€åœ°åŒºåº”有尽有。美妙女郎散ååœ¨ç¾Žå¦™æ ‘æœ¨ä¹‹é—´ï¼Œå”±ç€æœ€ç¾Žå¦™çš„æ­Œæ›²ï¼Œå¹¶ä»¥å½¢ã€…色々美妙物å“为游æˆï¼Œè¯¸å¦‚金å—ã€é“¶é±¼ã€å¤§ç­çš„é²±ã€æ•´ç½‘的鳗鱼ã€å°é³•é±¼ã€æ•´ç¯“的仔鱼ã€ç´«è‰²çš„æµ·å®ã€æ´»æ³¼ã€…的昆[242ï¼½è™«ã€‚å››æ–¹è‹±é›„è¿œé“æ¥å‘她们求爱。从爱勃兰纳到斯里符玛奇山#1,无å¯åŒ¹æ•Œçš„王å­ä»¬æ¥è‡ªè‡ªç”±ä¸–界的芒斯特çœï¼Œæ¥è‡ªå…¬é“的康诺特çœï¼Œæ¥è‡ªå…‰æ»‘ã€æ•´æ´çš„莱因斯特çœï¼Œæ¥è‡ªå…‹ç½—阿è‰çš„地域,æ¥è‡ªå…‰è¾‰çš„阿尔马郡,æ¥è‡ªé«˜è´µçš„åšä¼Šå°”区,是王å­ä»¬ï¼Œéƒ½æ˜¯å›½çŽ‹çš„åŽä»£ã€‚  +==注3:「伊尼斯è²å°”ã€ä¸ºçˆ±å°”兰语æ„为「命è¿ä¹‹å²›ã€ç³»å¯¹çˆ±å°”兰的称呼之一。== +==注4:圣迈肯教堂离此ä¸è¿œï¼Œå…¶åœ°ä¸‹å¢“穴以尸体ä¿å­˜è‰¯å¥½è‘—称。== +==注1:爱åšå…°çº³ä¸ºå¤åœ°å,å³ä»Šéƒ½æŸæž—所在地。== +  一座亮晶々的宫殿耸立在那里,驾驶ç€ä¸ºæ­¤ç›®çš„而建造的船舶在大海航行的人从远处就能望è§å®ƒçš„æ°´æ™¶å±‹é¡¶é—ªã€…å‘光。当地所有的畜群 ã€è‚¥çŠŠã€é¦–æ‰¹é²œæžœï¼Œçº·ã€…è¿æ¥è¿™é‡Œï¼Œç”±å¥¥åº·å†…尔・茨赛门收费,他是世传的酋长#2 巨大的货车载æ¥äº†ä¸°å¯Œçš„农田的产物,有长ç­è£…çš„èœèŠ±ï¼Œæœ‰å¤§ç›˜è£…çš„è èœã€è è段ã€ä»°å…‰ç“œï¼Œæœ‰å¤§ç­è£…的蕃茄,有桶装的无花果,有æˆå †çš„瑞典èåœã€çƒçŠ¶é©¬é“ƒè–¯ï¼Œæœ‰æˆæ†çš„å„色甘兰ã€çº¦å…‹èœã€çš±å¶èœï¼Œæœ‰æˆç›˜çš„土中çç æ´‹è‘±å¤´ï¼Œè¿˜æœ‰æµ…盘装的蘑è‡ã€è›‹å¥¶è±Œè±†ã€è‚¥å·¢èœã€æ²¹èœã€ä»¥åŠçº¢çš„ã€ç»¿çš„ã€é»„çš„ã€æ£•çš„ã€èµ¤è¤è‰²çš„甜ã€å¤§ã€è‹¦ã€ç†Ÿå¸¦æ–‘的苹果,还有å°ç¯“å°ç¯“çš„è‰èŽ“ã€ä¸€ç¯®ä¸€ç¯®çš„醋栗,肉鼓々毛茸々的;å¯ä¾›çŽ‹ä¾¯äº«ç”¨çš„è‰èŽ“ã€æ–°æ‘˜çš„紫莓。 +==注2:费茨赛门为1904 å¹´éƒ½æŸæž—食å“商店总管,商场在基尔å—酒店附近。== +  {我等ç€ä»–呢,ï½ä»–说,{我专门儿地等ç€ä»–呢。ï½ä½ ç»™æˆ‘滚到这儿æ¥å§ï¼Œå‰æ‹‰è’‚,你这个臭åè¿œæ‰¬çš„æ‹¦è·¯æŠ¢åŠ«çš„èƒŒæ—¶åœŸåŒªï¼ +  一æ¡è·¯ä¸Šæ¥çš„,还有ä¸è®¡å…¶æ•°çš„牲畜群 ,有系铃带头的去势公羊ã€å‚¬æƒ…补饲的æ¯ç¾Šã€åˆå‰ªç¾Šæ¯›çš„壮羊ã€ç¾”羊ã€ç°é›ã€ä¸­å·èœç‰›ã€å¼å–˜æ¯é©¬ã€æˆªè§’牛犊ã€é•¿æ¯›ç¾Šã€å¾…肥育羊ã€å¡å¤«å¤´ç­‰å¾…产牛ã€ç­‰å¤–å“ã€é˜‰æ¯çŒªã€å’¸è‚‰ç”¨çŒªã€å„ç§ä¸åŒå“ç§é«˜çº§ç”ŸçŒªã€å®‰æ ¼æ–¯å°æ¯ç‰›ã€æœ€ä½³çº¯ç§åŽ»è§’é˜‰ç‰›ã€ä»¥åŠèŽ·å¥–çš„å¤´ç­‰çš„å¥¶ç‰›ä¸Žèœç‰›ï¼›è¿™é‡Œä¸æ–­å¬åˆ°è¹„å­å£°ã€å’¯ã€…声ã€å¼å«å£°ã€å“žã€…声ã€å’©ã€…声ã€å’†å“®å£°ã€éš†ã€…声ã€å‘¼å™œå£°ã€åƒæ–™å£°ã€å’€åš¼å£°ï¼Œæœ‰ç¾Šç¾¤ã€æœ‰çŒªç¾¤ã€æœ‰è¹„å­æ²‰é‡çš„牛群 ,æ¥è‡ªå‹’斯克ã€é²å¸Œã€å¡é‡Œå…‹å­Ÿçš„牧场,æ¥è‡ªç´¢å­Ÿå¾·é‚£æ°´æµä¸°å¯Œçš„山谷,æ¥è‡ªéº¦å‰åˆ©å£å®¢åœ°é‚£äº›éš¾äºŽæ”€ç™»çš„石堆,æ¥è‡ªæ°”势å®å¤§æ·±ä¸å¯æµ‹çš„香农河,æ¥è‡ªåŸºäºšæ—地区那些平缓的山å¡ï¼Œä¹³æˆ¿å› å¥¶è¿‡å¤šè€Œè‚¿èƒ€ä¸å ªï¼Œè¿˜æœ‰å¤§æ¡¶çš„黄油ã€ä¹³é…ªé…¶ã€å†œå®¶æœ¨æ¡¶è£…的羔羊å‰èƒ¸è‚‰ã€å¤§ç­çš„çŽ‰ç±³ï¼Œè¿˜æœ‰åæ‰“忉“的禽蛋,å„ç§å¤§å°éƒ½æœ‰ï¼ŒçŽ›ç‘™è‰²çš„å’Œæš—è¤è‰²çš„。 +  这么的,俺们æ‹è¿‘了巴尼・基尔å—酒店,å¯ä¸å—,公民正在那角è½é‡Œå¤´ï¼Œä¸€è¾¹è·Ÿä»–自个儿和那æ¡èƒŒæ—¶çš„癞皮æ‚ç§ç‹—加里欧文大会谈,一边等ç€å¤©ä¸ŠæŽ‰ä¸‹ä»€ä¹ˆå–çš„æ¥å‘¢ã€‚ +  ___瞧他,俺说,克露斯金朗ä¸ç¦»èº«ï¼Œ#3 带ç€ä»–的大事业公事å·å®—守ç€çªã€‚ +==注3:「克露金斯朗ã€ä¸ºçˆ±å°”兰语歌曲å,å³ã€Œæ»¡ã€…一å°å›é…’ã€ã€‚== +  背时的æ‚ç§ç‹—å‘å‡ºä¸€ç§æ‚»ã€…的声音,å«äººå¬äº†æ¯›éª¨æ‚šç„¶çš„ã€‚è¦æ˜¯æœ‰äººæŠŠé‚£æ¡æ¶ç‹—的命结æŸäº†ï¼Œé‚£æ‰æ˜¯åœ°é“的善行呢。俺å¬è¯´è¿‡ä¸€ä»¶çœŸäº‹ï¼Œæ¡‘ç‰¹é‡Œä¸€åæ­¦è­¦æ¥é€ä¼ ç¥¨ï¼Œæ˜¯æ‰§ç…§çš„事,å«è¿™æ¡ç‹—å•ƒåŽ»å¤§åŠæ¡è£¤å­ã€‚ +  ___ç«™ä½ï¼Œäº¤å‡ºæ¥ï¼Œä»–说。 +  ___没有事儿,公民,约说。自己人。 +  ___自己人放行,他说。 +  然åŽä»–用手æ‰ã€…一åªçœ¼ç›è¯´ï¼š +  你们对时局有什么看法? +  他æžçŸ›å…µ#1 和山上罗利#2 é‚£ä¸€å¥—å‘¢ã€‚å¯æ˜¯ï¼Œè€å¤©åœ¨ä¸Šï¼Œçº¦å€’是能对付这局é¢çš„。 +==注1:「矛兵ã€ä¸ºå七世纪起义抗英的爱尔兰游击队。== +==注2:「山上的罗利ã€ä¸ºåä¹ä¸–纪民歌中歌颂的å英农民志士。 +  ___æˆ‘çœ‹æ˜¯ç‰©ä»·è¦æ¶¨ï¼Œä»–è¯´ç€æŠŠæ‰‹é¡ºç€è£¤è£†ä¼¸äº†ä¸‹åŽ»ã€‚ã€€ã€€ +  è€å¤©åœ¨ä¸Šï¼Œå…¬æ°‘把爪å­å¾€è†ç›–上一æ‹è¯´ï¼šã€€ã€€___都是外国的战争造æˆçš„。 +  约在å£è¢‹é‡Œç¿˜ç€å¤§å§†æŒ‡è¯´ï¼š +  ___是俄国佬想统治。   +  ___去你的å§ï¼Œçº¦ï¼Œä¿ºè¯´ã€‚你那套背时胡扯算了å§ã€‚ä¿ºå¯æ¸´å了,åŠä¸ªå…‹æœ—也ä¸å¤Ÿè§£çš„。 +  ___你说是什么å§ï¼Œå…¬æ°‘,约说。 +  ___咱本国的酒,他说。 +  ___你呢?约说。 +  ___ç…§ç€è‘«èŠ¦ç”»ç“¢ï¼Œä¿ºè¯´ã€‚ +  ___æ¥ä¸‰å“脱,特里,约说。è€ä¼™è®¡æ€Žä¹ˆæ ·ï¼Œå…¬æ°‘?他说。 +  ï¼ï¼ï¼ï¼å†å¥½ä¹Ÿæ²¡æœ‰ï¼Œa chara#1 。他说。怎么样,加里?咱们会胜利的,是å§ï¼Ÿ + ï¼ï¼ï¼ï¼ä»–说ç€è¯ï¼Œä¸€æŠŠæŠ“ä½äº†é‚£èƒŒæ—¶è€ç‹—çš„åŽé¢ˆçš®ï¼Œè€¶ç¨£ 啊,差ä¸ç‚¹å„¿æŠŠå®ƒå‹’死。 +==注1:爱尔兰语:「我的朋å‹ã€ã€‚   +  å在圆塔å‰å¤§çŸ³å¢©ä¸Šçš„æ˜¯ä¸€æ¡å¥½æ±‰ï¼Œè‚©è†€å®½é˜”ã€èƒ¸è†›åŽšå®žã€å››è‚¢å¼ºå£®ã€çœ¼å…‰å¦çއã€å¤´å‘å‘红ã€é›€æ–‘æ–‘æ–“ã€èƒ¡å­è“¬æ¾ã€å˜´å·´å®½å¤§ã€é¼»å­é«˜è€¸ã€è„‘袋长々ã€å—“音深沉ã€è†ç›–外露ã€ä¸¤è…¿å¤šæ¯›ã€è„¸è‰²å‘红ã€åŒè‡‚多腱。他两肩之间宽达数伊尔#3,åŒè†å¶™å³‹ 如山岩,è†ä¸Šå’Œèº«ä½“其余外露部分相åŒï¼Œéƒ½é•¿ç€åŽšã€…çš„ä¸€å±‚é»„è¤è‰²åˆºæ¯›ï¼Œé¢œè‰²å’Œç¡¬åº¦éƒ½åƒå±±èŠè±†ï¼ˆUlex Europeus#4ï¼‰ã€‚ä¸¤ä¸ªé¼»å­”ä¸­ä¼¸å‡ºåŒæ ·é»„è¤è‰²çš„硬毛,鼻孔之大,å¯å®¹è‰åœ° 鹨在其洞穴深处筑巢。两åªå¤§çœ¼ç›çš„尺寸,和大头的èœèŠ±ç›¸ä»¿ï¼Œå¸¸æœ‰ä¸€æ»´çœ¼æ³ªå’Œä¸€ä¸å¾®ç¬‘在争夺眼内地盘。#5 从他的å£ä¸­æ·±å¤„ï¼Œä¸æ—¶æœ‰ä¸€è‚¡å‘热的强气æµå†’出,而他的巨大心è„çš„åšåŠ¨ï¼Œé‚£å“亮有力的节å¥é€ æˆå¼ºå¤§çš„共鸣,雷声隆々,将地é¢ã€é«˜è€¸çš„塔顶和比塔更高的洞å£éƒ½éœ‡å¾—é¢¤åŠ¨æ–æ™ƒä¸å·²ã€‚ +==注3:「伊尔ã€ä¸ºæ—§æ—¶è‹±åˆ¶é•¿åº¦ï¼Œåˆ45 英寸。 +==注4: +==注5:典出穆尔诗<爱ç³ï¼Œä½ çœ¼ä¸­çš„眼泪和微笑>。== +  他穿一件无袖长衣,用新剥牛皮制æˆï¼Œä¸‹åž‚åŠè†å¦‚è‹æ ¼å…°çŸ­è£™ï¼Œè…°é—´ç”¨ä¸€æ ¹èŠ¦è‹‡æ¯›è‰ç¼–æˆçš„ç»³å­æŸä½ã€‚裙å­ä¸‹é¢æ˜¯é¹¿çš®è£¤å­ï¼Œç”¨è‚ çº¿ç²—ç¼è€Œæˆçš„。他的下肢套ç€ç”¨åœ°è¡£ç´«æŸ“过的巴尔布里根裹腿,脚上套ç€ç›æ¸ç²—牛皮é´å­ï¼Œé´å¸¦æ˜¯åŒä¸€ç‰²å£çš„æ°”管。他的腰带上 挂ç€ä¸€å¤§ä¸²æµ·çŸ³å­ï¼Œéƒ½éšç€ä»–那奇特的身体的æ¯ä¸€ä¸ªåŠ¨ä½œå‘出å“å•·å“啷的声音,上é¢é•Œåˆ»ç€ç²—犷 而生动的部è½è‰ºæœ¯äººåƒï¼Œéƒ½æ˜¯çˆ±å°”å…°å¤ä»£çš„男女英雄,有:库丘陵ã€èº«ç»ç™¾æˆ˜çš„康æ©ã€ä¹ä¸ªäººè´¨çš„尼尔ã€é‡‘克拉的布莱æ©çŽ‹ã€çŽ›æ‹‰åŸºå¤§å¸ã€é˜¿ç‰¹ãƒ»éº¦å…‹å¢¨ç½—ã€æ²™æ©ãƒ»å¥¥å°¼å°”ã€çº¦ç¿°ãƒ»å¢¨è²ç¥žçˆ¶ã€æ¬§æ–‡ãƒ»ç½—ã€æ´¾ç‰¹é‡Œå…‹ãƒ»è¨æ–¯è²å°”å¾·ã€çº¢è‰²çš„休・奥å”奈ã€çº¢è‰²çš„å‰å§†ãƒ»éº¦å…‹å¾·èŽ«ç‰¹ã€Soggarth Eogham O'Growney ,迈克尔・德怀尔ã€å¼—朗西・希金斯ã€äº¨åˆ©ãƒ»ä¹”ä¼Šãƒ»è¿ˆå…‹æ‹‰è‚¯ã€æ­Œåˆ©äºšã€éœå‹’æ–¯ãƒ»æƒ ç‰¹åˆ©ã€æ‰˜é©¬æ–¯ãƒ»Conneffã€ä½©æ ¼ãƒ»æ²ƒèŠ¬é¡¿ã€æ‘é“匠ã€Captain Moonlightã€Captain æ¯è‘›ã€ä¸¹è’‚・lighieriã€å…‹é‡Œæ–¯æ‰˜è´¹ãƒ»å“¥ä¼¦å¸ƒã€S fursa(费è¨ï¼‰ã€S 布伦丹ã€é©¬æ­‡å°”ãƒ»éº¦å…‹é©¬æ´ªã€æŸ¥ç†æ›¼ã€è¥¿å¥¥åšå°”德・沃尔夫・托æ©ã€é©¬åŠ æ¯”å®¶æ—之æ¯ã€thelast of Mohicans ã€å¡æ–¯è’‚利亚的罗斯ã€the Man for Galway(戈尔韦ã€åœ¨è’™ç‰¹å¡æ´›ç ¸é“¶è¡Œçš„æ›¼ã€åœ¨åŠ æ™®çš„æ›¼ã€The Woman who didn't`æœ¬æ°æ˜Žãƒ»å¯Œå…°å…‹æž—ã€æ‹¿ç ´ä»‘・波拿巴ã€çº¦ç¿°ãƒ»L・沙利文ã€å…‹å¨„巴特拉ã€Savourneen Deelishã€ç±³åˆ©å¶æ–¯ãƒ»å‡¯æ’’ã€å¸•æ‹‰åˆ‡å°”è‹æ–¯ã€æ‰˜é©¬æ–¯ãƒ»åˆ©æ™®é¡¿å…ˆç”Ÿã€å¨å»‰ãƒ»é€€å°”ã€ç±³å¼€æœ—çªç½—ã€æµ·æ–¯ã€ç©†ç½•默德ã€the bride of Lammermoorã€éšå£«å½¼å¾—ã€å½¼å¾—the Packerã€é»‘姑娘罗莎ç³ã€å·´ç‰¹é‡Œå…‹ãƒ»W・莎士比亚ã€å¸ƒèµ–æ©ãƒ»å­”å­ã€Murtagh 谷登堡ã€å·´ç‰¹é‡Œç§‘(Patricio) è´æ‹‰æ–¯å…‹æ–¯ã€èˆ¹é•¿å†…穆(Nemo),特里斯丹和yi 瑟(Isolde)(Isult)ã€ç¬¬ä¸€ä»»å¨å°”士亲王〠+ + + + + + +ä»–èº«æ—æ”¾ç€ä¸€æ”¯ç£¨å°–的花岗岩长矛备用,脚边å§ç€ä¸€å¤´çЬæ—猛兽,它å‘出的喘hÅu声表明它虽已入ç¡å´ç¡ä¸å®‰ç¨³ã€‚è¶³ä»¥è¯æ˜Žæƒ…å†µç¡®å®žå¦‚æ­¤çš„ï¼Œæ˜¯å®ƒä¸æ—¶æœ‰ä¸€äº›ä½Žæ²‰è€Œç²—厉的喉音,还有一些抽æä¼¼çš„动作,都被它的主人用一根旧石器时代制æˆçš„ç²—ç³™å¤§çŸ³æ£æ•²ç€é•‡äº†ä¸‹åŽ»ã€‚ + ä¸ç®¡æ€Žä¹ˆçš„ï¼Œç‰¹é‡Œé€æ¥äº†é‚£ä¸‰å“脱,是约请客,è€å¤©åœ¨ä¸Šï¼Œä¿ºçœ‹è§ä»–真æŽå‡ºä¸€é•‘é’±æ¥ï¼Œå·®ç‚¹å„¿æŠŠçœ¼ç›éƒ½çžªçžŽäº†ã€‚å˜¿ï¼Œä¿ºè¯´çš„å¯æ˜¯åƒçœŸä¸‡ç¡®çš„。一枚漂亮的元首。 +  ___还有的是呢,他说。 +  ___你抢了教堂里的施èˆç®±å—,约?俺说。 +  ___我的血汗钱,约说。是那ä½è°¨æ…Žä¼šå‘˜ç»™æˆ‘的消æ¯ã€‚#6 +==注6ï¼šå…±æµŽä¼šç« ç¨‹ç¦æ­¢åœ¨å¤–人å‰ä½œæœ‰å…³å…±æµŽä¼šçš„「ä¸è°¨æ…Žçš„è°ˆè¯ã€ã€‚ +  ___俺é‡è§ä½ ä»¥å‰ä¹Ÿè§åˆ°ä»–了,俺说。他在辟尔胡åŒã€å¸Œè…Šè¡—那一带转悠,瞪ç€ä»–的鳕鱼眼ç å­æ•°é±¼è‚ å­çš„æ•°ç›®å‘¢ã€‚ +  是è°ç©¿è¿‡è¿ˆè‚¯çš„土地æ¥äº†ï¼ŒæŠ«ç€é»‘貂 的甲冑?奥布å¢å§†ï¼Œç½—利的儿å­ï¼šå°±æ˜¯ä»–。罗利的儿å­ï¼Œä»–ä¸çŸ¥ç•惧为何物:他是生性谨慎的人。 +  ï¼ï¼ï¼ï¼æ˜¯ä¸ºçŽ‹å­è¡—è€å¤ªå©†ï¼Œå…¬æ°‘è¯´ï¼Œé‚£ä»½å—æ´¥è´´çš„æœºå…³æŠ¥#1 在议会会场上å—誓言约æŸçš„那个政党#2。你们看一看这份倒霉破报纸å§ã€‚他说。看一看å§ï¼Œä»–说。<爱尔兰独立报>,请你们注æ„å§ï¼Œå¸•内尔创办的为劳动者说è¯çš„æŠ¥çº¸å“©#3。å¬ä¸€å¬è¿™ä»½ï¼œçˆ±å°”兰一切为了爱尔兰的独立报>上的出生æ å’Œæ­»äº¡æ æ¶ˆæ¯å§ï¼Œæˆ‘得谢々你们,还有结婚æ ã€‚ +==注1:<自由人报>(布å¢å§†ä¸ºå®ƒæ‹‰å¹¿å‘Šï¼‰åœ¨çŽ‹å­è¡—ï¼Œå…¶ç«‹åœºæ¸©å’ŒæŽ¥è¿‘ä»¥åœ°æ–¹è‡ªæ²»ä¸ºç›®æ ‡çš„çˆ±å°”å…°è®®ä¼šå…šå›¢ï¼Œå› è€Œè¢«è¦æ±‚彻底独立的民æ—主义者认为å—其津贴。== +==注2:自åä¹ä¸–纪中å¶èµ·ï¼Œè‹±å›½è®®ä¼šä¸­çš„爱尔兰议员曾采用起誓è”åˆæ”¯æŒè‹±å›½ä¸¤å¤§æ”¿å…šä¹‹ä¸€çš„åŠžæ³•ï¼Œæ”¯æŒæ¡ä»¶ä¸ºè¯¥æ”¿å…šé‡‡å–改善爱尔兰地ä½çš„æ”¿ç­–,帕内尔在八å年代å³è¿ç”¨æ­¤æˆ˜ç•¥ä¸Žè‹±å›½è‡ªç”±å…šå»ºç«‹è”åˆé˜µçº¿ï¼Œ1890 年帕垮å°åŽè¿™ä¸€é˜µçº¿é€æ¸è§£ä½“。== +==注3:<爱尔兰独立报>为帕内尔垮å°åŽåˆ›å»ºï¼Œä½†è‡³1891 å¹´å¸•åŽ»ä¸–åŽæ–¹å¼€å§‹å‡ºç‰ˆï¼Œå¹¶å³ä¸ºå帕的ä¿å®ˆç«‹åœºã€‚== +  于是他高声念起æ¥ï¼š +  ___埃克塞特市#4 邦éžå°”德路戈登;圣安妮海滨伊弗利的雷德曼,å¨å»‰ãƒ»T ・ 雷德曼夫人生一儿å­ã€‚怎么样,嗯?赖特与弗林特;文森特与å‰å‹’特,å¸å¤šå…‹å¨å°”市克拉彭路179 å·å‰å‹’特府罗莎与故乔治・艾尔弗雷德之女罗瑟・玛莉æ©ï¼›æ™®èޱä¼å¾·ä¸Žé»‘èŒ²ä»£å°”åœ¨è‚¯è¾›é¡¿åŒºåœ£ç¥–å¾·æ•™å ‚ï¼Œç”±ä¼æ–¯ç‰¹æ•™é•¿ååˆ†å¯æ•¬çš„ç¦é‡Œæ–¯ç‰¹åšå£«è¯å©šã€‚嗯?死亡拦。伦敦白厅胡åŒå¸ƒé‡Œæ–¯æ‰˜ï¼›çº½è‹±é¡¿ï¼Œæ–¯æ‰˜å…‹çš„å¡å°”,死于胃炎åŠå¿ƒè„病;切普斯托区城壕府科克伯æ©..... +==注4:「埃克塞特市ã€ä¸ºè‹±å›½åœ°å。以下公民所念å‡ä¸º +  ___我认识那家伙,约说,我亲身å—过罪#5。英国地å。== +==注5:「科克伯æ©ã€å¯ç†è§£ä¸ºã€Œé¸¡å·´ç–¼ã€ï¼Œå³æ€§ç—…。== + ___科克伯æ©ã€‚ ä¸èµ›ï¼Œå‰æµ·å†›éƒ¨æˆ´ç»´ãƒ»ä¸èµ›ä¹‹å¦»ï¼›æ‰˜é¡¿ç¿°å¸‚米勒,终年八å五;利物浦市堪å®è¡—35 å·éŸ¦å°”什,ä¼ŠèŽŽè´æ‹‰ãƒ»æµ·ä¼¦,六月åäºŒæ—¥ã€‚è¿™å°±æ˜¯å’±ä»¬çš„æ°‘æ—æŠ¥çº¸äº†ï¼Œå—¯ï¼Ÿçƒï¼è¿™å°±æ˜¯é‚£ä½ç­ç‰¹é‡Œå¥¸å•†é©¬ä¸ãƒ»å¢¨è²çš„贡献了#6,嗯?   +==注6:<爱尔兰独立报>业主墨è²ï¼Œè¥é€ ä¸šèµ·å®¶ä¸ºçˆ±å°”å…°ç­ç‰¹é‡Œäººã€‚== +  ___啊,算了å§ï¼Œçº¦ä¸€è¾¹ä¼ é…’一边说。感谢天主,他们抢了先。å–å§ï¼Œå…¬æ°‘。 +  ï¼ï¼ï¼ï¼æˆ‘å–,他说。 +  ï¼ï¼ï¼ï¼ç¥ä½ å¥åº·ï¼Œçº¦ï¼Œä¿ºè¯´ã€‚还有在座的å„ä½ã€‚ +  ï¼ï¼ï¼ï¼å•Šï¼å™¢ï¼åˆ¥è¯´è¯äº†ï¼ä¿ºç­‰é‚£ä¸€å“脱都等得长é’霉了。俺敢对天主起誓,那酒到俺胃里头,俺都å¬åˆ°å®ƒè½åœ¨èƒƒåº•上的滴嗒声了。 +  瞧呀,正当他们在痛饮欢ä¹ä¹‹æ¯æ—¶ï¼Œä¸€ä½ä»ªè¡¨å¦‚神的使者,一ä½å…‰è€€å¦‚太阳的俊美é’年快步走了进æ¥ï¼Œè€Œä»–çš„èº«åŽæ­£èµ°è¿‡ä¸€ä½é¢ç›®é«˜è´µã€æ­¥å±¥åº„严的长者,手æ§ç¥žåœ£çš„律å·ï¼Œè·Ÿä»–一起的是他的贵妇妻å­ï¼Œå…¶å‡ºèº«ç›–世无åŒï¼Œå…¶å®¹è²Œå¨‡å¥½æ— æ¯”。 +  å°é˜¿å°”夫・伯根钻进门æ¥ï¼Œé©¬ä¸Šèº²è¿›äº†å·´å°”尼的å°é—´é‡Œå¤´ï¼Œç¬‘å¾—ç›´ä¸èµ·è…°æ¥ã€‚è§’è½é‡Œè¿˜æœ‰äººå在那儿呢,俺没有看è§ï¼Œå–醉了人事ä¸çŸ¥ï¼Œåœ¨é‚£é‡Œå¤´æ‰“é¼¾ ï¼ŒåŽŸæ¥æ˜¯é²å‹ƒãƒ»çª¦ å†‰ã€‚ä¿ºä¸æ˜Žç™½æ˜¯å•¥äº‹å„¿ï¼Œé˜¿å°”夫一个劲儿æœé—¨å¤–åšæ‰‹åŠ¿ã€‚è€å¤©åœ¨ä¸Šï¼Œå•¥äº‹å„¿å‘¢åŽŸæ¥æ˜¯èƒŒæ—¶çš„è€å‚»ç“œä¸¹å°¼æ–¯ãƒ»å¸ƒæž—ï¼Œè„šä¸Šç©¿ä¸€åŒæ‹–鞋,胳肢çªå„¿é‡Œå¤¹ç€ä¸¤æœ¬èƒŒæ—¶çš„大书,他è€å©†ç´§è·Ÿåœ¨ä»–åŽå¤´ï¼Œå¯æ€œçš„倒霉女人,颠得åƒåªå°ç‹—似的。阿尔夫简直è¦çˆ†ç‚¸äº†ã€‚  ___你们瞅ç€ä»–ï¼Œä»–è¯´ã€‚å¸ƒæž—ã€‚ä»–æŠŠéƒ½æŸæž—全市都溜é了,就因为有人寄给他一张明信片,上边写ç€åœä¸€ä¸Šï¼Œä»–è¦èµ·..... +  他笑得弯下了腰。 +  ___起啥?俺问他。 +  ___起诉,他说。è¦ä¸€ä¸‡é•‘。 +  ___è§é¬¼ï¼ä¿ºè¯´ã€‚ +  背时的æ‚ç§ç‹—开始å‘出低沉的å¼å£°ï¼Œé‚£å£°éŸ³å«ä½ å¬ç€æ¯›éª¨è€¸ç„¶çš„æ„Ÿåˆ°è¦å‡ºäº‹ï¼Œå¯æ˜¯å…¬æ°‘对他肚å­ä¸Šè¸¢äº†ä¸€è„šã€‚ +  ___安é™ï¼Œä»–说。 +  ___è°ï¼Ÿçº¦è¯´ã€‚ +  ___布林,阿尔夫说。他先到约翰・亨利・门顿那儿,然åŽç»•到考立斯_æ²ƒå¾·äº‹åŠ¡æ‰€ï¼Œç„¶åŽæ±¤å§†ãƒ»ç½—奇ç¦å¾·ç¢°è§ä»–,把他支到付长官办公处去找ä¹å­åŽ»äº†ã€‚å¤©ä¸»å“ªï¼Œæˆ‘å¯æ˜¯ç¬‘得肚皮痛了。åœä¸€ï¼šä¸Šã€‚长家伙狠々地瞪了他一眼, 现在背时的è€ç™½ç—´åˆ°æ ¼æž—街找侦探去了。 +  ___长约翰什么时候绞死蒙乔伊监狱里那家伙?乔说。 +  ___伯根,é²å‹ƒãƒ»çª¦ 冉说,他醒了。是阿尔夫・伯根å—? +  ï¼ï¼ï¼ï¼æ˜¯ï¼Œé˜¿å°”夫说。绞死å—ï¼Ÿç­‰æˆ‘ç»™ä½ ä»¬çž§ã€‚å–‚ï¼Œç‰¹é‡Œï¼Œç»™å’±ä»¬ä¸€å°æ¯ã€‚那个背时的è€ç¬¨è›‹ã€‚一万镑 +呢。长约翰那个瞪ç€å¤§çœ¼ç›çš„劲儿,æ‰å¥½çœ‹å‘¢ã€‚åœä¸€..... +  他åˆç¬‘èµ·æ¥äº†ã€‚ +  ___你笑è°ï¼Ÿé²å‹ƒãƒ»çª¦å†‰è¯´ã€‚你是伯根å—? +  ___快点儿,特里    ,阿尔夫说。 +  特伦斯・奥赖æ©å¬åˆ°ä»–çš„è¯ï¼Œç«‹å³é€æ¥ä¸€åªæ°´æ™¶æ¯ï¼Œæ»¡ã€…地装ç€ä¹Œé»‘èµ·æ²«çš„çˆ±å°”å•¤é…’ï¼Œé‚£æ˜¯é…’è€æ¿è‰¾å¼—å’Œé…’è€æ¿é˜¿è¿ªæœ—两ä½å­ªç”Ÿå…„弟#1ä¸åœåœ°åœ¨ä»–ä»¬çš„ä»™é…’ç¼¸é‡Œé…¿é€ çš„ï¼Œå…¶å¹²ç‚¼å¯æ¯”长生ä¸è€çš„勒达的儿å­ä»¬#2。因为他们善于采集啤酒花鲜美多æ±çš„æµ†æžœï¼Œå°†ä¹‹é›†å †ã€ç­›é€‰ã€æ£ç¢Žã€é…¿é€ ï¼Œå†æŽºå…¥é…¸æ±ï¼Œç„¶åŽå°†æ­¤é…’æ±ç”¨åœ£ç«åŠ çƒ­ï¼Œè¿™ä¸¤ä½å¹²ç»ƒçš„弟兄日夜ä¸åœï¼Œä¸¤ä½é…¿é…’的大王。 +==注1:艾弗和阿迪朗å³ç¬¬äº”ç« æåˆ°çš„两贵æ—兄弟(并éžå­ªç”Ÿï¼‰ï¼Œä¸ºå‰å°¼æ–¯å•¤é…’åŽ‚è€æ¿ã€‚== +==注2:勒达为希腊神è¯ä¸­ä»™å¥³ï¼Œä¸ŽåŒ–作天鹅的大神宙斯相亲而生二儿二女,二儿一善驯马,一善拳击。== +  于是你,生æ¥å°±ä¾ ä¹‰çš„特伦斯,æ§å‡ºé‚£ç¥žä»™é¥®æ–™ï¼Œç”¨æ°´æ™¶æ¯å­çŒ®ç»™é‚£å£æ¸´çš„人,那俊美如神的侠义人物。  然而他,那奥伯根æ—的年轻æ—长,决ä¸å®¹å¿åˆ¥äººçš„æ…·æ…¨è¡Œä¸ºè¶…过自己,因而仪æ€å¤§æ–¹åœ°æ”¾ä¸‹ä¸€æžšä»¥æœ€è´µé‡çš„é’铜铸æˆçš„å®å¸ã€‚å¸é¢æœ‰ç²¾è‡´æµ®é›•凸åƒï¼Œæ˜¯ä¸€ä½å°Šè´µæ— æ¯”的女王,她是ä¸ä¼¦ç‘žå…‹è´µæ—åŽè£”#3,å维多利亚,凭天主之æ©å® è€Œä¸ºä¸åˆ—颠ã€çˆ±å°”å…°ã€ä»¥åŠä¸åˆ—颠海外领地è”åˆçŽ‹å›½æœ€ä¼˜ç§€çš„å¥³çŽ‹æ®¿ä¸‹ï¼Œå®—æ•™ä¿¡ä»°çš„ä¿æŠ¤è€…ï¼Œå°åº¦çš„女皇å¸ï¼Œå¥¹æ˜¯è®¸å¤šæ°‘æ—的统治者,众人热烈爱戴的胜利者,从太阳å‡èµ·çš„地方到太阳è½ä¸‹çš„åœ°æ–¹ï¼Œæµ…è‰²çš„ã€æ·±è‰²çš„ã€çº¢è‰²çš„ã€é»‘色的人,统々都熟悉她ã€çˆ±æˆ´å¥¹ã€‚ +==注3:「å®å¸ã€å³ä¾¿å£«ï¼Œä¸Šæœ‰ç»´å¤šåˆ©äºšå¥³çŽ‹åƒï¼Œå…¶ç¥–父英王乔治三世为德国ä¸ä¼¦ç‘žå…‹å…¬çˆµä¹‹åŽã€‚== +  ___é‚£ä¸ªèƒŒæ—¶çš„å…±æµŽä¼šå‘˜åœ¨å¤–é¢æºœæ¥æºœåŽ»å¹²ä»€ä¹ˆï¼Ÿå…¬æ°‘è¯´ã€‚ +  ___这是什么?约说。 +  ___ç»™ï¼Œé˜¿å„¿å¤«ä¸€é¢æ‰”过钱去一é¢è¯´ã€‚刚æ‰è°ˆåˆ°ç»žåˆ‘ï¼Œæˆ‘æœ‰ä¸€äº›ä½ ä»¬ä»Žæ¥æ²¡æœ‰è§è¿‡çš„ä¸œè¥¿ç»™ä½ ä»¬çœ‹ã€‚åˆ½å­æ‰‹ä¹¦ä¿¡ã€‚看这些。              [247ï¼½ +  他从å£è¢‹é‡ŒæŽå‡ºä¸€æ‰Žè¿žå°ä»£ç“¤å„¿çš„ä¿¡ä»¶æ¥ã€‚ +  ___你胡扯å§ï¼Ÿä¿ºè¯´ã€‚ +  ___éª—ä½ ä¸æ˜¯äººï¼Œé˜¿å°”夫说。你们自己看信。 +  约就拿起了信件æ¥ã€‚ +  ___你笑的是è°ï¼Ÿé²å‹ƒãƒ»çª¦ 冉说。 +  俺砸摸è¦å‡ºç‚¹å­éº»çƒ¦ï¼Œé²å‹ƒè‚šå­é‡Œé…’泛上æ¥å¯æ˜¯ä¸ªæ€ªè§’è‰²ï¼Œæ‰€ä»¥ä¿ºæ²¡è¯æ‰¾è¯åœ°è¯´ï¼š +  ___å¨åˆ©ãƒ»é»˜é‡Œè¿‘æ¥æ€Žä¹ˆæ ·ï¼Œé˜¿å°”夫? +  ___我ä¸çŸ¥é“ï¼Œé˜¿å°”å¤«è¯´ã€‚åˆšæ‰æˆ‘还在å¡ä½©å°”大街上看è§ä»–呢,他和派迪・狄格å—在一起。ä¸è¿‡æˆ‘正跟ç€é‚£ä¸ª..... +  ___你什么?约扔下信件说。和è°åœ¨ä¸€èµ·ï¼Ÿ +  ___和狄格å—呀,阿尔夫说。 +  ___是派迪å—?约说。 +  ___对呀,阿尔夫说。怎么啦? +  ___ä½ ä¸çŸ¥é“他死了å—?约说。 +  ___æ´¾è¿ªãƒ»ç‹„æ ¼å—æ­»äº†ï¼é˜¿å°”夫说。 +  ___对了,约说。 +  ___肯定我刚è§åˆ°ä»–的,五分钟还ä¸åˆ°å‘¢ï¼Œé˜¿å°”夫说。明々白々的。 +  ___è°æ­»äº†ï¼Ÿé²å‹ƒãƒ»çª¦ 冉说。 +  ___那么你看è§äº†ä»–的鬼魂,约说。求天主ä¿ä½‘我们莫é­ç¾ç¥¸ã€‚ +  ___什么?阿尔夫说。好基ç£å‘€ï¼Œåˆšã€…五.....什么?.....而且å¨åˆ©ãƒ»é»˜é‡Œè¿˜å’Œä»–在一起呢,两个人在é è¿‘那家å«ä»€ä¹ˆçš„.....什么?ç‹„æ ¼å—æ­»äº†ï¼Ÿ +  ___ç‹„æ ¼å—æ€Žä¹ˆäº†ï¼Ÿé²å‹ƒãƒ»çª¦ 冉说。è°è¯´çš„.....? +  ___死了ï¼é˜¿å°”夫说。他和你们一模一样地活ç€å‘¢ã€‚ +  ___ä¹Ÿè®¸è¿™æ ·ï¼Œçº¦è¯´ã€‚å¯æ˜¯ï¼Œäººä»¬ä»Šå¤©ä¸Šåˆå¯ä¸å®¢æ°”,把他埋了。 +  ___派迪?阿尔夫说。 +  ___对了,约说。他还清了他的人生债,天主慈悲他å§ã€‚ +  ___好基ç£å‘€ï¼é˜¿å°”夫说。 +  è€å¤©åœ¨ä¸Šï¼Œä»–å¯çœŸæ˜¯ä½ æ‰€è°“的目瞪å£å‘†äº†ã€‚ +  在那幽暗之中,å¯ä»¥æ„Ÿè§‰åˆ°å¹½çµçš„æ‰‹åœ¨å¾®ã€…颤动,而按照密宗ç»å…¸æ‰€ä½œçš„祷告é€è¾¾åº”达处之åŽ#1ï¼Œé€æ¸å¯ä»¥è§åˆ°ä¸€è‚¡å®çŸ³çº¢å…‰éšçº¦å‡ºçŽ°å¹¶è¶Šæ¥è¶Šäº®ã€‚由于头顶和脸部都放射å‰ç“¦å…‰ï¼Œè™šçµä½“呈现格外逼真形象#2。信æ¯äº¤æµæ˜¯é€šè¿‡è„‘下垂体实现的。也利用骶区与腹腔神ç»ä¸›æ‰€å‘出的桔黄色与紫红色光线。喊他的地上å字问他现在天上何处,他表示现在正走上Pra/aya 或回归之途#3,但ä»å—超感觉层中较低层次上æŸäº›å—œè¡€æˆåˆ†çš„å›°æ‰°ã€‚é—®ä»–è¶Šè¿‡äººä¸–ç•Œçº¿ä¹‹åŽæœ€åˆæœ‰ä½•感å—,他表示原æ¥çœ‹åŽ»å¦‚éš”æš—çŽ»ç’ƒï¼Œç„¶è€Œå·²ç»è¶…越界线的人,眼å‰å°±å±•开了最广阔的å‘展阿特曼的机会#1。问他那边的生活是å¦å’Œæˆ‘们的肉体生活相仿,他表示,他å¬çµä½“ç»éªŒå·²è¾ƒä¸°å¯Œçš„è¯´ï¼Œä»–ä»¬çš„ä½æ‰€æ‹¥æœ‰å„ç§å„样现代家庭舒适生活设备,诸如Talafana ,alavatar,atakalda,wataklasat#2应有尽有,而最高级的里手则浸沉于最纯æ´çš„æ¬£å¿ƒæµªæ½®ä¹‹ä¸­ã€‚这时一夸脱的酪 ä¹³åº”å…¶è¦æ±‚é€åˆ°ï¼Œæ˜¾ç„¶æ­£è§£å…¶æ¸´ã€‚问他对生者有什么嘱å’,他åŠå‘Šä¸€åˆ‡å°šæœªæ‘†è„±çŽ›è€¶çš„äºº#3,应认清真正é“路,因为天é“中人都已获得消æ¯ï¼ŒçŽ°åœ¨ç«æ˜Ÿå’Œæœ¨æ˜Ÿå·²å‡ºæ¥åœ¨ç™½ç¾Šæ˜ŸåŠ¿åŠ›æ‰€åœ¨çš„ä¸œè§’æ£ä¹±ã€‚åˆé—®é€ä¸–者有无特殊愿望,回答是:{我们å‘你们ä»åœ¨è‚‰ä½“中生活的地上朋å‹ä»¬è‡´æ„。请注æ„åº·ãƒ»å‡¯å‹¿æŽ¨è·ºã€‚ï½æ®äº†è§£ï¼Œåº·ãƒ»å‡¯å³åº·å°¼åˆ©åŽ„æ–¯ãƒ»å‡¯èŽ±èµ«å…ˆç”Ÿï¼Œä»–æ˜¯é¢‡å—æ¬¢è¿Žçš„奥尼尔夕宾仪馆的ç»ç†ï¼Œæ­»è€…的朋å‹ï¼Œè¿™æ¬¡çš„å®‰è‘¬å°±æ˜¯ä»–å®‰æŽ’çš„ã€‚ä¸´èµ°ä»–è¦æ±‚嘱å’ä»–çš„äº²çˆ±çš„å„¿å­æ´¾é½ï¼Œä»–找ä¸åˆ°çš„å¦ä¸€åªé´å­ï¼ŒçŽ°åœ¨å°å±‹å†…的马桶箱下,这åŒé´å­åº”é€å¡ä¼¦çš®éž‹åº—æ¢åº•,åŽè·Ÿå°šå¥½ä¸æ¯”æ¢ã€‚他表示,这事使他在彼域心情异常ä¸å®‰ï¼ŒåŠ¡è¯·è½¬è¾¾ä»–çš„æ„¿æœ›ã€‚ä»–åœ¨å¾—åˆ°è¿™äº‹ä¸€å®šåŠžåˆ°çš„ä¿è¯åŽï¼Œè¡¨ç¤ºå分满æ„。 +==注1:「密宗ç»å…¸ã€ä¸ºå°åº¦æ•™ç»å…¸ï¼Œä¸ºæ¬§ç¾Žé€šç¥žå­¦ç­‰çŽ„ç†æ´¾åˆ¥æ‰€ä¿¡å¥‰ã€‚== +==注2:「å‰ç“¦ã€ä¸ºå°åº¦æ•™ç”¨è¯­ï¼ŒæŒ‡çµé­‚之活力;「虚çµä½“ã€ä¸ºé€šçµå­¦ç”¨è¯­ï¼Œä¸Žã€Œã€Œå®žå¯†ä½“ã€ç›¸ç»“åˆè€Œæˆäººï¼Œäººå‡ºç”Ÿæ—¶è™šçµä½“比实密体出现早,人死亡时虚çµä½“å¹¶ä¸ç«‹å³æ¶ˆç­ï¼Œå› è€Œçµé­‚有å†ç”Ÿä¹‹å¯èƒ½ã€‚== +==注3:Pralaya 为通çµå­¦æ¢µ 文术语,指人死åŽçµé­‚ä¼‘å…»ç”Ÿæ¯æœŸã€‚== +==注1:「阿特曼ã€ä¸ºé€šçµå­¦ç”¨è¯­ï¼ŒæŒ‡äººçš„æœ€å†…在的本质。== +==注2:仿梵文(因通çµå­¦æ´¾å´‡å°šæ¢µæ–‡ï¼‰çš„英语讹体:「电è¯ã€ç”µæ¢¯ã€çƒ­å†·ï¼ˆæ°´ï¼‰ã€å«ç”Ÿé—´ã€ã€‚==  +==注3:「耶玛ã€ä¸ºå°åº¦æ•™æœ¯è¯­ï¼Œæ„为虚幻。== +  奥狄格å—呀,我们的æœé˜³ï¼Œä»–离开尘俗世界而去了。é¢è§’放光的派特里克呀,当åˆä»–在蕨丛间奔跑的脚步是何等轻疾ï¼å·å“­å§ï¼Œç­èŠ­#4,刮起你的风æ¥ï¼›å·å“­å§ï¼Œæµ·æ´‹å‘€ï¼Œåˆ®èµ·ä½ çš„æ—‹é£Žæ¥ã€‚ +==注4:「ç­èŠ­ã€ä¸ºä¼ é—»ä¸­æœ€æ—©å¼€è¾Ÿçˆ±å°”兰的三å§å¦¹ä¹‹ä¸€ï¼Œå¸¸è¢«å¥‰ä¸ºå¸æ­»äº¡å¥³ç¥žã€‚== +  ___ä»–åˆæ¥äº†ï¼Œå…¬æ°‘瞪ç€é—¨å¤–说。 +  ___è°ï¼Ÿä¿ºè¯´ã€‚ +  ___布å¢å§†ï¼Œä»–说。他在那儿æ¥å›žç«™å²—放哨足有å分钟了。 +  å¯ä¸å—,è€å¤©åœ¨ä¸Šã€‚俺瞅è§ä»–æŽ¢å¤´æŽ¢è„‘çš„å¼ æœ›ä¸€ä¸‹åˆæºœå¼€åŽ»äº†ã€‚ +  å°é˜¿å°”夫å¯å‚»äº†çœ¼ã€‚说真格的,傻了眼。 +  ___好基ç£å‘€ï¼ä»–说。我能起誓,就是他。 +  é²å‹ƒãƒ»çª¦ å†‰æŠŠå¸½å­æŽ¨åœ¨åŽè„‘壳上,这家伙çŒè¶³äº†é…’,å¯ç®—å¾—ä¸Šæ˜¯éƒ½æŸæž—最凶æ¶çš„æ¶æ£äº†ï¼Œä»–说: +  ___è°è¯´åŸºç£æ˜¯å¥½çš„? +  ___你说的是什么è¯ï¼Œé˜¿å°”夫说。 +ã€€ã€€è°æŠŠå¯æ€œçš„å°ä¸ªå„¿å¨åˆ©ãƒ»ç‹„æ ¼å—弄走了,é²å‹ƒãƒ»çª¦ 冉说,还算是个好基ç£å—? +  ï¼ï¼ï¼ï¼å“Žå‘€ï¼Œé˜¿å°”夫说ç€ï¼Œæƒ³æŠŠäº‹æƒ…对付过去算了。他总算把烦æ¼éƒ½ç»“æŸäº†ã€‚ +ã€€ã€€å¯æ˜¯é²å‹ƒãƒ»çª¦ 冉大喊大å«çš„ä¸ç­”应。 +  ___æˆ‘è¯´ï¼Œè°æŠŠå¯æ€œçš„å°ä¸ªå„¿å¨åˆ©ãƒ»ç‹„æ ¼å—弄走,è°å°±æ˜¯ä¸ªå¤§æ··è›‹ï¼ +  特里走过æ¥ã€‚给他使了个眼色å«ä»–安é™ï¼Œè¯´ä»–们这里是个有执照的体é¢é…’店,店内ä¸èƒ½å®¹è®¸è¿™æ ·çš„è¯è¯­ã€‚于是é²å‹ƒãƒ»çª¦ å†‰å“­èµ·æ´¾è¿ªãƒ»è¿ªæ ¼å—æ¥ï¼Œä¸€ç‚¹å„¿ä¹Ÿä¸å‡ã€‚ +  ___天下最好的人哪,他抽々噎々地说,最纯æ´çš„人å“呀。 +  眼泪说æ¥å°±æ¥ã€‚ä¿¡å£å¼€æ²³ã€‚顶好快回家去,去找他娶的那ä½å–œæ¬¢æ¢¦æ¸¸çš„å°æ¯ç‹—å§ï¼Œè¿½å±è‚¡æ³•警穆尼那个女儿,她娘在哈德å¨å…‹è¡—管一所公寓房å­ï¼Œç­å¡”姆・莱昂斯在那儿ä½è¿‡ï¼Œä»–说她åŠå¤œä¸¤ç‚¹é’Ÿä¸€ä¸ä¸ 挂 地在楼梯平å°ä¸Šæºœè¾¾ï¼Œèµ¤èº«éœ²ä½“让人看,æ¥è€…䏿‹’,ä¸åä¸å€š +一律欢迎。 +  ___æœ€é«˜è´µï¼Œæœ€çœŸè¯šçš„ï¼Œä»–è¯´ã€‚ä»–å°±è¿™ä¹ˆçš„èµ°äº†ï¼Œå¯æ€œçš„å°ä¸ªå­æ´¾è¿ªãƒ»ç‹„æ ¼å—呀。 +  他用沉é‡å¿ƒæƒ…和悲伤的眼泪,哀悼这那上天之光的陨ç­ã€‚ +  è€ç‹—加里文åˆå¼€å§‹å‘出低沉的å¼å£°ï¼Œè¿™å›žæ˜¯å¯¹é—¨è¾¹çª¥æŽ¢çš„布å¢å§†ã€‚ +  ___è¿›æ¥å§ï¼Œæ€Žä¹ˆå•¦ï¼Œå…¬æ°‘说。它ä¸ä¼šåƒæŽ‰ä½ çš„。 +  于是布å¢å§†æŠŠé³•鱼眼ç›ç›¯ä½äº†é‚£æ¡ç‹—,侧ç€èº«å­è¸…了进æ¥ã€‚他问特里,马ä¸ãƒ»åŽå®å®‰åœ¨ä¸åœ¨ã€‚ +  唷,基ç£éº¦åŸºç¿ï¼çº¦çœ‹é‚£äº›ä¿¡ä»¶ä¹‹ä¸€è¯´ã€‚你们è¦ä¸è¦å¬ä¸€å¬ +这个? +  他读起信æ¥ã€‚ +  ___ï½›å‘ˆéƒ½æŸæž— +ã€€ã€€ã€€ã€€ã€€éƒ½æŸæž—行政长官 +敬å¯è€…å°äººæ„¿ä¸ºä¸Šè¿°ç—›å¿ƒæ¡ˆä»¶æ•ˆåŠ›å°äººæ›¾äºŽ1900 å¹´2 月12 日布特尔监狱绞死约・盖æ©å°äººåˆ.....ï½ +  ___让俺们看å§ï¼Œçº¦ï¼Œä¿ºè¯´ã€‚ +  ___ï½›åœ¨å½­é¡¿ç»´å°”ç›‘ç‹±ç»žæ­»æ®‹æ€æ´ç»†ãƒ»è´´å°”悉特的列兵阿瑟・蔡斯å°äººåˆ.....ï½ +  ___耶稣 呀,俺说。 +  ___ï½›.....åœ¨æ¯”æž—é¡¿å¤„å†³æžæ¶çš„æ€äººçŠ¯æ‰˜å¾·ãƒ»å²å¯†æ–¯æ—¶ä»»åŠ©æ‰‹.....ï½ +  公民伸手抢信。 +  ___ç­‰ç€ï¼Œçº¦è¯´ã€‚ï½›å°äººå¥—绞索有妙法套ä½å‡ºä¸æ¥å¸Œæœ›å½•用å°äººå‘长官å°äººè´¹ç”¨äº”畿尼。 +             利物浦亨特街七å·å‰ƒå¤´å¸ˆå‚… +                哈・郎åšå°”å¾·ï½ã€€ã€€ã€€ã€€___一个æ€äººä¸çœ¨çœ¼çš„è›®å­ï¼Œå…¬æ°‘说。 +  ___é‚£å°å­å†™çš„䏿ˆä¸œè¥¿ï¼Œåˆç³Ÿåˆä¹±çš„,约说。拿走å§ï¼Œé˜¿å°”夫,拿得远々的。哈喽,布å¢å§†ï¼Œä½ è¦ä»€ä¹ˆï¼Ÿã€€ã€€äºŽæ˜¯ä»–们两讨论起这一点æ¥äº†ï¼Œå¸ƒå¢å§†è¯´ä¸æƒ³è¦ä»€ä¹ˆä¸èƒ½è¦ä»€ä¹ˆè¯·åŽŸè°…æ²¡æœ‰åˆ¥çš„æ„æ€ç­‰ã€…,然åŽä»–说好å§ï¼Œä»–è¦ä¸€æ”¯é›ªåŠ ã€‚è€å¤©ï¼Œä»–真是个谨慎会员,没错儿。 +  ___特里,把你那些头等臭货给我们æ¥ä¸€æ”¯ï¼Œçº¦è¯´ã€‚ +  阿尔夫这时在给俺们讲,有一个家伙寄æ¥ä¸€å¼ å¸¦é»‘框的报丧å¡ç‰‡ã€‚           [250ï¼½ +  ___都是黑国剃头的,他说。åªè¦ä»˜ä»–们五镑现金加旅费,他们连自己的è€å­ä¹Ÿæ„¿æ„绞死的。 +  他还告诉俺们,底下还有两个家伙等ç€ï¼Œåªç­‰ä»–从活æ¿å£å ä¸‹ï¼Œé©¬ä¸ŠæŠ“ä½ä»–的脚åŽè·Ÿå¾€ä¸‹æ‹½ï¼Œå‘¨åˆ°åœ°é“地å«ä»–æ–­æ°”ï¼Œäº‹æƒ…å®Œäº†è¿˜æŠŠç»³ç´¢å‰æ–­åˆ†æ®µå–掉,一个脑袋能å–几个先令。 +  在那黑暗的国土上,居ä½ç€å¤ä»‡å¿ƒåˆ‡çš„剃刀骑士们。他们手抓致人死命的绳索;是的,ä¸ç®¡æ˜¯è°æœ‰è¡€æ¡ˆï¼Œä»–们都用这圈将他套往埃里伯斯#1,因为那是我ç»ä¸å®¹è®¸çš„,主是这样说的。 +==注1:「埃里伯斯ã€ä¸ºå¸Œè…Šç¥žè¯ä¸­äººä¸–与冥府之间的幽暗世界。 +  于是他们开始谈论死刑问题,布å¢å§†å½“然就拿出了他那些原因喽ã€ç†ç”±å–½ç­‰ã€…一大套有关的鳕鱼ç†è®ºï¼Œé‚£æ¡ç‹—坿˜¯ä¸æ–­åœ°å—…他。有人跟俺念å¨è¿‡ï¼Œè¿™äº›çŠ¹å¤ªä½¬è®©ç‹—é—»ç€æœ‰ä¸€ç§ç‰¹æ®Šçš„æ°”味,     +  ___有一样东西是它起ä¸äº†ä½œç”¨çš„,阿尔夫说。 +  ___什么东西?约说。 +  ___被绞死的倒霉蛋的家伙,阿尔夫说。 +  ___真的å—? +  ___一点儿也ä¸å‡ï¼Œé˜¿å°”夫说。我å¬åŸºå°”曼汉监牢绞死无敌会的约布雷迪那时的狱长说的。他告诉我,他们绞过之åŽï¼ŒæŠŠä»–放下的时候那玩æ„儿对ç€ä»–们的脸直立ç€ï¼Œåƒä¸€æ ¹æ‹¨ç«æ£å„¿ä¼¼çš„。 +  ___有人说过,热情如炽 ,至死ä¸ä¼‘,约说。 +  ___这里å¯ä»¥ç”¨ç§‘学解释的,布å¢å§†è¯´ã€‚它ä¸è¿‡æ˜¯ä¸€ç§è‡ªç„¶çŽ°è±¡ï¼Œä½ ä»¬ä¸æ˜Žç™½å—,因为由于..... +  于是他说起了他那些绕脖å­è¯å¤´å„¿æ¥äº†ï¼Œåˆæ˜¯çŽ°è±¡åˆæ˜¯ç§‘学,这个现象啦那个现象的。 +  æ°å‡ºç§‘学家å¢ä¾æ³¢å°”德・布å¢é—¨å¾·å¤«ç‰¹æ•™æŽˆå…ˆç”Ÿå·²æå‡ºåŒ»å­¦æ ¹æ®é˜æ˜Žï¼Œä¾ç…§æœ€èŽ·åŒ»å­¦ç•Œèµžè®¸çš„ç§‘å­¦ä¼ ç»Ÿï¼Œæ€¥æ€§é¢ˆæ¤Žéª¨ 折åŠå…¶å¯¼è‡´çš„脊髓横断å¯è¢«è®¤ä¸ºå¿…将对人体内生殖器官神ç»ä¸­æž¢äº§ç”Ÿå¼ºçƒˆçš„神ç»èŠ‚åˆºæ¿€ï¼Œè‡´ä½¿cor +pora caverï¼nosa#2 中弹性细孔迅速扩张,血æµçž¬å³ç•…通,æµå…¥äººä½“结构内所谓阴茎å³ç”·æ€§å™¨å®˜éƒ¨åˆ†ï¼Œä»Žè€Œå½¢æˆåŒ»å­¦ç•Œæ‰€è°“in articulo mortis per diminutionemcapitis #3 ç—…æ€ä¸Šå‡æ¶¨å¤§çš„ç¹æ®–性勃起现象。 +==注2ï¼šæ‹‰ä¸æ–‡ï¼šã€Œæµ·ç»µä½“ã€ã€‚== +==注3ï¼šæ‹‰ä¸æ–‡ï¼šã€Œæ­»äº¡æ—¶æ–­é¢ˆæ‰€è‡´ã€ã€‚== + + + + +  æ°å‡ºç§‘学家å¢ä¾æ³¢å°”å¾·@布å¢é—¨å¾·å¤«ç‰¹æ•™æŽˆå…ˆç”Ÿå·²æå‡ºåŒ»å­¦æ ¹æ®ï¼Œ +é˜æ˜Žä¾ç…§æœ€èŽ·èµžè®¸çš„åŒ»å­¦ä¼ ç»Ÿï¼Œé¢ˆæ¤Žcㄤ 折与åŽéšè„Šé«“断裂å¯è¢«è®¤ä¸º +必将对人体内生殖器官神ç»ä¸­æž¢é€ æˆç¥žç»èŠ‚å¼ºçƒˆåˆºæ¿€ï¼Œè‡´ä½¿corpora caverï¼ +nosa#2 中弹性细孔迅速扩张,血æµçž¬å³ç•…通,æµå…¥äººä½“结构内所谓阴颈 +å³ç”·æ€§å™¨å®˜éƒ¨åˆ†ï¼Œä»Žè€Œå½¢æˆåŒ»å­¦ç•Œæ‰€è°“in articulo mortis per diminutionem +capitis #3 ç—…æ€ä¸Šå‡æ¶¨å¤§çš„ç¹æ®–性勃起现象。 +==注2ï¼šæ‹‰ä¸æ–‡ï¼šã€Œæµ·ç»µä½“ã€ã€‚== +==注3ï¼šæ‹‰ä¸æ–‡ï¼šã€Œæ­»äº¡æ—¶æ–­é¢ˆæ‰€è‡´ã€ã€‚== + diff --git a/intl/icu/source/extra/uconv/samples/utf8/croat.txt b/intl/icu/source/extra/uconv/samples/utf8/croat.txt new file mode 100644 index 000000000..406e264c0 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/croat.txt @@ -0,0 +1,2 @@ +Dobar dan! Kako ste? Ja sam Marina +Dodigović. Kako se Vi zovete? diff --git a/intl/icu/source/extra/uconv/samples/utf8/danish.txt b/intl/icu/source/extra/uconv/samples/utf8/danish.txt new file mode 100644 index 000000000..70111d290 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/danish.txt @@ -0,0 +1,18 @@ + Foto ______ det formodede fødehus, hjørnet ______ Hans Jensensstræde og Bangs Boder. + (H. C. Andersens Hus, Odense). + +BARNDOMSOMGIVELSERNE + Skønt H. C. Andersens barndomsomgivelser var meget fattige, blev de i hans rige fantasi + solbeskinnede. + Der findes en mandtalsliste fra nogle fÃ¥ Ã¥r ______ H. C. Andersens fødsel. Den er ______ 1801 + og den giver klare oplysninger om, hvor mange der boede ______ Odense og hvad de var + beskæftigede ______. Den omfatter 1199 husstande. Hvis man fordeler disse ______ erhverv, + fÃ¥r man 102 embeds- og bestillingsmænd, 26 officerer, 12 der beskæftiger sig med + immaterielle erhverv, 81 som lever ______ handel, 36 værtshusholdere, 460 hÃ¥ndværkere, 39 + avlsmænd og urtemænd, 121 soldater, 97 daglejere, 139 enlige kvinder og + almissemedlemmer, 29 pensionister og rentenydere. + H. C. Andersens forældre tilhørte samfundets laveste lag. Faderen var friskomager, og + nÃ¥r han meldte sig ______ militærtjeneste ______ Napoleons side, har det nok ikke sÃ¥ meget været + idealisme som praktisk økonomi. For at sikre sig en soldats værgeløn. Han kom ikke + længere end ______ Holsten. Han fik høj feber og mÃ¥tte sendes hjem. Da han kom hjem, + forværredes sygdommen og han døde. diff --git a/intl/icu/source/extra/uconv/samples/utf8/greek.txt b/intl/icu/source/extra/uconv/samples/utf8/greek.txt new file mode 100644 index 000000000..383222ea1 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/greek.txt @@ -0,0 +1,44 @@ + + + + + + + + +[σταÏÏ„ ηεÏε] ΓΕÎΕΣΙΣ 1-3 +Î¨Î·Î±Ï€Ï„ÎµÏ 1 +
+1. +ͲΕν αÏχη εποιησεν ο θεος τον ουÏανον και την γην. +
+2. +η δε γη ην +
+αοÏατος και ακατασκευαστος, και σκοτος επανω της αβυσσου, και +
+πνευμα θεου επεφεÏετο επανω του υδατος. +
+3. +και ειπεν ο θεος +
+Γενηθητω φως. και εγενετο φως. +
+4. +και ειδεν ο θεος το φως οτι +
+καλον. και διεχωÏισεν ο θεος ανα μεσον του φωτος και ανα μεσον +
+του σκοτους. +
+5. +και εκαλεσεν ο θεος το φως ημεÏαν και το σκοτος +
+εκαλεσεν νυκτα. και εγενετο εσπεÏα και εγενετο Ï€Ïωι, ημεÏα μια. +
+ + + + + + diff --git a/intl/icu/source/extra/uconv/samples/utf8/hangul.txt b/intl/icu/source/extra/uconv/samples/utf8/hangul.txt new file mode 100644 index 000000000..3e8071c4a --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/hangul.txt @@ -0,0 +1,2 @@ +ë„서관 +한국 diff --git a/intl/icu/source/extra/uconv/samples/utf8/hania.txt b/intl/icu/source/extra/uconv/samples/utf8/hania.txt new file mode 100644 index 000000000..c7e36c6f7 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/hania.txt @@ -0,0 +1,2 @@ +圖書館 +韓國 \ No newline at end of file diff --git a/intl/icu/source/extra/uconv/samples/utf8/jap.txt b/intl/icu/source/extra/uconv/samples/utf8/jap.txt new file mode 100644 index 000000000..47a6b3eca --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/jap.txt @@ -0,0 +1,37 @@ +ï»¿ã‚¦ã‚¤ãƒ³ã‚«ãƒªãƒƒã‚¹ã®æ—¥æœ¬èªž +  「ユーザーフレンドリã€ï½œã¨ï½œå‘¼ã°ã‚Œã‚‹ï½œ +  りゆã†ã¯ã€ã”ã |普通ã®ï½œäººãŒã”ã| +  関å˜ã« |使用 |方法を|マスター|ã§ãã€ï½œ +  毎日ã®ï½œã‚¿ã‚¤ãƒ— | 㮠|仕事ã«ã™ã | +  役立ã¦ã‚‹ã“ã¨ãŒã§ãã‚‹ã“ã¨ã‹ã‚‰ãã¦ã„る。| +  よã°ã‚Œã‚‹ã€€ã€€ã€€ã€€ï¼ã€€ã€€ã€€  呼ã°ã‚Œã‚‹ +  りゅã†ã¯ã€ã”ã ï¼ã€€ã€€ã€€ã€€ ç†ç”±ã¯ã€ã”ã +  ãµã¤ã†ã®ã€€ã€€ã€€ã€€ï¼ã€€ã€€ã€€ã€€æ™®é€šã® +  ã²ã¨ãŒã”ã   ï¼ã€€ã€€ã€€ã€€äººãŒã”ã +  ã‹ã‚“ãŸã‚“ã«ã€€ã€€ã€€ï¼ã€€ã€€ã€€ã€€ç°¡å˜ã« +  ã—よã†ã€€ã€€ã€€ã€€ã€€ï¼ã€€ã€€ã€€ã€€ä½¿ç”¨ +  ã»ã†ã»ã†ã‚’   ï¼ã€€ã€€ã€€ã€€æ–¹æ³•ã‚’ +  ã¾ã„ã«ã¡ã®ã€€ã€€ã€€ï¼ã€€ã€€ã€€ã€€æ¯Žæ—¥ã® +  ã—ã”ã¨ã«ã™ã  ï¼ã€€ã€€ã€€ã€€ä»•事ã«ã™ã +  やãã ã¦ã‚‹ã“ã¨ãŒã§ãã‚‹ã“ã¨ã‹ã‚‰ãã¦ã„ã‚‹ã€‚ï¼ +  役立ã¦ã‚‹ã“ã¨ãŒã§ãã‚‹ã“ã¨ã‹ã‚‰ãã¦ã„る。 +ã‚ ã„ ã†ã€€ãˆã€€ãŠã€€ +ã ãƒã€€ã… ã‡ã€€ã‰ +ã‹ã€€ã ã ã‘ ã“  ãゃ ãゅ ãょ +ã• ã— ã™ã€€ã›ã€€ã  ã—ゃ  ã—ã‚… ã—ã‡ã€€ã—ょ +ãŸã€€ã¡ã€€ã¤ã€€ã¦ã€€ã¨ã€€ã€€ ã¡ã‚ƒã€€ã¡ã‚… ã¡ã‡ ã¡ã‚‡ +ãªã€€ã«ã€€ã¬ã€€ã­ã€€ã®ã€€ã€€ ã«ã‚ƒã€€ ã«ã‚… ã«ã‚‡ +ã¯ã€€ã²ã€€ãµã€€ã¸ã€€ã»ã€€ã€€ ã²ã‚ƒ  ã²ã‚… ã²ã‚‡ + ãµã ãµãƒã€€ãµã‡ã€€ãµã‰ +ã¾ã€€ã¿ã€€ã‚€ã€€ã‚ も   ã¿ã‚ƒã€€ã€€ã¿ã‚…  ã¿ã‚‡ +や (ã„) ゆ (ãˆ) よ   ゃ   ゅ   ょ +ら り る れ ã‚  りゃ りゅ  りょ +ã‚ ゠(ã†) ゑ  ã‚’ ゎ  ヰ   ヱ +ã‚“ ã‚” 㣠カ ケ +ãŒã€€ãŽã€€ã ã’ ã”   ãŽã‚ƒã€€ãŽã‚… ãŽã‚‡ + ãゎ ã㇠+ã– ã˜ã€€ãšã€€ãœã€€ãžã€€ã€€ã˜ã‚ƒã€€ ã˜ã‚…  ã˜ã‡ã€€ã˜ã‚‡ +ã ã€€ã¢ã€€ã¥ã€€ã§ã€€ã©ã€€ã€€ã¢ã‚ƒã€€ã¢ãƒã€€ ã¢ã‚… ã¢ã‡ã€€ã¢ã‰ +ã°ã€€ã³ã€€ã¶ã€€ã¹ã€€ã¼ã€€ã€€ã€€ã³ã‚ƒã€€ã³ã‚… ã³ã‚‡ +ã±ã€€ã´ã€€ã·ã€€ãºã€€ã½ã€€ã€€ã€€ã´ã‚ƒã€€ã´ã‚… ã´ã‚‡ +ワ ウィ ウ ウェ ウォ ヴァ ヴィ ヴ ヴェ ヴォ diff --git a/intl/icu/source/extra/uconv/samples/utf8/korean.txt b/intl/icu/source/extra/uconv/samples/utf8/korean.txt new file mode 100644 index 000000000..bc2c3dccb --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/korean.txt @@ -0,0 +1,20 @@ +중앙ì¼ë³´ - 사건/사회 - 극지íƒí—˜ã€€í˜‘회결 +극지íƒí—˜ã€€í˜‘회결성 체계ì ã€€ì—°êµ¬ + 지구ìƒì˜ã€€ï¼“대 극지ë¼ã€€ë¶ˆë¦¬ëŠ”ã€€ë‚¨ê·¹Â·ë¶ê·¹Â·ì—베레스트를 한번ì´ë¼ +ë„ 다녀와야 정회ì›ìœ¼ë¡œã€€ë“¤ì–´ê°ˆã€€ìˆ˜ã€€ìžˆëŠ”ã€€í•œêµ­ê·¹ì§€í˜‘íšŒê°€ã€€ë°œì¡±ë‹¤ +.윤ì„순(한·러시아극ë™í˜‘회 ìƒìž„고문)씨과 í™ì„하(사람과 산 발 +í–‰ì¸ï¼‰ì”¨ê°€ã€€ê·¹ì§€íƒí—˜ê³¼ã€€ì´ê³³ì—서ì˜ã€€í•™ìˆ ì—°êµ¬ë¥¼ã€€ì²´ê³„ì ã€€ìœ¼ë¡œã€€í•´ë³´ìž +는ë°ã€€ëœ»ì„ 같ì´í•˜ê³ ã€€í˜‘회결성ì— 나섰다. + ì´ã€€í˜‘회는 지난 16ì¼ã€€í˜¸í…”ì‹ ë¼ì—서 2ï¼ì—¬ëª…ì˜ã€€ì¤€ë¹„위ì›ì´ã€€ì°¸ +ì„한 가운ë°ã€€ì¤€ë¹„위ì›íšŒë¥¼ã€€ê°€ì¡Œìœ¼ë©°ã€€ë‚´ë…„ 3월 정ì‹ã€€ì¶œë²”한다. + ì´ã€€í˜‘회ì—는 3극오지를 모ë‘ 밟ì€ã€€ì„¸ê³„ì ì¸ã€€ì‚°ì•…ì¸ã€€í—ˆì˜í˜¸ì”¨ë¥¼ +비롯해 ì—베레스트를 올ëžë˜ã€€ì—„í™ê¸¸Â·ë°•ì˜ì„·정승권씨 등 국내ì˜ã€€ +저명한 산악ì¸ë“¤ì´ã€€íšŒì›ìœ¼ë¡œã€€ì°¸ì—¬í• ã€€ê²ƒìœ¼ë¡œã€€ë³´ì¸ë‹¤ï¼Ž + 극지협회는 극지íƒí—˜ê°€ëŠ”ã€€ë¬¼ë¡ ã€€í•™ê³„Â·ê²½ì œê³„ì¸ì‚¬ë“¤ë„ 참가시킬 계 +íšì´ë‹¤ï¼Žã€€ë‹¨ìˆœí•œã€€íƒí—˜ì°¨ì›ì„ 넘어 지구ìƒì— 마지막 남ì€ã€€ìžì›ì˜ã€€ +ë³´ê³ ì¸ã€€ê·¹ì§€ì—서ì˜ã€€ì—°êµ¬í™œë™ë„ 하겠다는 ì˜ë¯¸ë‹¤ï¼Ž + 한국극지협회가 발족하면 우리 극지íƒí—˜ì´ã€€ì²´ê³„í™”ë ã€€ê²ƒìœ¼ë¡œã€€ê¸°ëŒ€ +ë˜ê³ ìžˆë‹¤ï¼Ží˜‘회는 극지관련ìžë£Œë¥¼ã€€ë°ì´í„°ë² ì´ìŠ¤ë¡œã€€ì¶•ì í•´ã€€ì˜¤ì§€íƒí—˜ê°€ +들ì—게 제공할 계íšì´ë‹¤ï¼Ž +입력시간 +â“’ 중앙ì¼ë³´ì‚¬ diff --git a/intl/icu/source/extra/uconv/samples/utf8/linji.txt b/intl/icu/source/extra/uconv/samples/utf8/linji.txt new file mode 100644 index 000000000..8eb0ec003 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/linji.txt @@ -0,0 +1,918 @@ +*臨濟語錄 +鎮州臨濟慧照禪師語錄åºã€‚ +延康殿學士金紫光祿大夫真。 +定府路安撫使兼馬步è»éƒ½ç¸½ã€‚ +管兼知æˆå¾·è»åºœäº‹é¦¬é˜²ã€æ’°ã€‚ +é»ƒæª—å±±é ­ã€æ›¾é­ç—›æ£’ã€‚å¤§æ„šè‚‹ä¸‹ã€æ–¹è§£ç¯‰æ‹³ã€‚饒 +舌è€å©†ã€å°¿åºŠé¬¼å­ã€‚這風顛漢ã€å†æ‹è™Žé¬šã€‚å·–è°· +æ ½æ¾ã€å¾Œäººæ¨™æ¦œã€‚é’頭斸地ã€å¹¾è¢«æ´»åŸ‹ã€‚肯箇後 +生ã€é©€å£è‡ªæ‘‘。辭焚机案ã€åæ–·èˆŒé ­ã€‚ä¸æ˜¯æ²³å—〠+ä¾¿æ­¸æ²³åŒ—ã€‚é™¢è‡¨å¤æ¸¡ã€é‹æ¿Ÿå¾€ä¾†ã€‚æŠŠå®šè¦æ´¥ã€å£ +ç«‹è¬ä»žã€‚奪人奪境ã€é™¶é‘„仙陀。三è¦ä¸‰çŽ„ã€éˆéŽš +衲å­ã€‚常在家èˆã€ä¸é›¢é€”中。無ä½çœŸäººã€é¢é–€å‡º +入。兩堂齊å–ã€è³“ä¸»æ­·ç„¶ã€‚ç…§ç”¨åŒæ™‚ã€æœ¬ç„¡å‰ +後。è±èбå°åƒã€è™›è°·å‚³è²ã€‚妙應無方ã€ä¸ç•™æœ• +跡。拂衣å—é‚ã€æˆ¾æ­¢å¤§åã€‚èˆˆåŒ–å¸«æ‰¿ã€æ±å ‚迎 +ä¾ã€‚銅瓶éµï¼£ã€æŽ©å®¤æœè©žã€‚æ¾è€é›²é–‘ã€æ› ç„¶è‡ª +é©ã€‚é¢å£æœªå¹¾ã€å¯†ä»˜å°‡çµ‚。正法誰傳ã€çžŽé©¢é‚Š +æ»…ã€‚åœ“è¦ºè€æ¼”ã€ä»Šç‚ºæµé€šã€‚é»žæ’¿å°‡ä¾†ã€æ•…ç„¡å·® +舛。唯餘一å–ã€å°šè¦å•†é‡ã€‚具眼禪æµã€å†€ç„¡è³º +舉。宣和庚å­ä¸­ç§‹æ—¥è¬¹åºã€‚ +鎮州臨濟慧照禪師語錄。 +ä½ä¸‰è–嗣法å°å¸«æ…§ç„¶é›†ã€‚ +府主王常ä¾ã€èˆ‡è«¸å®˜è«‹å¸«å‡åº§ã€‚師上堂云ã€å±± +僧今日事ä¸ç²å·²ã€æ›²é †äººæƒ…ã€æ–¹ç™»æ­¤åº§ã€‚若約 +祖宗門下ã€ç¨±æšå¤§äº‹ã€ç›´æ˜¯é–‹å£ä¸å¾—ã€ç„¡çˆ¾æŽª +足處。山僧此日以常ä¾å …è«‹ã€é‚£éš±ç¶±å®—。還有 +作家戰將ã€ç›´ä¸‹å±•陣開旗麼。å°çœ¾è­‰æ“šçœ‹ã€‚僧 +å•ã€å¦‚何是佛法大æ„。師便å–。僧禮拜。師云〠+這箇師僧ã€å»å ªæŒè«–。å•ã€å¸«å”±èª°å®¶æ›²ã€å®—風嗣 +é˜¿èª°ã€‚å¸«äº‘ã€æˆ‘在黃蘗處ã€ä¸‰åº¦ç™¼å•ã€ä¸‰åº¦è¢«æ‰“。 +僧擬議。師便å–ã€éš¨å¾Œæ‰“云ã€ä¸å¯å‘虛空A釘 +橛去也。有座主å•ã€ä¸‰ä¹˜å二分教ã€è±ˆä¸æ˜¯æ˜Ž +佛性。師云ã€è’è‰ä¸æ›¾é‹¤ã€‚主云ã€ä½›è±ˆè³ºäººä¹Ÿã€‚ +師云ã€ä½›åœ¨ä»€éº¼è™•。主無語。師云ã€å°å¸¸ä¾å‰ã€æ“¬ +çžžè€åƒ§ã€‚速退速退。妨他別人諸å•ã€‚å¾©äº‘ã€æ­¤æ—¥ +法筵ã€ç‚ºä¸€å¤§äº‹æ•…。更有å•話者麼。速致å•來。 +爾纔開å£ã€æ—©å‹¿äº¤æ¶‰ä¹Ÿã€‚何以如此。ä¸è¦‹é‡‹å°Š +äº‘ã€æ³•離文字ã€ä¸å±¬å› ä¸åœ¨ç·£æ•…。為爾信ä¸åŠã€ +æ‰€ä»¥ä»Šæ—¥è‘›è—¤ã€‚ææ»¯å¸¸ä¾èˆ‡è«¸å®˜å“¡ã€çœ›ä»–ä½› +性。ä¸å¦‚且退。å–一å–云ã€å°‘信根人ã€çµ‚無了日。 +ä¹…ç«‹çé‡ã€‚ +師ã€å› ä¸€æ—¥åˆ°æ²³åºœã€‚府主王常ä¾ã€è«‹å¸«å‡åº§ã€‚ +時麻谷出å•ã€å¤§æ‚²åƒæ‰‹çœ¼ã€é‚£ç®‡æ˜¯æ­£çœ¼ã€‚師云〠+å¤§æ‚²åƒæ‰‹çœ¼ã€é‚£ç®‡æ˜¯æ­£çœ¼ã€é€Ÿé“速é“。麻谷拽 +師下座ã€éº»è°·å»å。師近å‰äº‘ã€ä¸å¯©ã€‚麻谷擬 +議。師亦拽麻谷下座ã€å¸«å»å。麻谷便出去。師 +便下座。 +上堂。云ã€èµ¤è‚‰åœ˜ä¸Šæœ‰ä¸€ç„¡ä½çœŸäººã€å¸¸å¾žæ±ç­‰ +諸人é¢é–€å‡ºå…¥ã€‚未證據者看看。時有僧出å•〠+如何是無ä½çœŸäººã€‚å¸«ä¸‹ç¦ªåºŠã€æŠŠä½äº‘ã€é“é“。其 +僧擬議。師托開云ã€ç„¡ä½çœŸäººæ˜¯ä»€éº¼ä¹¾å±Žæ©›ã€‚ +便歸方丈。 +上堂。有僧出禮拜。師便å–。僧云ã€è€å’Œå°šèŽ« +探頭好。師云ã€çˆ¾é“è½åœ¨ä»€éº¼è™•。僧便å–ã€‚åˆæœ‰ +僧å•ã€å¦‚何是佛法大æ„。師便å–。僧禮拜。師 +云ã€çˆ¾é“好å–也無。僧云ã€è‰è³Šå¤§æ•—。師云ã€éŽ +在什麼處。僧云ã€å†çНä¸å®¹ã€‚師便å–。是日兩堂 +首座相見ã€åŒæ™‚下å–。僧å•師ã€é‚„有賓主也無。 +師云ã€è³“主歷然。師云ã€å¤§çœ¾ã€è¦æœƒè‡¨æ¿Ÿè³“主å¥ã€ +å•å–堂中二首座。便下座。 +上堂。僧å•ã€å¦‚何是佛法大æ„。師豎起拂å­ã€‚ +僧便å–。師便打。åˆåƒ§å•ã€å¦‚何是佛法大æ„。師 +亦豎起拂å­ã€‚僧便å–。師亦å–。僧擬議。師便 +打。師乃云ã€å¤§çœ¾ã€å¤«ç‚ºæ³•者ã€ä¸é¿å–ªèº«å¤±å‘½ã€‚我 +二åå¹´ã€åœ¨é»ƒè˜—先師處ã€ä¸‰åº¦å•佛法的的大 +æ„ã€ä¸‰åº¦è’™ä»–賜æ–ã€‚å¦‚è’¿æžæ‹‚著相似。如今更 +æ€å¾—一頓棒喫。誰人為我行得。時有僧出眾 +äº‘ã€æŸç”²è¡Œå¾—。師拈棒與他。其僧擬接。師便打。 +上堂。僧å•ã€å¦‚何是åŠåˆƒä¸Šäº‹ã€‚師云ã€ç¦äº‹ã€ç¦ +事。僧擬議。師便打。å•ã€ç¥‡å¦‚石室行者ã€è¸ç¢“忘 +å»ç§»è…³ã€å‘ä»€éº¼è™•åŽ»ã€‚å¸«äº‘ã€æ²’溺深泉。師乃 +云ã€ä½†æœ‰ä¾†è€…ã€ä¸è™§æ¬ ä¼Šã€‚總識伊來處。若與麼 +ä¾†ã€æ°ä¼¼å¤±å»ã€‚ä¸èˆ‡éº¼ä¾†ã€ç„¡ç¹©è‡ªç¸›ã€‚一切時中〠+èŽ«äº‚æ–Ÿé…Œã€‚æœƒèˆ‡ä¸æœƒã€éƒ½ä¾†æ˜¯éŒ¯ã€‚分明與麼é“。 +一任天下人貶å‰ã€‚ä¹…ç«‹çé‡ã€‚ +上堂。云ã€ä¸€äººåœ¨å­¤å³°é ‚上ã€ç„¡å‡ºèº«ä¹‹è·¯ã€‚一 +人在åå­—è¡—é ­ã€äº¦ç„¡å‘背。那箇在å‰ã€é‚£ç®‡åœ¨ +後。ä¸ä½œç¶­æ‘©è©°ã€ä¸ä½œå‚…大士。çé‡ã€‚ +ä¸Šå ‚ã€‚äº‘ã€æœ‰ä¸€äººã€è«–劫在途中ã€ä¸é›¢å®¶èˆã€‚有 +一人ã€é›¢å®¶èˆã€ä¸åœ¨é€”中。那箇åˆå—人天供養。 +便下座。 +上堂。僧å•ã€å¦‚何是第一å¥ã€‚師云ã€ä¸‰è¦å°é–‹ +朱點å´ã€æœªå®¹æ“¬è­°ä¸»è³“分。å•ã€å¦‚何是第二 +å¥ã€‚師云ã€å¦™è§£è±ˆå®¹ç„¡è‘—å•ã€æ¼šå’Œçˆ­è² æˆªæµæ©Ÿã€‚ +å•ã€å¦‚何是第三å¥ã€‚師云ã€çœ‹å–æ£šé ­å¼„å‚€å„¡ã€æŠ½ +牽都來A有人。師åˆäº‘ã€ä¸€å¥èªžé ˆå…·ä¸‰çŽ„ +é–€ã€ä¸€çŽ„é–€é ˆå…·ä¸‰è¦ã€æœ‰æ¬Šæœ‰ç”¨ã€‚æ±ç­‰è«¸äººã€ä½œ +麼生會。下座。 +師晚åƒç¤ºçœ¾äº‘ã€æœ‰æ™‚奪人ä¸å¥ªå¢ƒã€æœ‰æ™‚奪境 +ä¸å¥ªäººã€æœ‰æ™‚äººå¢ƒä¿±å¥ªã€æœ‰æ™‚人境俱ä¸å¥ªã€‚時〠+有僧å•ã€å¦‚何是奪人ä¸å¥ªå¢ƒã€‚師云ã€ç…¦æ—¥ç™¼ç”Ÿ +鋪地錦ã€ç“”孩垂髮白如絲。僧云ã€å¦‚何是奪境 +ä¸å¥ªäººã€‚師云ã€çŽ‹ä»¤å·²è¡Œå¤©ä¸‹éã€å°‡è»å¡žå¤–絕 +煙塵。僧云ã€å¦‚何是人境兩俱奪。師云ã€å¹¶æ±¾çµ• +ä¿¡ã€ç¨è™•一方。僧云ã€å¦‚何是人境俱ä¸å¥ªã€‚師云〠+王登寶殿ã€é‡Žè€è¬³æ­Œã€‚師乃云ã€ä»Šæ™‚學佛法者〠+ä¸”è¦æ±‚真正見解。若得真正見解ã€ç”Ÿæ­»ä¸æŸ“〠+去ä½è‡ªç”±ã€‚ä¸è¦æ±‚殊å‹ã€æ®Šå‹è‡ªè‡³ã€‚铿µã€ç¥‡å¦‚ +自å¤å…ˆå¾·ã€çš†æœ‰å‡ºäººåº•路。如山僧指示人處〠+祇è¦çˆ¾ä¸å—人惑。è¦ç”¨ä¾¿ç”¨ã€æ›´èŽ«é²ç–‘。如今 +學者ä¸å¾—ã€ç—…在甚處。病在ä¸è‡ªä¿¡è™•。爾若自 +ä¿¡ä¸åŠã€å³ä¾¿å¿™å¿™åœ°å¾‡ä¸€åˆ‡å¢ƒè½‰ã€è¢«ä»–è¬ +境回æ›ã€ä¸å¾—自由。爾若能歇得念念馳求心〠+便與祖佛ä¸åˆ¥ã€‚爾欲得識祖佛麼。祇爾é¢å‰ +è½æ³•底是。學人信ä¸åŠã€ä¾¿å‘外馳求。設求得 +者ã€çš†æ˜¯æ–‡å­—å‹ç›¸ã€çµ‚ä¸å¾—他活祖æ„。莫錯ã€è«¸ +禪德。此時ä¸é‡ã€è¬åŠ«åƒç”Ÿã€è¼ªå›žä¸‰ç•Œã€å¾‡å¥½ +境掇去ã€é©¢ç‰›è‚šï¼¡ç”Ÿã€‚铿µã€ç´„山僧見處ã€èˆ‡é‡‹ +迦ä¸åˆ¥ã€‚ä»Šæ—¥å¤šèˆ¬ç”¨è™•ã€æ¬ å°‘什麼。六é“神光〠+未曾間歇。若能如是見得ã€ç¥‡æ˜¯ä¸€ç”Ÿç„¡äº‹äººã€‚ +大德ã€ä¸‰ç•Œç„¡å®‰ã€çŒ¶å¦‚ç«å®…ã€‚æ­¤ä¸æ˜¯çˆ¾ä¹…åœä½ +處。無常殺鬼ã€ä¸€å‰Žé‚£é–“ã€ä¸æ€è²´è³¤è€å°‘ã€‚çˆ¾è¦ +與祖佛ä¸åˆ¥ã€ä½†èŽ«å¤–æ±‚ã€‚çˆ¾ä¸€å¿µå¿ƒä¸Šæ¸…æ·¨å…‰ã€ +æ˜¯çˆ¾å±‹ï¼¡æ³•èº«ä½›ã€‚çˆ¾ä¸€å¿µå¿ƒä¸Šç„¡åˆ†åˆ¥å…‰ã€æ˜¯ +çˆ¾å±‹ï¼¡å ±èº«ä½›ã€‚çˆ¾ä¸€å¿µå¿ƒä¸Šç„¡å·®åˆ¥å…‰ã€æ˜¯çˆ¾ +å±‹ï¼¡åŒ–èº«ä½›ã€‚æ­¤ä¸‰ç¨®èº«ã€æ˜¯çˆ¾å³ä»Šç›®å‰è½æ³• +底人。祇為ä¸å‘å¤–é¦³æ±‚ã€æœ‰æ­¤åŠŸç”¨ã€‚æ“šç¶“è«–å®¶ã€ +å–三種身為極則。約山僧見處ã€ä¸ç„¶ã€‚此三種 +身是å言ã€äº¦æ˜¯ä¸‰ç¨®ä¾ã€‚å¤äººäº‘ã€èº«ä¾ç¾©ç«‹ã€åœŸ +æ“šé«”è«–ã€‚æ³•æ€§èº«ã€æ³•æ€§åœŸã€æ˜ŽçŸ¥æ˜¯å…‰å½±ã€‚大德ã€çˆ¾ +且識å–å¼„å…‰å½±åº•äººã€æ˜¯è«¸ä½›ä¹‹æœ¬æºã€ä¸€åˆ‡è™• +æ˜¯é“æµæ­¸èˆè™•。是爾四大色身ã€ä¸è§£èªªæ³•è½ +法。脾胃è‚膽ã€ä¸è§£èªªæ³•è½æ³•。虛空ä¸è§£èªªæ³• +è½æ³•ã€‚æ˜¯ä»€éº¼è§£èªªæ³•è½æ³•ã€‚æ˜¯çˆ¾ç›®å‰æ­·æ­·åº•〠+å‹¿ä¸€ç®‡å½¢æ®µå­¤æ˜Žã€æ˜¯é€™ç®‡è§£èªªæ³•è½æ³•。若如 +是見得ã€ä¾¿èˆ‡ç¥–ä½›ä¸åˆ¥ã€‚ä½†ä¸€åˆ‡æ™‚ä¸­ã€æ›´èޫ間 +æ–·ã€è§¸ç›®çš†æ˜¯ã€‚ç¥‡ç‚ºæƒ…ç”Ÿæ™ºéš”ã€æƒ³è®Šé«”æ®Šã€æ‰€ä»¥ +輪回三界ã€å—種種苦。若約山僧見處ã€ç„¡ä¸ç”š +æ·±ã€ç„¡ä¸è§£è„«ã€‚铿µã€å¿ƒæ³•ç„¡å½¢ã€é€šè²«å方。在眼 +曰見ã€åœ¨è€³æ›°èžã€åœ¨é¼»å—…香ã€åœ¨å£è«‡è«–ã€åœ¨æ‰‹åŸ· +æ‰ã€åœ¨è¶³é‹å¥”。本是一精明ã€åˆ†ç‚ºå…­å’Œåˆã€‚一 +心既無ã€éš¨è™•è§£è„«ã€‚å±±åƒ§èˆ‡éº¼èªªã€æ„在什麼處。 +ç¥‡ç‚ºé“æµä¸€åˆ‡é¦³æ±‚心ä¸èƒ½æ­‡ã€ä¸Šä»–å¤äººé–‘ +æ©Ÿå¢ƒã€‚é“æµã€å–山僧見處ã€å斷報化佛頭ã€å地 +滿心ã€çŒ¶å¦‚客作兒ã€ç­‰å¦™äºŒè¦ºã€æ“”枷鎖漢ã€ç¾…æ¼¢ +辟支ã€çŒ¶å¦‚å»ç©¢ã€è©ææ¶…槃ã€å¦‚繫驢橛。何以如 +æ­¤ã€ç¥‡ç‚ºé“æµä¸é”ä¸‰ç¥‡åŠ«ç©ºã€æ‰€ä»¥æœ‰æ­¤éšœç¤™ã€‚ +若是真正é“人ã€çµ‚ä¸å¦‚是。但能隨緣消舊業〠+ä»»é‹è‘—衣裳ã€è¦è¡Œå³è¡Œã€è¦åå³åã€ç„¡ä¸€å¿µå¿ƒ +希求佛果。緣何如此。å¤äººäº‘ã€è‹¥æ¬²ä½œæ¥­æ±‚佛〠+ä½›æ˜¯ç”Ÿæ­»å¤§å…†ã€‚å¤§å¾·ã€æ™‚光坿ƒœã€‚祇擬å‚å®¶æ³¢ +波地ã€å­¸ç¦ªå­¸é“ã€èªåèªå¥ã€æ±‚ä½›æ±‚ç¥–ã€æ±‚善知 +è­˜æ„度。莫錯ã€é“æµã€‚爾祇有一箇父æ¯ã€æ›´æ±‚何 +物。爾自返照看。å¤äººäº‘ã€æ¼”è‹¥é”多失å»é ­ã€æ±‚ +心歇處å³ç„¡äº‹ã€‚大德ã€ä¸”è¦å¹³å¸¸ã€èŽ«ä½œæ¨¡æ¨£ã€‚æœ‰ +一般ä¸è­˜å¥½æƒ¡ç¦¿å¥´ã€ä¾¿å³è¦‹ç¥žè¦‹é¬¼ã€æŒ‡æ±åŠƒ +西ã€å¥½æ™´å¥½é›¨ã€‚如是之æµã€ç›¡é ˆæŠµå‚µã€å‘é–»è€å‰ã€ +åžç†±éµä¸¸æœ‰æ—¥ã€‚好人家男女ã€è¢«é€™ä¸€èˆ¬é‡Žç‹ +精魅所著ã€ä¾¿å³ææ€ªã€‚瞎屢生ã€ç´¢é£¯éŒ¢æœ‰æ—¥ +在。 +師示眾云ã€é“æµã€åˆ‡è¦æ±‚å–真正見解ã€å‘天下 +橫行ã€å…被這一般精魅惑亂。無事是貴人。但 +莫造作ã€ç¥‡æ˜¯å¹³å¸¸ã€‚爾擬å‘外å‚家求éŽã€è¦“è…³ +手。錯了也。祇擬求佛ã€ä½›æ˜¯åå¥ã€‚爾還識馳求 +åº•éº¼ã€‚ä¸‰ä¸–åæ–¹ä½›ç¥–出來ã€ä¹Ÿç¥‡ç‚ºæ±‚法。如今 +åƒå­¸é“æµã€ä¹Ÿç¥‡ç‚ºæ±‚法。得法始了。未得ã€ä¾å‰ +輪回五é“。云何是法。法者是心法。心法無形〠+é€šè²«åæ–¹ã€ç›®å‰ç¾ç”¨ã€‚人信ä¸åŠã€ä¾¿ä¹ƒèªåèª +å¥ã€å‘æ–‡å­—ä¸­ã€æ±‚æ„åº¦ä½›æ³•ã€‚å¤©åœ°æ‡¸æ®Šã€‚é“æµã€å±± +僧說法ã€èªªä»€éº¼æ³•。說心地法。便能入凡入è–〠+入淨入穢ã€å…¥çœŸå…¥ä¿—。è¦ä¸”䏿˜¯çˆ¾çœŸä¿—凡è–〠+能與一切真俗凡è–ã€å®‰è‘—å字。真俗凡è–ã€èˆ‡ +此人安著åå­—ä¸å¾—ã€‚é“æµã€æŠŠå¾—ä¾¿ç”¨ã€æ›´ä¸è‘— +åå­—ã€è™Ÿä¹‹ç‚ºçŽ„æ—¨ã€‚å±±åƒ§èªªæ³•ã€èˆ‡å¤©ä¸‹äººåˆ¥ã€‚祇 +如有箇文殊普賢ã€å‡ºä¾†ç›®å‰ã€å„ç¾ä¸€èº«å•法〠+纔é“å’¨å’Œå°šã€æˆ‘早辨了也。è€åƒ§ç©©åã€æ›´æœ‰é“ +æµã€ä¾†ç›¸è¦‹æ™‚ã€æˆ‘盡辨了也。何以如此。祇為我 +見處別ã€å¤–ä¸å–凡è–ã€å…§ä¸ä½æ ¹æœ¬ã€è¦‹å¾¹æ›´ä¸ +疑謬。 +師示眾云ã€é“æµã€ä½›æ³•無用功處ã€ç¥‡æ˜¯å¹³å¸¸ç„¡ +事。屙屎é€å°¿ã€è‘—衣喫飯ã€å›°ä¾†å³è‡¥ã€‚愚人笑 +æˆ‘ã€æ™ºä¹ƒçŸ¥ç„‰ã€‚å¤äººäº‘ã€å‘外作工夫ã€ç¸½æ˜¯ç™¡ +頑漢。爾且隨處作主ã€ç«‹è™•皆真。境來回æ›ä¸ +得。縱有從來習氣ã€äº”無間業ã€è‡ªç‚ºè§£è„«å¤§æµ·ã€‚ +今時學者ã€ç¸½ä¸è­˜æ³•ã€çŒ¶å¦‚觸鼻羊ã€é€¢è‘—物安 +在å£ï¼¡ã€‚奴郎ä¸è¾¨ã€è³“主ä¸åˆ†ã€‚如是之æµã€é‚ªå¿ƒ +å…¥é“ã€é¬§è™•å³å…¥ã€‚ä¸å¾—åç‚ºçœŸå‡ºå®¶äººã€æ­£æ˜¯çœŸ +俗家人。夫出家者ã€é ˆè¾¨å¾—平常真正見解ã€è¾¨ +佛辨魔ã€è¾¨çœŸè¾¨å½ã€è¾¨å‡¡è¾¨è–。若如是辨得ã€å +真出家。若魔佛ä¸è¾¨ã€æ­£æ˜¯å‡ºä¸€å®¶å…¥ä¸€å®¶ã€‚å–š +ä½œé€ æ¥­çœ¾ç”Ÿã€æœªå¾—å為真出家。祇如今有一 +箇佛魔ã€åŒé«”ä¸åˆ†ã€å¦‚æ°´ä¹³åˆã€éµçŽ‹å–«ä¹³ã€‚å¦‚æ˜Ž +çœ¼é“æµã€é­”ä½›ä¿±æ‰“ã€‚çˆ¾è‹¥æ„›è–æ†Žå‡¡ã€ç”Ÿæ­»æµ·ï¼¡ +浮沈。 +å•ã€å¦‚何是佛魔。師云ã€çˆ¾ä¸€å¿µå¿ƒç–‘處是魔。 +爾若é”å¾—è¬æ³•無生ã€å¿ƒå¦‚å¹»åŒ–ã€æ›´ç„¡ä¸€å¡µä¸€ +法ã€è™•è™•æ¸…æ·¨æ˜¯ä½›ã€‚ç„¶ä½›èˆ‡é­”ã€æ˜¯æŸ“淨二境。約 +山僧見處ã€ç„¡ä½›ç„¡çœ¾ç”Ÿã€ç„¡å¤ç„¡ä»Šã€å¾—者便得〠+䏿­·æ™‚節。無修無證ã€ç„¡å¾—ç„¡å¤±ã€‚ä¸€åˆ‡æ™‚ä¸­ã€æ›´ +ç„¡åˆ¥æ³•ã€‚è¨­æœ‰ä¸€æ³•éŽæ­¤è€…ã€æˆ‘說如夢如化。山 +åƒ§æ‰€èªªçš†æ˜¯ã€‚é“æµã€å³ä»Šç›®å‰å­¤æ˜Žæ­·æ­·åœ°è½ +è€…ã€æ­¤äººè™•è™•ä¸æ»¯ã€é€šè²«åæ–¹ã€ä¸‰ç•Œè‡ªåœ¨ã€‚入一 +切境差別ã€ä¸èƒ½å›žæ›ã€‚一剎那間ã€é€å…¥æ³•界ã€é€¢ +佛說佛ã€é€¢ç¥–說祖ã€é€¢ç¾…漢說羅漢ã€é€¢é¤“鬼說 +餓鬼。å‘ä¸€åˆ‡è™•ã€æ¸¸å±¥åœ‹åœŸã€æ•™åŒ–çœ¾ç”Ÿã€æœªæ›¾é›¢ +一念。隨處清淨ã€å…‰é€åæ–¹ã€è¬æ³•ä¸€å¦‚ã€‚é“æµã€å¤§ +丈夫兒ã€ä»Šæ—¥æ–¹çŸ¥æœ¬ä¾†ç„¡äº‹ã€‚祇為爾信ä¸åŠã€ +å¿µå¿µé¦³æ±‚ã€æ¨é ­è¦“é ­ã€è‡ªä¸èƒ½æ­‡ã€‚å¦‚åœ“é “è© +è–©ã€å…¥æ³•界ç¾èº«ã€å‘淨土中ã€åŽ­å‡¡å¿»è–。如此之 +æµã€å–æ¨æœªå¿˜ã€æŸ“淨心在。如禪宗見解ã€åˆä¸”ä¸ +然。直是ç¾ä»Šã€æ›´ç„¡æ™‚節。山僧說處ã€çš†æ˜¯ä¸€æœŸ +藥病相治ã€ç¸½ç„¡å¯¦æ³•ã€‚è‹¥å¦‚æ˜¯è¦‹å¾—ã€æ˜¯çœŸå‡ºå®¶ã€ +日消è¬å…©é»ƒé‡‘ã€‚é“æµã€èޫ喿¬¡è¢«è«¸æ–¹è€å¸«å° +ç ´é¢é–€ã€é“我解禪解é“。辯似懸河ã€çš†æ˜¯é€ åœ° +ç„æ¥­ã€‚若是真正學é“人ã€ä¸æ±‚世間éŽã€åˆ‡æ€¥ +è¦æ±‚真正見解。若é”çœŸæ­£è¦‹è§£åœ“æ˜Žã€æ–¹å§‹äº† +畢。 +å•ã€å¦‚何是真正見解。師云ã€çˆ¾ä½†ä¸€åˆ‡å…¥å‡¡å…¥ +è–ã€å…¥æŸ“入淨ã€å…¥è«¸ä½›åœ‹åœŸã€å…¥å½Œå‹’樓閣ã€å…¥æ¯˜ +ç›§é®é‚£æ³•界ã€è™•處皆ç¾åœ‹åœŸã€æˆä½å£žç©ºã€‚佛出 +于世ã€è½‰å¤§æ³•輪ã€å»å…¥æ¶…槃ã€ä¸è¦‹æœ‰åŽ»ä¾†ç›¸è²Œã€‚ +求其生死ã€äº†ä¸å¯å¾—。便入無生法界ã€è™•處游 +履國土ã€å…¥è¯è—世界ã€ç›¡è¦‹è«¸æ³•空相ã€çš†ç„¡ +å¯¦æ³•ã€‚å”¯æœ‰è½æ³•ç„¡ä¾é“äººã€æ˜¯è«¸ä½›ä¹‹æ¯ã€‚所 +以佛從無ä¾ç”Ÿã€‚若悟無ä¾ã€ä½›äº¦ç„¡å¾—。若如是 +è¦‹å¾—è€…ã€æ˜¯çœŸæ­£è¦‹è§£ã€‚學人ä¸äº†ã€ç‚ºåŸ·åå¥ã€è¢« +他凡è–åç¤™ã€æ‰€ä»¥éšœå…¶é“眼ã€ä¸å¾—分明。祇如 +å二分教ã€çš†æ˜¯è¡¨é¡¯ä¹‹èªªã€‚å­¸è€…ä¸æœƒã€ä¾¿å‘表 +顯åå¥ä¸Šç”Ÿè§£ã€‚皆是ä¾å€šã€è½åœ¨å› æžœã€æœªå…三 +界生死。爾若欲得生死去ä½ã€è„«è‘—自由ã€å³ä»Š +è­˜å–è½æ³•底人。無形無相ã€ç„¡æ ¹ç„¡æœ¬ã€ç„¡ä½è™•〠+活撥撥地。應是è¬ç¨®æ–½è¨­ã€ç”¨è™•祇是無處。 +所以覓著轉é ã€æ±‚ä¹‹è½‰ä¹–ã€‚è™Ÿä¹‹ç‚ºç¥•å¯†ã€‚é“æµã€ +爾莫èªè‘—箇夢幻伴å­ã€‚鲿™šä¸­é–“ã€ä¾¿æ­¸ç„¡å¸¸ã€‚ +çˆ¾å‘æ­¤ä¸–界中ã€è¦“箇什麼物作解脫。覓å–一 +å£é£¯å–«ã€è£œæ¯³éŽæ™‚ã€ä¸”è¦è¨ªå°‹çŸ¥è­˜ã€‚èŽ«å› å¾ªé€ +æ¨‚ã€‚å…‰é™°å¯æƒœã€å¿µå¿µç„¡å¸¸ã€‚H則被地水ç«é¢¨ã€ç´° +則被生ä½ç•°æ»…å››ç›¸æ‰€é€¼ã€‚é“æµã€ä»Šæ™‚且è¦è­˜ +å–四種無相境ã€å…被境擺撲。 +å•ã€å¦‚何是四種無相境。師云ã€çˆ¾ä¸€å¿µå¿ƒç–‘ã€è¢« +地來礙。爾一念心愛ã€è¢«æ°´ä¾†æººã€‚爾一念心嗔〠+被ç«ä¾†ç‡’。爾一念心喜ã€è¢«é¢¨ä¾†é£„。若能如是 +辨得ã€ä¸è¢«å¢ƒè½‰ã€è™•è™•ç”¨å¢ƒã€‚æ±æ¶Œè¥¿æ²’ã€å—涌北 +æ²’ã€ä¸­æ¶Œé‚Šæ²’ã€é‚Šæ¶Œä¸­æ²’ã€å±¥æ°´å¦‚地ã€å±¥åœ°å¦‚水。 +緣何如此。為é”å››å¤§å¦‚å¤¢å¦‚å¹»æ•…ã€‚é“æµã€çˆ¾ç¥‡ +ä»Šè½æ³•者ã€ä¸æ˜¯çˆ¾å››å¤§ã€èƒ½ç”¨çˆ¾å››å¤§ã€‚若能如 +是見得ã€ä¾¿ä¹ƒåŽ»ä½è‡ªç”±ã€‚約山僧見處ã€å‹¿å«Œåº• +法。爾若愛è–ã€è–者è–之å。有一般學人ã€å‘五 +臺山A求文殊。早錯了也。五臺山無文殊。爾 +欲識文殊麼。祇爾目å‰ç”¨è™•ã€å§‹çµ‚ä¸ç•°ã€è™•處 +ä¸ç–‘ã€æ­¤ç®‡æ˜¯æ´»æ–‡æ®Šã€‚爾一念心無差別光ã€è™• +處總是真普賢。爾一念心自能解縛ã€éš¨è™•è§£ +è„«ã€æ­¤æ˜¯è§€éŸ³ä¸‰æ˜§æ³•。互為主伴ã€å‡ºå‰‡ä¸€æ™‚ +出。一å³ä¸‰ã€ä¸‰å³ä¸€ã€‚如是解得ã€å§‹å¥½çœ‹æ•™ã€‚ +師示眾云ã€å¦‚今學é“人ã€ä¸”è¦è‡ªä¿¡ã€‚莫å‘外覓。 +總上他閑塵境ã€éƒ½ä¸è¾¨é‚ªæ­£ã€‚祇如有祖有佛〠+皆是教跡中事。有人拈起一å¥å­èªžã€æˆ–隱顯 +中出ã€ä¾¿å³ç–‘生ã€ç…§å¤©ç…§åœ°ã€å‚å®¶å°‹å•ã€ä¹Ÿå¤§ +忙然。大丈夫兒ã€èŽ«ç¥‡éº¼è«–ä¸»è«–è³Šã€è«–是論 +éžã€è«–色論財ã€è«–èªªé–‘è©±éŽæ—¥ã€‚山僧此間ã€ä¸è«– +僧俗ã€ä½†æœ‰ä¾†è€…ã€ç›¡è­˜å¾—伊。任伊å‘甚處出來〠+但有è²åæ–‡å¥ã€çš†æ˜¯å¤¢å¹»ã€‚å»è¦‹ä¹˜å¢ƒåº•äººã€æ˜¯ +諸佛之玄旨。佛境ä¸èƒ½è‡ªç¨±æˆ‘是佛境。還是 +這箇無ä¾é“人ã€ä¹˜å¢ƒå‡ºä¾†ã€‚若有人出來ã€å•我 +æ±‚ä½›ã€æˆ‘峿‡‰æ¸…æ·¨å¢ƒå‡ºã€‚æœ‰äººå•æˆ‘è©è–©ã€æˆ‘å³ +æ‡‰çŽ†æ‚²å¢ƒå‡ºã€‚æœ‰äººå•æˆ‘è©æã€æˆ‘峿‡‰æ·¨å¦™å¢ƒ +å‡ºã€‚æœ‰äººå•æˆ‘æ¶…æ§ƒã€æˆ‘峿‡‰å¯‚éœå¢ƒå‡ºã€‚å¢ƒå³ +è¬èˆ¬å·®åˆ¥ã€äººå³ä¸åˆ¥ã€‚所以應物ç¾å½¢ã€å¦‚水中 +æœˆã€‚é“æµã€çˆ¾è‹¥æ¬²å¾—如法ã€ç›´é ˆæ˜¯å¤§ä¸ˆå¤«å…’å§‹ +得。若èŽèŽéš¨éš¨åœ°ã€å‰‡ä¸å¾—也。夫如I嗄。 +之器ã€ä¸å ªè²¯é†é†ã€‚如大器者ã€ç›´è¦ä¸å— +人惑。隨處作主ã€ç«‹è™•皆真。但有來者ã€çš†ä¸å¾— +å—。爾一念疑ã€å³é­”入心。如è©è–©ç–‘時ã€ç”Ÿæ­»é­” +得便。但能æ¯å¿µã€æ›´èŽ«å¤–æ±‚ã€‚ç‰©ä¾†å‰‡ç…§ã€‚çˆ¾ä½†ä¿¡ +ç¾ä»Šç”¨åº•ã€ä¸€ç®‡äº‹ä¹Ÿç„¡ã€‚爾一念心生三界ã€éš¨ +緣被境ã€åˆ†ç‚ºå…­å¡µã€‚çˆ¾å¦‚ä»Šæ‡‰ç”¨è™•ã€æ¬ å°‘什麼。 +一剎那間ã€ä¾¿å…¥æ·¨å…¥ç©¢ã€å…¥å½Œå‹’樓閣ã€å…¥ä¸‰çœ¼ +國土ã€è™•處éŠå±¥ã€å”¯è¦‹ç©ºå。 +å•ã€å¦‚ä½•æ˜¯ä¸‰çœ¼åœ‹åœŸã€‚å¸«äº‘ã€æˆ‘共爾入淨妙國 +土中ã€è‘—清淨衣ã€èªªæ³•身佛。åˆå…¥ç„¡å·®åˆ¥åœ‹åœŸ +中ã€è‘—無差別衣ã€èªªå ±èº«ä½›ã€‚åˆå…¥è§£è„«åœ‹åœŸä¸­ã€ +著光明衣ã€èªªåŒ–身佛。此三眼國土ã€çš†æ˜¯ä¾è®Šã€‚ +ç´„ç¶“è«–å®¶ã€å–法身為根本ã€å ±åŒ–二身為用。山 +åƒ§è¦‹è™•ã€æ³•身å³ä¸è§£èªªæ³•。所以å¤äººäº‘ã€èº«ä¾ +義立ã€åœŸæ“šé«”è«–ã€‚æ³•æ€§èº«ã€æ³•æ€§åœŸã€æ˜ŽçŸ¥æ˜¯å»ºç«‹ +之法ã€ä¾é€šåœ‹åœŸã€‚空拳黃葉ã€ç”¨èª‘å°å…’。蒺藜夌 +åˆºã€æž¯éª¨ä¸Šè¦“什麼æ±ã€‚心外無法ã€å…§äº¦ä¸å¯å¾—〠+求什麼物。爾諸方言é“ã€æœ‰ä¿®æœ‰è­‰ã€‚莫錯。設有 +修得者ã€çš†æ˜¯ç”Ÿæ­»æ¥­ã€‚爾言六度è¬è¡Œé½Šä¿®ã€‚我 +見皆是造業。求佛求法ã€å³æ˜¯é€ åœ°ç„æ¥­ã€‚æ±‚è© +è–©ã€äº¦æ˜¯é€ æ¥­ã€‚看經看教ã€äº¦æ˜¯é€ æ¥­ã€‚佛與祖師〠+æ˜¯ç„¡äº‹äººã€‚æ‰€ä»¥æœ‰æ¼æœ‰ç‚ºã€ç„¡æ¼ç„¡ç‚ºã€ç‚ºæ¸…æ·¨ +業。有一般瞎禿å­ã€é£½å–«é£¯äº†ã€ä¾¿å禪觀行〠+把æ‰å¿µæ¼ã€ä¸ä»¤æ”¾èµ·ã€åŽ­å–§æ±‚éœã€æ˜¯å¤–铿³•。祖 +師云ã€çˆ¾è‹¥ä½å¿ƒçœ‹éœã€èˆ‰å¿ƒå¤–ç…§ã€æ”心內澄ã€å‡ +心入定ã€å¦‚是之æµã€çš†æ˜¯é€ ä½œã€‚是爾如今與麼 +è½æ³•底人ã€ä½œéº¼ç”Ÿæ“¬ä¿®ä»–證他莊嚴他。渠且 +䏿˜¯ä¿®åº•物ã€ä¸æ˜¯èŽŠåš´å¾—åº•ç‰©ã€‚è‹¥æ•™ä»–èŽŠåš´ã€ +一切物å³èŽŠåš´å¾—ã€‚çˆ¾ä¸”èŽ«éŒ¯ã€‚é“æµã€çˆ¾å–這一 +般è€å¸«å£ï¼¡èªžã€ç‚ºæ˜¯çœŸé“ã€æ˜¯å–„çŸ¥è­˜ä¸æ€è­°ã€ +我是凡夫心ã€ä¸æ•¢æ¸¬åº¦ä»–è€å®¿ã€‚瞎屢生ã€çˆ¾ä¸€ +生祇作這箇見解ã€è¾œè² é€™ä¸€é›™çœ¼ã€‚冷噤噤地〠+如å‡å‡Œä¸Šé©¢é§’ç›¸ä¼¼ã€‚æˆ‘ä¸æ•¢æ¯€å–„çŸ¥è­˜ã€æ€•生 +壿¥­ã€‚铿µã€å¤«å¤§å–„知識ã€å§‹æ•¢æ¯€ä½›æ¯€ç¥–ã€æ˜¯éž +å¤©ä¸‹ã€æŽ’æ–¥ä¸‰è—æ•™ã€ç½µè¾±è«¸å°å…’ã€å‘逆順中覓 +人。所以我於åäºŒå¹´ä¸­ã€æ±‚一箇業性ã€çŸ¥èŠ¥å­ +許ä¸å¯å¾—。若似新婦å­ç¦ªå¸«ã€ä¾¿å³æ€•è¶å‡ºé™¢ã€ +ä¸èˆ‡é£¯å–«ã€ä¸å®‰ä¸æ¨‚。自å¤å…ˆè¼©ã€åˆ°è™•äººä¸ +ä¿¡ã€è¢«éžå‡ºã€å§‹çŸ¥æ˜¯è²´ã€‚若到處人盡肯ã€å ªä½œä»€ +麼。所以師å­ä¸€å¼ã€é‡Žå¹²è…¦è£‚ã€‚é“æµã€è«¸æ–¹èªªã€æœ‰ +é“å¯ä¿®ã€æœ‰æ³•å¯è­‰ã€‚爾說證何法ã€ä¿®ä½•é“。爾今 +ç”¨è™•ã€æ¬ å°‘什麼物ã€ä¿®è£œä½•處。後生å°é˜¿å¸«ä¸ +會ã€ä¾¿å³ä¿¡é€™èˆ¬é‡Žç‹ç²¾é­…ã€è¨±ä»–說事ã€ç¹«ç¸› +人ã€è¨€é“ç†è¡Œç›¸æ‡‰ã€è­·æƒœä¸‰æ¥­ã€å§‹å¾—æˆä½›ã€‚如此 +說者ã€å¦‚春細雨。å¤äººäº‘ã€è·¯é€¢é”é“人ã€ç¬¬ä¸€èŽ« +å‘é“。所以言ã€è‹¥äººä¿®é“é“ä¸è¡Œã€è¬èˆ¬é‚ªå¢ƒç«¶ +頭生。智åŠå‡ºä¾†ç„¡ä¸€ç‰©ã€æ˜Žé ­æœªé¡¯æš—頭明。所 +以å¤äººäº‘ã€å¹³å¸¸å¿ƒæ˜¯é“。大德ã€è¦“什麼物。ç¾ä»Š +ç›®å‰è½æ³•ç„¡ä¾é“äººã€æ­·æ­·åœ°åˆ†æ˜Žã€æœªæ›¾æ¬ å°‘。 +爾若欲得與祖佛ä¸åˆ¥ã€ä½†å¦‚是見ã€ä¸ç”¨ç–‘誤。 +爾心心ä¸ç•°ã€å之活祖。心若有異ã€å‰‡æ€§ç›¸åˆ¥ã€‚ +心ä¸ç•°æ•…ã€å³æ€§ç›¸ä¸åˆ¥ã€‚ +å•ã€å¦‚何是心心ä¸ç•°è™•。師云ã€çˆ¾æ“¬å•ã€æ—©ç•°äº† +ä¹Ÿã€æ€§ç›¸å„åˆ†ã€‚é“æµã€èŽ«éŒ¯ã€‚ä¸–å‡ºä¸–è«¸æ³•ã€çš†ç„¡è‡ª +性ã€äº¦ç„¡ç”Ÿæ€§ã€‚但有空åã€å字亦空。爾祇麼 +èªä»–é–‘å為實。大錯了也。設有ã€çš†æ˜¯ä¾è®Šä¹‹ +å¢ƒã€‚æœ‰ç®‡è©æä¾ã€æ¶…繫ä¾ã€è§£è„«ä¾ã€ä¸‰èº«ä¾ã€å¢ƒæ™º +ä¾ã€è©è–©ä¾ã€ä½›ä¾ã€‚爾å‘ä¾è®Šåœ‹åœŸä¸­ã€è¦“什麼物。 +乃至三乘å二分教ã€çš†æ˜¯æ‹­ä¸æ·¨æ•…紙。佛是 +幻化身ã€ç¥–æ˜¯è€æ¯”丘。爾還是娘生已å¦ã€‚爾若 +求佛ã€å³è¢«ä½›é­”æ”。爾若求祖ã€å³è¢«ç¥–魔縛。 +爾若有求皆苦。ä¸å¦‚無事。有一般禿比丘ã€å‘ +學人é“ã€ä½›æ˜¯ç©¶ç«Ÿã€æ–¼ä¸‰å¤§é˜¿åƒ§ç¥‡åŠ«ã€ä¿®è¡Œ +æžœæ»¿ã€æ–¹å§‹æˆé“ã€‚é“æµã€çˆ¾è‹¥é“佛是究竟ã€ç·£ä»€ +麼八å年後ã€å‘拘尸羅城ã€é›™æž—樹間ã€å´è‡¥è€Œæ­» +去。佛今何在。明知與我生死ä¸åˆ¥ã€‚爾言ã€ä¸‰å +二相八å種好是佛。轉輪è–王應是如來。明 +知是幻化。å¤äººäº‘ã€å¦‚來舉身相ã€ç‚ºé †ä¸–間情。 +æäººç”Ÿæ–·è¦‹ã€æ¬Šä¸”ç«‹è™›å。å‡è¨€ä¸‰å二ã€å…«å +也空è²ã€‚有身éžè¦ºé«”ã€ç„¡ç›¸ä¹ƒçœŸå½¢ã€‚爾é“ã€ä½›æœ‰ +å…­é€šã€æ˜¯ä¸å¯æ€è­°ã€‚一切諸天ã€ç¥žä»™ã€é˜¿ä¿®ç¾…ã€å¤§ +力鬼ã€äº¦æœ‰ç¥žé€šã€‚應是佛å¦ã€‚铿µã€èŽ«éŒ¯ã€‚ç¥‡å¦‚é˜¿ +修羅ã€èˆ‡å¤©å¸é‡‹æˆ°ã€æˆ°æ•—領八è¬å››åƒçœ·å±¬ã€å…¥ +藕絲孔中è—。莫是è–å¦ã€‚如山僧所舉ã€çš†æ˜¯æ¥­ +通ä¾é€šã€‚夫如佛六通者ã€ä¸ç„¶ã€‚入色界ä¸è¢«è‰² +惑ã€å…¥è²ç•Œä¸è¢«è²æƒ‘ã€å…¥é¦™ç•Œä¸è¢«é¦™æƒ‘ã€å…¥å‘³ +界ä¸è¢«å‘³æƒ‘ã€å…¥è§¸ç•Œä¸è¢«è§¸æƒ‘ã€å…¥æ³•界ä¸è¢« +法惑。所以é”六種色è²é¦™å‘³è§¸æ³•皆是空相〠+ä¸èƒ½ç¹«ç¸›æ­¤ç„¡ä¾é“人。雖是五蘊æ¼è³ªã€ä¾¿æ˜¯ +åœ°è¡Œç¥žé€šã€‚é“æµã€çœŸä½›ç„¡å½¢ã€çœŸæ³•無相。爾祇麼 +幻化上頭ã€ä½œæ¨¡ä½œæ¨£ã€‚設求得者ã€çš†æ˜¯é‡Žç‹ç²¾ +é­…ã€ä¸¦ä¸æ˜¯çœŸä½›ã€æ˜¯å¤–é“見解。夫如真學é“人〠+並ä¸å–ä½›ã€ä¸å–è©è–©ç¾…æ¼¢ã€ä¸å–三界殊å‹ã€‚è¿¥ +ç„¡ç¨è„«ã€ä¸èˆ‡ç‰©æ‹˜ã€‚ä¹¾å¤å€’è¦†ã€æˆ‘æ›´ä¸ç–‘ã€‚åæ–¹ +諸佛ç¾å‰ã€ç‚ºä¸€å¿µå¿ƒå–œã€ä¸‰å¡—地ç„é “ç¾ã€ç„¡ä¸€ +念心怖。緣何如此。我見諸法空相ã€è®Šå³æœ‰ã€ä¸ +變å³ç„¡ã€‚三界唯心ã€è¬æ³•唯識。所以夢幻空花〠+何勞把æ‰ã€‚å”¯æœ‰é“æµã€ç›®å‰ç¾ä»Šè½æ³•底人ã€å…¥ +ç«ä¸ç‡’ã€å…¥æ°´ä¸æººã€å…¥ä¸‰å¡—地ç„ã€å¦‚éŠåœ’è§€ã€å…¥ +餓鬼畜生ã€è€Œä¸å—報。緣何如此。無嫌底法。爾 +è‹¥æ„›è–æ†Žå‡¡ã€ç”Ÿæ­»æµ·ï¼¡æ²ˆæµ®ã€‚煩惱由心故有〠+無心煩惱何拘。ä¸å‹žåˆ†åˆ¥å–相ã€è‡ªç„¶å¾—é“é ˆ +臾。爾擬å‚å®¶æ³¢æ³¢åœ°å­¸å¾—ã€æ–¼ä¸‰ç¥‡åЫ䏭ã€çµ‚æ­¸ +生死。ä¸å¦‚無事ã€å‘墿ž—中ã€åºŠè§’頭交腳åã€‚é“ +æµã€å¦‚諸方有學人來ã€ä¸»å®¢ç›¸è¦‹äº†ã€ä¾¿æœ‰ä¸€å¥ +å­èªžã€è¾¨å‰é ­å–„知識。被學人拈出箇機權語 +è·¯ã€å‘善知識å£è§’é ­æ”›éŽã€çœ‹çˆ¾è­˜ä¸è­˜ã€‚爾若 +è­˜å¾—æ˜¯å¢ƒã€æŠŠå¾—ä¾¿æ‹‹å‘å‘å­ï¼¡ã€‚學人便å³å°‹ +常ã€ç„¶å¾Œä¾¿ç´¢å–„知識語。ä¾å‰å¥ªä¹‹ã€‚學人云ã€ä¸Š +æ™ºå“‰ã€æ˜¯å¤§å–„知識。å³äº‘ã€çˆ¾å¤§ä¸è­˜å¥½æƒ¡ã€‚如善 +çŸ¥è­˜ã€æŠŠå‡ºç®‡å¢ƒå¡Šå­ã€å‘學人é¢å‰å¼„。å‰äººè¾¨ +å¾—ã€ä¸‹ä¸‹ä½œä¸»ã€ä¸å—境惑。善知識便å³ç¾åŠ +身ã€å­¸äººä¾¿å–。善知識åˆå…¥ä¸€åˆ‡å·®åˆ¥èªžè·¯ä¸­ +擺撲。學人云ã€ä¸è­˜å¥½æƒ¡è€ç¦¿å¥´ã€‚善知識歎曰〠+çœŸæ­£é“æµã€‚如諸方善知識ã€ä¸è¾¨é‚ªæ­£ã€‚學人來 +å•ã€è©ææ¶…槃ã€ä¸‰èº«å¢ƒæ™ºã€çžŽè€å¸«ä¾¿èˆ‡ä»–解說。 +被他學人罵著ã€ä¾¿æŠŠæ£’打他ã€è¨€ç„¡ç¦®åº¦ã€‚自是 +爾善知識無眼ã€ä¸å¾—嗔他。有一般ä¸è­˜å¥½æƒ¡ +禿奴ã€å³æŒ‡æ±åŠƒè¥¿ã€å¥½æ™´å¥½é›¨ã€å¥½ç‡ˆç± éœ²æŸ±ã€‚爾 +看ã€çœ‰æ¯›æœ‰å¹¾èŽ–ã€‚é€™ç®‡å…·æ©Ÿç·£ã€‚å­¸äººä¸æœƒã€ä¾¿å³ +心狂。如是之æµã€ç¸½æ˜¯é‡Žç‹ç²¾é­…é­é­Žã€‚被他好 +學人嗌嗌微笑ã€è¨€çžŽè€ç¦¿å¥´æƒ‘亂他天下人。 +铿µã€å‡ºå®¶å…’且è¦å­¸é“。祇如山僧ã€å¾€æ—¥æ›¾å‘ +毘尼中留心ã€äº¦æ›¾æ–¼ç¶“論尋討。後方知是濟 +世藥ã€è¡¨é¡¯ä¹‹èªªã€é‚乃一時拋å»ã€å³è¨ªé“åƒç¦ªã€‚ +後é‡å¤§å–„çŸ¥è­˜ã€æ–¹ä¹ƒé“眼分明ã€å§‹è­˜å¾—天下 +è€å’Œå°šã€çŸ¥å…¶é‚ªæ­£ã€‚䏿˜¯å¨˜ç”Ÿä¸‹ä¾¿æœƒã€é‚„是體 +究練磨ã€ä¸€æœè‡ªçœã€‚铿µã€çˆ¾æ¬²å¾—如法見解ã€ä½† +莫å—人惑。å‘Aå‘外ã€é€¢è‘—便殺。逢佛殺佛ã€é€¢ +祖殺祖ã€é€¢ç¾…漢殺羅漢ã€é€¢çˆ¶æ¯æ®ºçˆ¶æ¯ã€é€¢ +親眷殺親眷ã€å§‹å¾—解脫ã€ä¸èˆ‡ç‰©æ‹˜ã€é€è„«è‡ª +åœ¨ã€‚å¦‚è«¸æ–¹å­¸é“æµã€æœªæœ‰ä¸ä¾ç‰©å‡ºä¾†åº•。山僧 +呿­¤é–“ã€å¾žé ­æ‰“。手上出來手上打。å£ï¼¡å‡ºä¾† +å£ï¼¡æ‰“。眼A出來眼A打。未有一箇ç¨è„«å‡º +來底。皆是上他å¤äººé–‘機境。山僧無一法與 +人ã€ç¥‡æ˜¯æ²»ç—…è§£ç¸›ã€‚çˆ¾è«¸æ–¹é“æµã€è©¦ä¸ä¾ç‰©å‡º +ä¾†ã€æˆ‘è¦å…±çˆ¾å•†é‡ã€‚å年五歲ã€ä¸¦ç„¡ä¸€äººã€‚皆是 +ä¾è‰é™„葉ã€ç«¹æœ¨ç²¾éˆã€é‡Žç‹ç²¾é­…ã€å‘一切糞塊 +ä¸Šäº‚å’¬ã€‚çžŽæ¼¢ã€æž‰æ¶ˆä»–åæ–¹ä¿¡æ–½ã€é“我是出家 +å…’ã€ä½œå¦‚是見解。å‘爾é“ã€ç„¡ä½›ç„¡æ³•ã€ç„¡ä¿®ç„¡è­‰ã€‚ +祇與麼å‚家擬求什麼物。瞎漢ã€é ­ä¸Šå®‰é ­ã€‚是 +çˆ¾æ¬ å°‘ä»€éº¼ã€‚é“æµã€æ˜¯çˆ¾ç›®å‰ç”¨åº•ã€èˆ‡ç¥–ä½›ä¸ +別。祇麼ä¸ä¿¡ã€ä¾¿å‘外求。莫錯。å‘外無法ã€å…§äº¦ +ä¸å¯å¾—。爾å–山僧å£ï¼¡èªžã€ä¸å¦‚休歇無事去。 +å·²èµ·è€…èŽ«çºŒã€æœªèµ·è€…ä¸è¦æ”¾èµ·ã€ä¾¿å‹çˆ¾åå¹´ +行腳。約山僧見處ã€ç„¡å¦‚許多般ã€ç¥‡æ˜¯å¹³å¸¸ã€‚è‘— +衣喫飯ã€ç„¡äº‹éŽæ™‚。爾諸方來者ã€çš†æ˜¯æœ‰å¿ƒæ±‚ +ä½›æ±‚æ³•ã€æ±‚è§£è„«ã€æ±‚出離三界。癡人ã€çˆ¾è¦å‡ºä¸‰ +界ã€ä»€éº¼è™•去。佛祖是賞繫底åå¥ã€‚爾欲識三 +界麼。ä¸é›¢çˆ¾ä»Šè½æ³•底心地。爾一念心貪是 +欲界。爾一念心瞋是色界。爾一念心癡是無 +è‰²ç•Œã€æ˜¯çˆ¾å±‹ï¼¡å®¶å…·å­ã€‚三界ä¸è‡ªé“ã€æˆ‘是三 +ç•Œã€‚é‚„æ˜¯é“æµã€ç›®å‰éˆéˆåœ°ç…§ç‡­è¬èˆ¬ã€é…Œåº¦ä¸– +界底人ã€èˆ‡ä¸‰ç•Œå®‰å。大德ã€å››å¤§è‰²èº«æ˜¯ç„¡å¸¸ã€‚ +乃至脾胃è‚膽ã€é«®æ¯›çˆªé½’ã€å”¯è¦‹è«¸æ³•空相。爾 +一念心歇得處ã€å–šä½œè©ææ¨¹ã€‚爾一念心ä¸èƒ½ +歇得處ã€å–šä½œç„¡æ˜Žæ¨¹ã€‚無明無ä½è™•ã€ç„¡æ˜Žç„¡ +始終。爾若念念心歇ä¸å¾—ã€ä¾¿ä¸Šä»–無明樹ã€ä¾¿ +入六é“å››ç”Ÿã€æŠ«æ¯›æˆ´è§’ã€‚çˆ¾è‹¥æ­‡å¾—ã€ä¾¿æ˜¯æ¸…æ·¨ +身界。爾一念ä¸ç”Ÿã€ä¾¿æ˜¯ä¸Šè©ææ¨¹ã€ä¸‰ç•Œç¥žé€š +è®ŠåŒ–ã€æ„ç”ŸåŒ–èº«ã€æ³•喜禪悅ã€èº«å…‰è‡ªç…§ã€‚æ€è¡£ç¾… +綺åƒé‡ã€æ€é£Ÿç™¾å‘³å…·è¶³ã€æ›´ç„¡æ©«ç—…ã€‚è©æç„¡ä½ +è™•ã€æ˜¯æ•…ç„¡å¾—è€…ã€‚é“æµã€å¤§ä¸ˆå¤«æ¼¢ã€æ›´ç–‘箇什麼。 +ç›®å‰ç”¨è™•ã€æ›´æ˜¯é˜¿èª°ã€‚把得便用ã€èŽ«è‘—åå­—ã€è™Ÿ +為玄旨。與麼見得ã€å‹¿å«Œåº•法。å¤äººäº‘ã€å¿ƒéš¨è¬ +境轉ã€è½‰è™•實能幽。隨æµèªå¾—性ã€ç„¡å–œäº¦ç„¡æ†‚。 +铿µã€å¦‚ç¦ªå®—è¦‹è§£ã€æ­»æ´»å¾ªç„¶ã€‚åƒå­¸ä¹‹äººã€å¤§é ˆ +å­ç´°ã€‚如主客相見ã€ä¾¿æœ‰è¨€è«–å¾€ä¾†ã€‚æˆ–æ‡‰ç‰©ç¾ +å½¢ã€æˆ–å…¨é«”ä½œç”¨ã€æˆ–æŠŠæ©Ÿæ¬Šå–œæ€’ã€æˆ–ç¾åŠèº«ã€æˆ– +乘師å­ã€æˆ–乘象王。如有真正學人ã€ä¾¿å–先拈 +出一箇膠盆å­ã€‚善知識ä¸è¾¨æ˜¯å¢ƒã€ä¾¿ä¸Šä»–境 +上ã€ä½œæ¨¡ä½œæ¨£ã€‚學人便å–。å‰äººä¸è‚¯æ”¾ã€‚æ­¤æ˜¯è† +肓之病ã€ä¸å ªé†«ã€‚å–šä½œå®¢çœ‹ä¸»ã€‚æˆ–æ˜¯å–„çŸ¥è­˜ä¸ +拈出物ã€éš¨å­¸äººå•處å³å¥ªã€‚å­¸äººè¢«å¥ªã€æŠµæ­»ä¸ +æ”¾ã€‚æ­¤æ˜¯ä¸»çœ‹å®¢ã€‚æˆ–æœ‰å­¸äººã€æ‡‰ä¸€ç®‡æ¸…淨境ã€å‡º +善知識å‰ã€‚å–„çŸ¥è­˜è¾¨å¾—æ˜¯å¢ƒã€æŠŠå¾—æ‹‹å‘å‘A。 +學人言ã€å¤§å¥½å–„知識。å³äº‘ã€å’„哉ã€ä¸è­˜å¥½æƒ¡ã€‚å­¸ +äººä¾¿ç¦®æ‹œã€‚æ­¤å–šä½œä¸»çœ‹ä¸»ã€‚æˆ–æœ‰å­¸äººã€æŠ«æž·å¸¶ +鎖ã€å‡ºå–„知識å‰ã€‚å–„çŸ¥è­˜æ›´èˆ‡å®‰ä¸€é‡æž·éŽ–ã€‚å­¸ +人歡喜ã€å½¼æ­¤ä¸è¾¨ã€‚呼為客看客。大德ã€å±±åƒ§å¦‚ +是所舉ã€çš†æ˜¯è¾¨é­”æ€ç•°ã€çŸ¥å…¶é‚ªæ­£ã€‚铿µã€å¯” +情大難ã€ä½›æ³•幽玄ã€è§£å¾—å¯å¯åœ°ã€‚山僧竟日與 +他說破ã€å­¸è€…總ä¸åœ¨æ„。åƒéè¬éã€è…³åº•è¸éŽã€ +黑沒焌地ã€ç„¡ä¸€ç®‡å½¢æ®µã€æ­·æ­·å­¤æ˜Žã€‚å­¸äººä¿¡ä¸ +åŠã€ä¾¿å‘åå¥ä¸Šç”Ÿè§£ã€‚å¹´ç™»åŠç™¾ã€ç¥‡ç®¡å‚å®¶è²  +æ­»å±è¡Œã€æªå»æªå­å¤©ä¸‹èµ°ã€‚ç´¢è‰éž‹éŒ¢æœ‰æ—¥åœ¨ã€‚ +大德ã€å±±åƒ§èªªå‘外無法ã€å­¸äººä¸æœƒã€ä¾¿å³å‘A +作解ã€ä¾¿å³å€šå£åã€èˆŒæ‹„ä¸Šé½¶ã€æ¹›ç„¶ä¸å‹•ã€å–æ­¤ +為是祖門佛法也。大錯。是爾若å–ä¸å‹•清淨 +境為是ã€çˆ¾å³èªä»–無明為郎主。å¤äººäº‘ã€æ¹›æ¹› +黑暗深å‘ã€å¯”坿€–ç•。此之是也。爾若èªä»–å‹• +者是ã€ä¸€åˆ‡è‰æœ¨çš†è§£å‹•ã€æ‡‰å¯æ˜¯é“也。所以動 +者是風大ã€ä¸å‹•者是地大。動與ä¸å‹•ã€ä¿±ç„¡è‡ª +性。爾若å‘動處æ‰ä»–ã€ä»–å‘ä¸å‹•è™•ç«‹ã€‚çˆ¾è‹¥å‘ +ä¸å‹•處æ‰ä»–ã€ä»–å‘動處立。譬如潛泉魚ã€é¼“æ³¢ +而自èºã€‚大德ã€å‹•與ä¸å‹•ã€æ˜¯äºŒç¨®å¢ƒã€‚é‚„æ˜¯ç„¡ä¾ +é“人ã€ç”¨å‹•用ä¸å‹•。如諸方學人來ã€å±±åƒ§æ­¤é–“〠+ä½œä¸‰ç¨®æ ¹å™¨æ–·ã€‚å¦‚ä¸­ä¸‹æ ¹å™¨ä¾†ã€æˆ‘便奪其境〠+而ä¸é™¤å…¶æ³•ã€‚æˆ–ä¸­ä¸Šæ ¹å™¨ä¾†ã€æˆ‘便境法俱奪。 +å¦‚ä¸Šä¸Šæ ¹å™¨ä¾†ã€æˆ‘便境法人俱ä¸å¥ªã€‚如有出 +格見解人來ã€å±±åƒ§æ­¤é–“ã€ä¾¿å…¨é«”作用ã€ä¸æ­·æ ¹ +器。大德ã€åˆ°é€™ï¼¡ã€å­¸äººè‘—力處ä¸é€šé¢¨ã€çŸ³ç«é›» +å…‰å³éŽäº†ä¹Ÿã€‚學人若眼定動ã€å³æ²’交涉。擬心 +å³å·®ã€å‹•念å³ä¹–。有人解者ã€ä¸é›¢ç›®å‰ã€‚大德ã€çˆ¾ +æªï¼£ï¼¢å±Žæªå­ã€å‚家走求佛求法。å³ä»Šèˆ‡éº¼ +馳求底ã€çˆ¾é‚„識渠麼。活撥撥地ã€ç¥‡æ˜¯å‹¿æ ¹ +株。æ“ä¸èšã€æ’¥ä¸æ•£ã€‚求著å³è½‰é ã€ä¸æ±‚還在目 +å‰ã€éˆéŸ³å±¬è€³ã€‚若人ä¸ä¿¡ã€å¾’å‹žç™¾å¹´ã€‚é“æµã€ä¸€ +剎那間ã€ä¾¿å…¥è¯è—世界ã€å…¥æ¯˜ç›§é®é‚£åœ‹åœŸã€å…¥ +解脫國土ã€å…¥ç¥žé€šåœ‹åœŸã€å…¥æ¸…淨國土ã€å…¥æ³•界〠+入穢入淨ã€å…¥å‡¡å…¥è–ã€å…¥é¤“鬼畜生ã€è™•處討覓 +å°‹ã€çš†ä¸è¦‹æœ‰ç”Ÿæœ‰æ­»ã€å”¯æœ‰ç©ºå。幻化空花ã€ä¸ +勞把æ‰ã€å¾—失是éžã€ä¸€æ™‚放å»ã€‚铿µã€å±±åƒ§ä½›æ³•〠+的的相承ã€å¾žéº»è°·å’Œå°šã€ä¸¹éœžå’Œå°šã€é“一和尚〠+盧山拽石頭和尚ã€ä¸€è·¯è¡Œé天下。無人信得〠+盡皆起謗。如é“一和尚用處ã€ç´”一無雜ã€å­¸äºº +三百五百ã€ç›¡çš†ä¸è¦‹ä»–æ„。如盧山和尚ã€è‡ªåœ¨ +真正ã€é †é€†ç”¨è™•ã€å­¸äººä¸æ¸¬æ¶¯éš›ã€æ‚‰çš†å¿™ç„¶ã€‚ +如丹霞和尚ã€ç¿«ç éš±é¡¯ã€å­¸äººä¾†è€…ã€çš†æ‚‰è¢«ç½µã€‚ +如麻谷用處ã€è‹¦å¦‚黃蘗ã€è¿‘皆ä¸å¾—。如石éžç”¨ +處ã€å‘箭頭上覓人ã€ä¾†è€…皆懼。如山僧今日用 +處ã€çœŸæ­£æˆå£žã€ç¿«å¼„神變ã€å…¥ä¸€åˆ‡å¢ƒã€éš¨è™•無事〠+境ä¸èƒ½æ›ã€‚ä½†æœ‰ä¾†æ±‚è€…ã€æˆ‘å³ä¾¿å‡ºçœ‹æ¸ ã€‚æ¸ ä¸ +è­˜æˆ‘ã€æˆ‘便著數般衣ã€å­¸äººç”Ÿè§£ã€ä¸€å‘入我言 +å¥ã€‚苦哉ã€çžŽç¦¿å­ç„¡çœ¼äººã€æŠŠæˆ‘著底衣ã€èªé’黃 +赤白。我脫å»å…¥æ¸…淨境中ã€å­¸äººä¸€è¦‹ã€ä¾¿ç”Ÿå¿» +欲。我åˆè„«å»ã€å­¸äººå¤±å¿ƒã€å¿™ç„¶ç‹‚èµ°ã€è¨€æˆ‘ç„¡ +衣。我å³å‘渠é“ã€çˆ¾è­˜æˆ‘著衣底人å¦ã€‚忽爾回 +é ­ã€èªæˆ‘了也。大德ã€çˆ¾èŽ«èªè¡£ã€‚è¡£ä¸èƒ½å‹•ã€äºº +èƒ½è‘—è¡£ã€‚æœ‰ç®‡æ¸…æ·¨è¡£ã€æœ‰ç®‡ç„¡ç”Ÿè¡£ã€è©æè¡£ã€æ¶… +æ§ƒè¡£ã€æœ‰ç¥–è¡£ã€æœ‰ä½›è¡£ã€‚大德ã€ä½†æœ‰è²åæ–‡å¥ã€ +皆悉是衣變。從è‡è¼ªæ°£æµ·ä¸­é¼“æ¿€ã€ç‰™é½’敲磕〠+æˆå…¶å¥ç¾©ã€‚明知是幻化。大德ã€å¤–發è²èªžæ¥­ã€å…§ +è¡¨å¿ƒæ‰€æ³•ã€‚ä»¥æ€æœ‰å¿µã€çš†æ‚‰æ˜¯è¡£ã€‚爾祇麼èªä»– +著底衣為寔解。縱經塵劫ã€ç¥‡æ˜¯è¡£é€šã€‚三界循 +é‚„ã€è¼ªå›žç”Ÿæ­»ã€‚ä¸å¦‚無事。相逢ä¸ç›¸è­˜ã€å…±èªžä¸ +知å。今時學人ä¸å¾—ã€è“‹ç‚ºèªå字為解。大策 +å­ä¸Šã€æŠ„æ­»è€æ¼¢èªžã€ä¸‰é‡äº”é‡è¤‡å­è£¹ã€ä¸æ•™äºº +見ã€é“是玄旨ã€ä»¥ç‚ºä¿é‡ã€‚大錯。瞎屢生ã€çˆ¾å‘ +枯骨上ã€è¦“什麼æ±ã€‚有一般ä¸è­˜å¥½æƒ¡ã€å‘教中 +å–æ„度商é‡ã€æˆæ–¼å¥ç¾©ã€‚如把屎塊å­ã€å‘å£ï¼¡ +å«äº†ã€åéŽèˆ‡åˆ¥äººã€‚猶如俗人打傳å£ä»¤ç›¸ä¼¼ã€ +一生虛éŽã€‚ä¹Ÿé“æˆ‘出家ã€è¢«ä»–å•著佛法ã€ä¾¿å³ +æœå£ç„¡è©žã€çœ¼ä¼¼æ¼†çªã€å£å¦‚楄æªã€‚如此之類ã€é€¢ +彌勒出世ã€ç§»ç½®ä»–方世界ã€å¯„地ç„å—苦。大德〠+爾波波地往諸方ã€è¦“什麼物ã€è¸çˆ¾è…³æ¿é—Šã€‚ç„¡ +佛坿±‚ã€ç„¡é“坿ˆã€ç„¡æ³•å¯å¾—。外求有相佛ã€èˆ‡ +æ±ä¸ç›¸ä¼¼ã€‚æ¬²è­˜æ±æœ¬å¿ƒã€éžåˆäº¦éžé›¢ã€‚铿µã€çœŸ +佛無形ã€çœŸé“ç„¡é«”ã€çœŸæ³•無相。三法混èžã€å’Œåˆ +一處。辨既ä¸å¾—ã€å–šä½œå¿™å¿™æ¥­è­˜çœ¾ç”Ÿã€‚ +å•ã€å¦‚何是真佛真法真é“ã€ä¹žåž‚開示。師云ã€ä½› +者心清淨是。法者心光明是。é“者處處無礙 +淨光是。三å³ä¸€ã€çš†æ˜¯ç©ºåã€è€Œç„¡å¯”有。如真正 +å­¸é“人ã€å¿µå¿µå¿ƒä¸é–“斷。自é”磨大師從西土 +來ã€ç¥‡æ˜¯è¦“箇ä¸å—人惑底人。後é‡äºŒç¥–ã€ä¸€è¨€ +便了ã€å§‹çŸ¥å¾žå‰è™›ç”¨åŠŸå¤«ã€‚å±±åƒ§ä»Šæ—¥è¦‹è™•ã€èˆ‡ +祖佛ä¸åˆ¥ã€‚若第一å¥ä¸­å¾—ã€èˆ‡ç¥–佛為師。若第 +二å¥ä¸­å¾—ã€èˆ‡äººå¤©ç‚ºå¸«ã€‚若第三å¥ä¸­å¾—ã€è‡ªæ•‘ +ä¸äº†ã€‚ +å•ã€å¦‚何是西來æ„。師云ã€è‹¥æœ‰æ„ã€è‡ªæ•‘ä¸äº†ã€‚云〠+既無æ„ã€äº‘何二祖得法。師云ã€å¾—者是ä¸å¾—。云〠+既若ä¸å¾—ã€äº‘何是ä¸å¾—底æ„。師云ã€ç‚ºçˆ¾å‘一 +切處馳求心ä¸èƒ½æ­‡ã€‚所以祖師言ã€å’„哉丈夫〠+å°‡é ­è¦“é ­ã€‚çˆ¾è¨€ä¸‹ä¾¿è‡ªå›žå…‰è¿”ç…§ã€æ›´ä¸åˆ¥æ±‚〠+知身心與祖佛ä¸åˆ¥ã€ç•¶ä¸‹ç„¡äº‹ã€æ–¹å得法。大 +å¾·ã€å±±åƒ§ä»Šæ™‚ã€äº‹ä¸ç²å·²ã€è©±åº¦èªªå‡ºè¨±å¤šä¸æ‰ +淨。爾且莫錯。據我見處ã€å¯”無許多般é“ç†ã€‚è¦ +用便用ã€ä¸ç”¨ä¾¿ä¼‘。祇如諸方說六度è¬è¡Œã€ä»¥ +ç‚ºä½›æ³•ã€æˆ‘é“ã€æ˜¯èŽŠåš´é–€ä½›äº‹é–€ã€éžæ˜¯ä½›æ³•。乃 +至æŒé½‹æŒæˆ’ã€æ“Žæ²¹ä¸ï¼¡ã€é“çœ¼ä¸æ˜Žã€ç›¡é ˆæŠµå‚µã€ +索飯錢有日在。何故如此。入é“ä¸é€šç†ã€å¾©èº« +還信施。長者八å一ã€å…¶æ¨¹ä¸ç”Ÿè€³ã€‚乃至孤峰 +ç¨å®¿ã€ä¸€é£Ÿå¯é½‹ã€é•·åä¸è‡¥ã€å…­æ™‚行é“ã€çš†æ˜¯é€  +業底人。乃至頭目髓腦ã€åœ‹åŸŽå¦»å­ã€è±¡é¦¬ä¸ƒçã€ç›¡ +çš†æ¨æ–½ã€å¦‚是等見ã€çš†æ˜¯è‹¦èº«å¿ƒæ•…ã€é‚„招苦果。 +ä¸å¦‚無事ã€ç´”一無雜。乃至å地滿心è©è–©ã€çš† +æ±‚æ­¤é“æµè¹¤è·¡ã€äº†ä¸å¯å¾—。所以諸天歡喜ã€åœ° +神æ§è¶³ã€å方諸佛ã€ç„¡ä¸ç¨±æ­Žã€‚緣何如此。為今 +è½æ³•é“人ã€ç”¨è™•無蹤跡。 +å•ã€å¤§é€šæ™ºå‹ä½›ã€å劫åé“å ´ã€ä½›æ³•ä¸ç¾å‰ã€ä¸ +å¾—æˆä½›é“。未審此æ„如何。乞師指示。師云〠+å¤§é€šè€…ã€æ˜¯è‡ªå·±æ–¼è™•處ã€é”å…¶è¬æ³•無性無相〠+å為大通。智å‹è€…ã€æ–¼ä¸€åˆ‡è™•ä¸ç–‘ã€ä¸å¾—一法〠+å為智å‹ã€‚佛者心清淨ã€å…‰æ˜Žé€å¾¹æ³•界ã€å¾—å +為佛。å劫åé“場者ã€å波羅蜜是。佛法ä¸ç¾ +å‰è€…ã€ä½›æœ¬ä¸ç”Ÿã€æ³•æœ¬ä¸æ»…ã€äº‘何更有ç¾å‰ã€‚ä¸ +å¾—æˆä½›é“者ã€ä½›ä¸æ‡‰æ›´ä½œä½›ã€‚å¤äººäº‘ã€ä½›å¸¸åœ¨ +世間ã€è€Œä¸æŸ“ä¸–é–“æ³•ã€‚é“æµã€çˆ¾æ¬²å¾—作佛ã€èŽ«éš¨ +è¬ç‰©ã€‚心生種種法生ã€å¿ƒæ»…ç¨®ç¨®æ³•æ»…ã€‚ä¸€å¿ƒä¸ +生ã€è¬æ³•無咎。世與出世ã€ç„¡ä½›ç„¡æ³•ã€äº¦ä¸ç¾å‰ã€ +äº¦ä¸æ›¾å¤±ã€‚設有者ã€çš†æ˜¯å言章å¥ã€æŽ¥å¼•å°å…’〠+施設藥病ã€è¡¨é¡¯åå¥ã€‚且åå¥ä¸è‡ªåå¥ã€é‚„是 +çˆ¾ç›®å‰æ˜­æ˜­éˆéˆã€é‘’覺èžçŸ¥ç…§ç‡­åº•ã€å®‰ä¸€åˆ‡ +åå¥ã€‚大德ã€é€ äº”ç„¡é–“æ¥­ã€æ–¹å¾—解脫。 +å•ã€å¦‚ä½•æ˜¯äº”ç„¡é–“æ¥­ã€‚å¸«äº‘ã€æ®ºçˆ¶å®³æ¯ã€å‡ºä½›èº« +è¡€ã€ç ´å’Œåˆåƒ§ã€ç„šç‡’ç¶“åƒç­‰ã€æ­¤æ˜¯äº”無間業。云〠+如何是父。師云ã€ç„¡æ˜Žæ˜¯çˆ¶ã€‚çˆ¾ä¸€å¿µå¿ƒã€æ±‚èµ·æ»… +處ä¸å¾—ã€å¦‚響應空ã€éš¨è™•無事ã€å為殺父。云ã€å¦‚ +何是æ¯ã€‚師云ã€è²ªæ„›ç‚ºæ¯ã€‚爾一念心ã€å…¥æ¬²ç•Œä¸­ã€ +求其貪愛ã€å”¯è¦‹è«¸æ³•空相ã€è™•處無著ã€å為害 +æ¯ã€‚云ã€å¦‚何是出佛身血。師云ã€çˆ¾å‘清淨法界 +中ã€ç„¡ä¸€å¿µå¿ƒç”Ÿè§£ã€ä¾¿è™•è™•é»‘æš—ã€æ˜¯å‡ºä½›èº«è¡€ã€‚ +云ã€å¦‚何是破和åˆåƒ§ã€‚師云ã€çˆ¾ä¸€å¿µå¿ƒã€æ­£é”ç…© +惱çµä½¿ã€å¦‚空無所ä¾ã€æ˜¯ç ´å’Œåˆåƒ§ã€‚云ã€å¦‚何是 +焚燒經åƒã€‚師云ã€è¦‹å› ç·£ç©ºã€å¿ƒç©ºã€æ³•空ã€ä¸€å¿µæ±º +定斷ã€è¿¥ç„¶ç„¡äº‹ã€ä¾¿æ˜¯ç„šç‡’ç¶“åƒã€‚大德ã€è‹¥å¦‚是 +é”å¾—ã€å…被他凡è–å礙。爾一念心ã€ç¥‡å‘空拳 +æŒ‡ä¸Šç”Ÿå¯”è§£ã€æ ¹å¢ƒæ³•ä¸­è™›ææ€ªã€‚自輕而退屈 +è¨€ã€æˆ‘是凡夫ã€ä»–是è–äººã€‚ç¦¿å±¢ç”Ÿã€æœ‰ç”šæ­»æ€¥ã€æŠ« +他師å­çš®ã€å»ä½œé‡Žå¹²é³´ã€‚大丈夫漢ã€ä¸ä½œä¸ˆå¤« +æ°£æ¯ã€è‡ªå®¶å±‹ï¼¡ç‰©ä¸è‚¯ä¿¡ã€ç¥‡éº¼å‘外覓ã€ä¸Šä»– +å¤äººé–‘åå¥ã€å€šé™°åšé™½ã€ä¸èƒ½ç‰¹é”。逢境便緣〠+逢塵便執ã€è§¸è™•惑起ã€è‡ªç„¡å‡†å®šã€‚铿µã€èŽ«å–å±± +僧說處。何故。說無憑據ã€ä¸€æœŸé–“圖畫虛空ã€å¦‚ +彩畫åƒç­‰å–»ã€‚铿µã€èŽ«å°‡ä½›ç‚ºç©¶ç«Ÿã€‚æˆ‘è¦‹çŒ¶å¦‚ +å»å­”ã€è©è–©ç¾…æ¼¢ã€ç›¡æ˜¯æž·éŽ–ã€ç¸›äººåº•物。所以文 +殊仗åŠã€æ®ºæ–¼çž¿æ›‡ã€é´¦æŽ˜æŒåˆ€ã€å®³æ–¼é‡‹æ°ã€‚铿µã€ +ç„¡ä½›å¯å¾—。乃至三乘五性ã€åœ“頓教跡ã€çš†æ˜¯ä¸€ +期藥病相治ã€ä¸¦ç„¡å¯¦æ³•。設有ã€çš†æ˜¯ç›¸ä¼¼ã€è¡¨é¡¯ +è·¯å¸ƒã€æ–‡å­—差排ã€ä¸”å¦‚æ˜¯èªªã€‚é“æµã€æœ‰ä¸€èˆ¬ç¦¿å­ã€ +便å‘ï¼¡è¨±è‘—åŠŸã€æ“¬æ±‚出世之法。錯了也。若人 +æ±‚ä½›ã€æ˜¯äººå¤±ä½›ã€‚若人求é“ã€æ˜¯äººå¤±é“。若人求 +ç¥–ã€æ˜¯äººå¤±ç¥–。大德ã€èŽ«éŒ¯ã€‚æˆ‘ä¸”ä¸å–爾解經論〠+我亦ä¸å–çˆ¾åœ‹çŽ‹å¤§è‡£ã€æˆ‘亦ä¸å–爾辯似懸 +æ²³ã€æˆ‘亦ä¸å–çˆ¾è°æ˜Žæ™ºæ…§ã€å”¯è¦çˆ¾çœŸæ­£è¦‹è§£ã€‚ +铿µã€è¨­è§£å¾—百本經論ã€ä¸å¦‚一箇無事底阿 +師。爾解得ã€å³è¼•蔑他人。å‹è² ä¿®ç¾…ã€äººæˆ‘ç„¡ +明ã€é•·åœ°ç„業。如善星比丘ã€è§£å二分教ã€ç”Ÿèº« +陷地ç„ã€å¤§åœ°ä¸å®¹ã€‚ä¸å¦‚無事休歇去。飢來喫 +飯ã€ç¡ä¾†åˆçœ¼ã€‚æ„šäººç¬‘æˆ‘ã€æ™ºä¹ƒçŸ¥ç„‰ã€‚铿µã€èŽ« +呿–‡å­—中求。心動疲勞ã€å¸å†·æ°£ç„¡ç›Šã€‚ä¸å¦‚一 +念緣起無生ã€è¶…出三乘權學è©è–©ã€‚大德ã€èޫ因 +å¾ªéŽæ—¥ã€‚å±±åƒ§å¾€æ—¥ã€æœªæœ‰è¦‹è™•時ã€é»‘漫漫地。光 +é™°ä¸å¯ç©ºéŽã€è…¹ç†±å¿ƒå¿™ã€å¥”波訪é“。後還得力〠+始到今日ã€å…±é“æµå¦‚æ˜¯è©±åº¦ã€‚å‹¸è«¸é“æµã€èŽ«ç‚º +衣食。看世界易éŽã€å–„知識難é‡ã€‚如優曇花時 +一ç¾è€³ã€‚爾諸方èžé“æœ‰ç®‡è‡¨æ¿Ÿè€æ¼¢ã€å‡ºä¾†ä¾¿ +擬å•é›£ã€æ•™èªžä¸å¾—。被山僧全體作用ã€å­¸äººç©º +開得眼ã€å£ç¸½å‹•ä¸å¾—。懵然ä¸çŸ¥ä»¥ä½•答我。我 +å‘伊é“ã€é¾è±¡è¹´è¸ã€éžé©¢æ‰€å ªã€‚爾諸處祇指胸 +點肋ã€é“我解禪解é“ã€ä¸‰ç®‡å…©ç®‡ã€åˆ°é€™ï¼¡ä¸å¥ˆ +何。咄哉ã€çˆ¾å°‡é€™ç®‡èº«å¿ƒã€åˆ°è™•簸兩片皮ã€èª‘謼 +é–­é–»ã€‚å–«éµæ£’有日在。éžå‡ºå®¶å…’ã€ç›¡å‘阿修羅 +界æ”。夫如至ç†ä¹‹é“ã€éžè«è«–而求激æšã€é—é˜ +以摧外é“ã€‚è‡³æ–¼ä½›ç¥–ç›¸æ‰¿ã€æ›´ç„¡åˆ¥æ„。設有言 +æ•™ã€è½åœ¨åŒ–儀三乘五性ã€äººå¤©å› æžœã€‚如圓頓之 +æ•™ã€åˆä¸”ä¸ç„¶ã€‚ç«¥å­å–„財ã€çš†ä¸æ±‚éŽã€‚大德ã€èŽ«éŒ¯ +用心。如大海ä¸åœæ­»å±ã€‚祇麼擔å»ã€æ“¬å¤©ä¸‹èµ°ã€‚ +自起見障ã€ä»¥ç¤™æ–¼å¿ƒã€‚日上無雲ã€éº—天普照。眼 +中無翳ã€ç©ºï¼¡ç„¡èŠ±ã€‚é“æµã€çˆ¾æ¬²å¾—如法ã€ä½†èŽ« +ç”Ÿç–‘ã€‚å±•å‰‡å½Œç¶¸æ³•ç•Œã€æ”¶å‰‡çµ²é«®ä¸ç«‹ã€‚æ­·æ­·å­¤ +æ˜Žã€æœªæ›¾æ¬ å°‘。眼ä¸è¦‹ã€è€³ä¸èžã€å–šä½œä»€éº¼ç‰©ã€‚å¤ +人云ã€èªªä¼¼ä¸€ç‰©å‰‡ä¸ä¸­ã€‚爾但自家看。更有什 +麼。說亦無盡ã€å„自著力。çé‡ã€‚ +勘辨。 +黃蘗ã€å› å…¥å»šæ¬¡ã€å•飯頭ã€ä½œä»€éº¼ã€‚é£¯é ­äº‘ã€æ€çœ¾ +僧米。黃蘗云ã€ä¸€æ—¥å–«å¤šå°‘。飯頭云ã€äºŒçŸ³äº”。 +黃蘗云ã€èŽ«å¤ªå¤šéº¼ã€‚é£¯é ­äº‘ã€çŒ¶æå°‘在。黃檗便 +打。飯頭å»èˆ‰ä¼¼å¸«ã€‚å¸«äº‘ã€æˆ‘為æ±å‹˜é€™è€æ¼¢ã€‚纔 +到ä¾ç«‹æ¬¡ã€é»ƒè˜—舉å‰è©±ã€‚師云ã€é£¯é ­ä¸æœƒã€è«‹å’Œ +尚代一轉語。師便å•ã€èŽ«å¤ªå¤šéº¼ã€‚é»ƒæª—äº‘ã€ä½•ä¸ +é“ã€ä¾†æ—¥æ›´å–«ä¸€é “。師云ã€èªªä»€éº¼ä¾†æ—¥ã€å³ä»Šä¾¿ +喫。é“了便掌。黃蘗云ã€é€™é¢¨é¡›æ¼¢ã€åˆä¾†é€™ï¼¡æ‹ +虎鬚。師便å–出去。後溈山å•ä»°å±±ã€æ­¤äºŒå°Šå®¿ã€ +æ„作麼生。仰山云ã€å’Œå°šä½œéº¼ç”Ÿã€‚溈山云ã€é¤Šå­ +方知父慈。仰山云ã€ä¸ç„¶ã€‚溈山云ã€å­åˆä½œéº¼ç”Ÿã€‚ +仰山云ã€å¤§ä¼¼å‹¾è³Šç ´å®¶ã€‚ +師å•僧ã€ä»€éº¼è™•來。僧便å–。師便æ–å。僧擬議。 +師便打。師見僧來ã€ä¾¿è±Žèµ·æ‹‚å­ã€‚僧禮拜。師便 +打。åˆè¦‹åƒ§ä¾†ã€äº¦è±Žèµ·æ‹‚å­ã€‚僧ä¸é¡§ã€‚師亦打。 +師ã€ä¸€æ—¥åŒæ™®åŒ–ã€èµ´æ–½ä¸»å®¶é½‹æ¬¡ã€å¸«å•ã€æ¯›åžå·¨ +æµ·ã€èŠ¥ç´é ˆå½Œã€‚ç‚ºæ˜¯ç¥žé€šå¦™ç”¨ã€æœ¬é«”如然。普化 +è¸å€’飯床。師云ã€å¤ªï¼¨ç”Ÿã€‚普化云ã€é€™ï¼¡æ˜¯ä»€éº¼ +所在ã€èªªï¼¨èªªç´°ã€‚師來日ã€åˆåŒæ™®åŒ–赴齋。å•ã€ä»Š +日供養ã€ä½•似昨日。普化ä¾å‰è¸å€’飯床。師云〠+å¾—å³å¾—ã€å¤ªï¼¨ç”Ÿã€‚普化云ã€çžŽæ¼¢ã€ä½›æ³•說什麼 +H細。師乃å舌。 +師一日ã€èˆ‡æ²³é™½æœ¨å¡”é•·è€ã€åŒåœ¨åƒ§å ‚地çˆå…§ +åã€‚å› èªªã€æ™®åŒ–æ¯æ—¥åœ¨è¡—å¸‚ã€æŽ£é¢¨æŽ£é¡›ã€‚çŸ¥ä»–æ˜¯ +凡是è–ã€‚è¨€çŒ¶æœªäº†ã€æ™®åŒ–入來。師便å•ã€æ±æ˜¯å‡¡ +是è–ã€‚æ™®åŒ–äº‘ã€æ±ä¸”é“ã€æˆ‘是凡是è–。師便å–。 +æ™®åŒ–ä»¥æ‰‹æŒ‡äº‘ã€æ²³é™½æ–°å©¦å­ã€æœ¨å¡”è€å©†ç¦ªã€‚臨 +濟å°å»å…’ã€å»å…·ä¸€éš»çœ¼ã€‚師云ã€é€™è³Šã€‚普化云賊 +賊ã€ä¾¿å‡ºåŽ»ã€‚ +ä¸€æ—¥ã€æ™®åŒ–在僧堂å‰ã€å–«ç”Ÿèœã€‚師見云ã€å¤§ä¼¼ä¸€ +頭驢。普化便作驢鳴。師云ã€é€™è³Šã€‚普化云賊賊〠+便出去。 +因普化ã€å¸¸æ–¼è¡—市æ–éˆ´äº‘ã€æ˜Žé ­ä¾†ã€æ˜Žé ­æ‰“ã€æš— +é ­ä¾†ã€æš—頭打ã€å››æ–¹å…«é¢ä¾†ã€æ—‹é¢¨æ‰“ã€è™›ç©ºä¾†ã€é€£æž¶ +打。師令ä¾è€…去ã€çº”見如是é“ã€ä¾¿æŠŠä½äº‘ã€ç¸½ä¸ +與麼來時如何。普化托開云ã€ä¾†æ—¥å¤§æ‚²é™¢ï¼¡ +有齋。ä¾è€…回ã€èˆ‰ä¼¼å¸«ã€‚å¸«äº‘ã€æˆ‘從來疑著這漢。 +有一è€å®¿åƒå¸«ã€æœªæ›¾äººäº‹ã€ä¾¿å•ã€ç¦®æ‹œå³æ˜¯ã€ä¸ +ç¦®æ‹œå³æ˜¯ã€‚師便å–。è€å®¿ä¾¿ç¦®æ‹œã€‚師云ã€å¥½ç®‡è‰ +賊。è€å®¿äº‘賊賊ã€ä¾¿å‡ºåŽ»ã€‚å¸«äº‘ã€èŽ«é“無事好。 +首座ä¾ç«‹æ¬¡ã€å¸«äº‘ã€é‚„有éŽä¹Ÿç„¡ã€‚é¦–åº§äº‘ã€æœ‰ã€‚師 +云ã€è³“家有éŽã€ä¸»å®¶æœ‰éŽã€‚首座云ã€äºŒä¿±æœ‰éŽã€‚ +師云ã€éŽåœ¨ä»€éº¼è™•。首座便出去。師云ã€èŽ«é“ç„¡ +äº‹å¥½ã€‚å¾Œæœ‰åƒ§èˆ‰ä¼¼å—æ³‰ã€‚å—æ³‰äº‘ã€å®˜é¦¬ç›¸è¸ã€‚ +師因入è»ç‡Ÿèµ´é½‹ã€é–€é¦–見員僚。師指露柱å•〠+是凡是è–。員僚無語。師打露柱云ã€ç›´é¥’é“得〠+也祇是箇木橛。便入去。 +師å•院主ã€ä»€éº¼è™•來。主云ã€å·žä¸­ç³¶é»ƒç±³åŽ»ä¾†ã€‚ +師云ã€ç³¶å¾—盡麼。主云ã€ç³¶å¾—盡。師以æ–é¢å‰ç•« +一畫云ã€é‚„糶得這箇麼。主便å–。師便打。典 +座至。師舉å‰èªžã€‚典座云ã€é™¢ä¸»ä¸æœƒå’Œå°šæ„。師 +云ã€çˆ¾ä½œéº¼ç”Ÿã€‚典座便禮拜。師亦打。有座主來 +相看次ã€å¸«å•ã€åº§ä¸»è¬›ä½•ç¶“èªªã€‚ä¸»äº‘ã€æŸç”²è’ +è™›ã€ç²—ç¿’ç™¾æ³•è«–ã€‚å¸«äº‘ã€æœ‰ä¸€äººã€æ–¼ä¸‰ä¹˜å二分 +æ•™æ˜Žå¾—ã€‚æœ‰ä¸€äººã€æ–¼ä¸‰ä¹˜å二分教明ä¸å¾—。是 +åŒæ˜¯åˆ¥ã€‚ä¸»äº‘ã€æ˜Žå¾—å³åŒã€æ˜Žä¸å¾—å³åˆ¥ã€‚樂普為 +ä¾è€…ã€åœ¨å¸«å¾Œç«‹äº‘ã€åº§ä¸»ã€é€™ï¼¡æ˜¯ä»€éº¼æ‰€åœ¨ã€èªª +åŒèªªåˆ¥ã€‚師回首å•ä¾è€…ã€æ±åˆä½œéº¼ç”Ÿã€‚ä¾è€…便 +å–。師é€åº§ä¸»å›žä¾†ã€é‚å•ä¾è€…ã€é©ä¾†æ˜¯æ±å–è€ +僧。ä¾è€…äº‘ã€æ˜¯ã€‚師便打。 +師èžç¬¬äºŒä»£å¾·å±±åž‚示云ã€é“å¾—ä¹Ÿä¸‰åæ£’ã€é“ +ä¸å¾—ä¹Ÿä¸‰åæ£’ã€å¸«ä»¤æ¨‚普去å•ã€é“得為什麼 +ä¹Ÿä¸‰åæ£’ã€å¾…伊打æ±ã€æŽ¥ä½æ£’é€ä¸€é€ã€çœ‹ä»–作 +麼生。普到彼ã€å¦‚教而å•。德山便打。普接ä½é€ +一é€ã€‚å¾·å±±ä¾¿æ­¸æ–¹ä¸ˆã€‚æ™®å›žèˆ‰ä¼¼å¸«ã€‚å¸«äº‘ã€æˆ‘從 +ä¾†ç–‘è‘—é€™æ¼¢ã€‚é›–ç„¶å¦‚æ˜¯ã€æ±é‚„見德山麼。普擬 +議。師便打。 +王常ä¾ã€ä¸€æ—¥è¨ªå¸«ã€‚åŒå¸«æ–¼åƒ§å ‚å‰çœ‹ã€ä¹ƒå•ã€é€™ +一堂僧ã€é‚„看經麼。師云ã€ä¸çœ‹ç¶“。ä¾äº‘ã€é‚„學禪 +麼。師云ã€ä¸å­¸ç¦ªã€‚ä¾äº‘ã€ç¶“åˆä¸çœ‹ã€ç¦ªåˆä¸å­¸ã€ +畢竟作箇什麼。師云ã€ç¸½æ•™ä¼Šæˆä½›ä½œç¥–åŽ»ã€‚ä¾ +云ã€é‡‘屑雖貴ã€è½çœ¼æˆç¿³ã€‚åˆä½œéº¼ç”Ÿã€‚師云ã€å°‡ +為爾是箇俗漢。 +叫啿山ã€å¦‚何是露地白牛。山云ã€å½å½ã€‚師 +云ã€å•žé‚£ã€‚山云ã€é•·è€ä½œéº¼ç”Ÿã€‚師云ã€é€™ç•œç”Ÿã€‚ +叫啿¨‚普云ã€å¾žä¸Šä¾†ã€ä¸€äººè¡Œæ£’ã€ä¸€äººè¡Œå–。阿 +那箇親。普云ã€ç¸½ä¸è¦ªã€‚師云ã€è¦ªè™•作麼生。普 +便å–。師乃打。 +師見僧來ã€å±•é–‹å…©æ‰‹ã€‚åƒ§ç„¡èªžã€‚å¸«äº‘ã€æœƒéº¼ã€‚云ã€ä¸ +æœƒã€‚å¸«äº‘ã€æ¸¾å´™æ“˜ä¸é–‹ã€èˆ‡çˆ¾å…©æ–‡éŒ¢ã€‚ +大覺到åƒã€‚師舉起拂å­ã€‚大覺敷å具。師擲下 +æ‹‚å­ã€‚大覺收åå…·ã€å…¥åƒ§å ‚。眾僧云ã€é€™åƒ§èŽ«æ˜¯ +和尚親故ã€ä¸ç¦®æ‹œã€åˆä¸å–«æ£’。師èžã€ä»¤å–šè¦ºã€‚覺 +出。師云ã€å¤§çœ¾é“ã€æ±æœªåƒé•·è€ã€‚覺云ä¸å¯©ã€ä¾¿ +自歸眾。 +趙州行腳時åƒå¸«ã€‚é‡å¸«æ´—腳次ã€å·žä¾¿å•ã€å¦‚何 +是祖師西來æ„ã€‚å¸«äº‘ã€æ°å€¼è€åƒ§æ´—腳。州近å‰ã€ +作è½å‹¢ã€‚å¸«äº‘ã€æ›´è¦ç¬¬äºŒæ“惡水潑在。州便下 +去。 +有定上座ã€åˆ°åƒå•ã€å¦‚何是佛法大æ„。師下繩 +åºŠã€æ“’ä½èˆ‡ä¸€æŽŒã€ä¾¿æ‰˜é–‹ã€‚定佇立。å‚僧云ã€å®š +上座ã€ä½•ä¸ç¦®æ‹œã€‚定方禮拜ã€å¿½ç„¶å¤§æ‚Ÿã€‚ +麻谷到åƒã€‚æ•·åå…·å•ã€å二é¢è§€éŸ³ã€é˜¿é‚£é¢ +正。師下繩床ã€ä¸€æ‰‹æ”¶åå…·ã€ä¸€æ‰‹æŠéº»è°·äº‘ã€å +二é¢è§€éŸ³ã€å‘ä»€éº¼è™•åŽ»ä¹Ÿã€‚éº»è°·è½‰èº«ã€æ“¬å繩 +åºŠã€‚å¸«æ‹ˆæ‹„æ–æ‰“。麻谷接å»ã€ç›¸æ‰å…¥æ–¹ä¸ˆã€‚ +師å•åƒ§ã€æœ‰æ™‚一å–ã€å¦‚金剛王寶åŠã€‚有時一å–〠+如踞地金毛師å­ã€‚有時一å–ã€å¦‚探竿影è‰ã€‚有 +時一å–ã€ä¸ä½œä¸€å–用。æ±ä½œéº¼ç”Ÿæœƒã€‚僧擬議。 +師便å–。 +504b +師å•一尼ã€å–„來惡來。尼便å–ã€‚å¸«æ‹ˆæ£’äº‘ã€æ›´é“ +æ›´é“。尼åˆå–。師便打。 +é¾ç‰™å•ã€å¦‚何是祖師西來æ„。師云ã€èˆ‡æˆ‘éŽç¦ª +æ¿ä¾†ã€‚牙便éŽç¦ªæ¿èˆ‡å¸«ã€‚å¸«æŽ¥å¾—ä¾¿æ‰“ã€‚ç‰™äº‘ã€æ‰“ +å³ä»»æ‰“ã€è¦ä¸”無祖師æ„。牙後到翠微å•ã€å¦‚何 +是祖師西來æ„。微云ã€èˆ‡æˆ‘éŽè’²åœ˜ä¾†ã€‚ç‰™ä¾¿éŽ +è’²åœ˜èˆ‡ç¿ å¾®ã€‚ç¿ å¾®æŽ¥å¾—ä¾¿æ‰“ã€‚ç‰™äº‘ã€æ‰“å³ä»»æ‰“〠+è¦ä¸”無祖師æ„。牙ä½é™¢å¾Œã€æœ‰åƒ§å…¥å®¤è«‹ç›Šäº‘〠+和尚行腳時ã€åƒäºŒå°Šå®¿å› ç·£ã€é‚„肯他也無。牙 +云ã€è‚¯å³æ·±è‚¯ã€è¦ä¸”無祖師æ„。 +徑山有五百眾ã€å°‘人åƒè«‹ã€‚黃檗令師到徑山。 +ä¹ƒè¬‚å¸«æ›°ã€æ±åˆ°å½¼ä½œéº¼ç”Ÿã€‚å¸«äº‘ã€æŸç”²åˆ°å½¼ã€è‡ª +有方便。師到徑山ã€è£è…°ä¸Šæ³•å ‚ã€è¦‹å¾‘山。徑山 +方舉頭ã€å¸«ä¾¿å–。徑山擬開å£ã€å¸«æ‹‚袖便行。尋 +有僧å•徑山ã€é€™åƒ§é©ä¾†æœ‰ä»€éº¼è¨€å¥ã€ä¾¿å–å’Œ +尚。徑山云ã€é€™åƒ§å¾žé»ƒæª—會A來。爾è¦çŸ¥éº¼ã€ +且å•å–他。徑山五百眾ã€å¤ªåŠåˆ†æ•£ã€‚ +æ™®åŒ–ä¸€æ—¥ã€æ–¼è¡—市中ã€å°±äººä¹žç›´è£°ã€‚人皆與之。 +普化俱ä¸è¦ã€‚師令院主買棺一具。普化歸來。 +å¸«äº‘ã€æˆ‘與æ±åšå¾—箇直裰了也。普化便自擔 +去ã€ç¹žè¡—市å«äº‘ã€è‡¨æ¿Ÿèˆ‡æˆ‘åšç›´è£°äº†ä¹Ÿã€‚我往 +æ±é–€é·åŒ–åŽ»ã€‚å¸‚äººç«¶éš¨çœ‹ä¹‹ã€‚æ™®åŒ–äº‘ã€æˆ‘今 +日未ã€ä¾†æ—¥å¾€å—é–€é·åŒ–去。如是三日ã€äººçš† +ä¸ä¿¡ã€‚至第四日ã€ç„¡äººéš¨çœ‹ã€‚ç¨å‡ºåŸŽå¤–ã€è‡ªå…¥æ£º +å…§ã€å€©è·¯è¡Œäººé‡˜ä¹‹ã€‚峿™‚傳布。市人競往開棺〠+乃見全身脫去。祇èžç©ºä¸­éˆ´éŸ¿ã€éš±éš±è€ŒåŽ»ã€‚ +行錄。 +師åˆåœ¨é»ƒè˜—會下ã€è¡Œæ¥­ç´”一。首座乃歎曰ã€é›– +是後生ã€èˆ‡çœ¾æœ‰ç•°ã€‚é‚å•ã€ä¸Šåº§åœ¨æ­¤ã€å¤šå°‘時。師 +云ã€ä¸‰å¹´ã€‚é¦–åº§äº‘ã€æ›¾åƒå•也無。師云ã€ä¸æ›¾åƒ +å•。ä¸çŸ¥å•ç®‡ä»€éº¼ã€‚é¦–åº§äº‘ã€æ±ä½•ä¸åŽ»å•å ‚é ­ +和尚ã€å¦‚何是佛法的的大æ„。師便去å•ã€‚è²æœª +絕ã€é»ƒè˜—便打。師下來。首座云ã€å•話作麼生。 +å¸«äº‘ã€æŸç”²å•è²æœªçµ•ã€å’Œå°šä¾¿æ‰“。æŸç”²ä¸æœƒã€‚首 +座云ã€ä½†æ›´åŽ»å•。師åˆåŽ»å•ã€‚é»ƒè˜—åˆæ‰“。如是三 +度發å•ã€ä¸‰åº¦è¢«æ‰“。師來白首座云ã€å¹¸è’™æ…ˆæ‚²ã€ +令æŸç”²å•訊和尚。三度發å•ã€ä¸‰åº¦è¢«æ‰“ã€‚è‡ªæ¨ +障緣ä¸é ˜æ·±æ—¨ã€‚ä»Šä¸”è¾­åŽ»ã€‚é¦–åº§äº‘ã€æ±è‹¥åŽ»æ™‚ã€ +須辭和尚去。師禮拜退。首座先到和尚處云〠+å•話底後生ã€ç”šæ˜¯å¦‚æ³•ã€‚è‹¥ä¾†è¾­æ™‚ã€æ–¹ä¾¿æŽ¥ä»–。 +å‘後穿鑿æˆä¸€æ ªå¤§æ¨¹ã€èˆ‡å¤©ä¸‹äººä½œå»•涼去 +在。師去辭黃蘗。蘗云ã€ä¸å¾—往別處去。æ±å‘高 +安ç˜é ­å¤§æ„šè™•去ã€å¿…為æ±èªªã€‚師到大愚。大愚 +å•ã€ä»€éº¼è™•來。師云ã€é»ƒè˜—處來。大愚云ã€é»ƒè˜— +有何言å¥ã€‚å¸«äº‘ã€æŸç”²ä¸‰åº¦å•佛法的的大æ„〠+三度被打。ä¸çŸ¥æŸç”²æœ‰éŽç„¡éŽã€‚大愚云ã€é»ƒè˜— +與麼è€å©†ã€ç‚ºæ±å¾—徹困。更來這Aã€å•有éŽç„¡ +éŽã€‚師於言下大悟云ã€å…ƒä¾†é»ƒè˜—佛法無多å­ã€‚ +大愚æŠä½äº‘ã€é€™å°¿åºŠé¬¼å­ã€é©ä¾†é“有éŽç„¡éŽã€ +如今å»é“ã€é»ƒè˜—佛法無多å­ã€‚çˆ¾è¦‹ç®‡ä»€éº¼é“ +ç†ã€é€Ÿé“速é“。師於大愚脅下ã€ç¯‰ä¸‰æ‹³ã€‚大愚托 +é–‹äº‘ã€æ±å¸«é»ƒè˜—ã€éžäºŽæˆ‘事。師辭大愚ã€å»å›žé»ƒ +蘗。黃蘗見來便å•ã€é€™æ¼¢ä¾†ä¾†åŽ»åŽ»ã€æœ‰ä»€éº¼äº† +期。師云ã€ç¥‡ç‚ºè€å©†å¿ƒåˆ‡ã€‚便人事了ä¾ç«‹ã€‚黃蘗 +å•ã€ä»€éº¼è™•åŽ»ä¾†ã€‚å¸«äº‘ã€æ˜¨å¥‰æ…ˆæ—¨ã€ä»¤åƒå¤§æ„š +去來。黃蘗云ã€å¤§æ„šæœ‰ä½•è¨€å¥ã€‚師é‚舉å‰è©±ã€‚黃 +蘗云ã€ä½œéº¼ç”Ÿå¾—這漢來ã€å¾…痛與一頓。師云ã€èªª +什麼待來ã€å³ä»Šä¾¿å–«ã€‚隨後便掌。黃蘗云ã€é€™é¢¨ +顛漢ã€å»ä¾†é€™ï¼¡æ‹è™Žé¬šã€‚師便å–。黃蘗云ã€ä¾è€…〠+引這風顛漢ã€åƒå ‚åŽ»ã€‚å¾Œã€æºˆå±±èˆ‰æ­¤è©±ã€å•仰山〠+臨濟當時ã€å¾—大愚力ã€å¾—黃蘗力。仰山云ã€éžä½† +騎虎頭ã€äº¦è§£æŠŠè™Žå°¾ã€‚ +å¸«æ ½æ¾æ¬¡ã€é»ƒè˜—å•ã€æ·±å±±ï¼¡æ ½è¨±å¤šä½œä»€éº¼ã€‚師 +云ã€ä¸€èˆ‡å±±é–€ä½œå¢ƒè‡´ã€äºŒèˆ‡å¾Œäººä½œæ¨™æ¦œã€‚é“了〠+å°‡é’頭打地三下。黃蘗云ã€é›–然如是ã€å­å·²å–« +å¾ä¸‰å棒了也。師åˆä»¥é’頭打地三下ã€ä½œå™“ +噓è²ã€‚黃蘗云ã€å¾å®—到æ±ã€å¤§èˆˆæ–¼ä¸–。後溈山舉 +此語ã€å•ä»°å±±ã€é»ƒè˜—當時ã€ç¥‡å›‘è‡¨æ¿Ÿä¸€äººã€æ›´æœ‰ +äººåœ¨ã€‚ä»°å±±äº‘ã€æœ‰ã€‚祇是年代深é ã€ä¸æ¬²èˆ‰ä¼¼å’Œ +尚。溈山云ã€é›–然如是ã€å¾äº¦è¦çŸ¥ã€‚æ±ä½†èˆ‰çœ‹ã€‚ä»° +山云ã€ä¸€äººæŒ‡å—ã€å³è¶Šä»¤è¡Œã€é‡å¤§é¢¨å³æ­¢ã€‚〔讖風穴和尚也。〕 +師ä¾ç«‹å¾·å±±æ¬¡ã€å±±äº‘ã€ä»Šæ—¥å›°ã€‚師云ã€é€™è€æ¼¢ï¼¥ +語作什麼。山便打。師掀倒繩床。山便休。 +師普請鋤地次ã€è¦‹é»ƒè˜—ä¾†ã€æ‹„é’而立。黃蘗云〠+這漢困那。師云ã€é’也未舉ã€å›°ç®‡ä»€éº¼ã€‚黃蘗便 +æ‰“ã€‚å¸«æŽ¥ä½æ£’ã€ä¸€é€é€å€’。黃蘗喚維那ã€ç¶­é‚£æ‰¶ +èµ·æˆ‘ã€‚ç¶­é‚£è¿‘å‰æ‰¶äº‘ã€å’Œå°šçˆ­å®¹å¾—這風顛漢 +無禮。黃蘗纔起ã€ä¾¿æ‰“維那。師é’地云ã€è«¸æ–¹ç« +è‘¬ã€æˆ‘這A一時活埋。後溈山å•ä»°å±±ã€é»ƒè˜—打 +ç¶­é‚£ã€æ„ä½œéº¼ç”Ÿã€‚ä»°å±±äº‘ã€æ­£è³Šèµ°å»ã€é‚蹤人 +喫棒。師一日ã€åœ¨åƒ§å ‚å‰å。見黃蘗來ã€ä¾¿é–‰å» +目。黃蘗乃作怖勢ã€ä¾¿æ­¸æ–¹ä¸ˆã€‚師隨至方丈禮 +è¬ã€‚首座在黃蘗處ä¾ç«‹ã€‚é»ƒè˜—äº‘ã€æ­¤åƒ§é›–是後 +生ã€å»çŸ¥æœ‰æ­¤äº‹ã€‚首座云ã€è€å’Œå°šè…³è·Ÿä¸é»žåœ°ã€ +å»è­‰æ“šç®‡å¾Œç”Ÿã€‚黃蘗自於å£ä¸Šæ‰“一摑。首座 +云ã€çŸ¥å³å¾—。 +師在堂中ç¡ã€‚黃蘗下來見ã€ä»¥æ‹„æ–æ‰“æ¿é ­ä¸€ +下。師舉頭ã€è¦‹æ˜¯é»ƒè˜—ã€å»ç¡ã€‚é»ƒè˜—åˆæ‰“æ¿é ­ä¸€ +下ã€å»å¾€ä¸Šé–“ã€è¦‹é¦–座å禪ã€ä¹ƒäº‘ã€ä¸‹é–“後生 +å»åç¦ªã€æ±é€™ï¼¡å¦„想作什麼。首座云ã€é€™è€æ¼¢ +作什麼。黃蘗打æ¿é ­ä¸€ä¸‹ã€ä¾¿å‡ºåŽ»ã€‚å¾Œã€æºˆå±±å• +ä»°å±±ã€é»ƒè˜—å…¥åƒ§å ‚ã€æ„作麼生。仰山云ã€å…©å½© +一賽。 +一日普請次ã€å¸«åœ¨å¾Œè¡Œã€‚黃蘗回頭ã€è¦‹å¸«ç©ºæ‰‹ã€ +乃å•ã€é’é ­åœ¨ä»€éº¼è™•ã€‚å¸«äº‘ã€æœ‰ä¸€äººå°‡åŽ»äº†ä¹Ÿã€‚ +黃蘗云ã€è¿‘å‰ä¾†ã€å…±æ±å•†é‡ç®‡äº‹ã€‚師便近å‰ã€‚黃 +蘗豎起é’頭云ã€ç¥‡é€™ç®‡ã€å¤©ä¸‹äººæ‹ˆæŽ‡ä¸èµ·ã€‚師 +就手掣得ã€è±Žèµ·äº‘ã€ç‚ºä»€éº¼å»åœ¨æŸç”²æ‰‹ï¼¡ã€‚黃 +蘗云ã€ä»Šæ—¥å¤§æœ‰äººæ™®è«‹ã€‚便歸院。後溈山å•ä»° +å±±ã€é’頭在黃蘗手Aã€ç‚ºä»€éº¼å»è¢«è‡¨æ¿Ÿå¥ªå»ã€‚ +仰山云ã€è³Šæ˜¯å°äººã€æ™ºéŽå›å­ã€‚ +師為黃蘗馳書去溈山。時仰山作知客。接得 +書ã€ä¾¿å•ã€é€™ç®‡æ˜¯é»ƒè˜—底ã€é‚£ç®‡æ˜¯å°ˆä½¿åº•。師便 +掌。仰山約ä½äº‘ã€è€å…„知是般事ã€ä¾¿ä¼‘。åŒåŽ»è¦‹ +溈山。溈山便å•ã€é»ƒè˜—師兄多少眾。師云ã€ä¸ƒç™¾ +眾。溈山云ã€ä»€éº¼äººç‚ºå°Žé¦–。師云ã€é©ä¾†å·²é”書 +了也。師å»å•溈山ã€å’Œå°šæ­¤é–“多少眾。溈山云〠+一åƒäº”百眾。師云ã€å¤ªå¤šç”Ÿã€‚溈山云ã€é»ƒè˜—師兄 +亦ä¸å°‘。師辭溈山。仰山é€å‡ºäº‘ã€æ±å‘後北去〠+有箇ä½è™•。師云ã€è±ˆæœ‰èˆ‡éº¼äº‹ã€‚仰山云ã€ä½†åŽ»ã€å·² +後有一人ä½è¼”è€å…„在。此人祇是有頭無尾〠+æœ‰å§‹ç„¡çµ‚ã€‚å¸«å¾Œåˆ°éŽ®å·žã€æ™®åŒ–已在彼中。師出 +ä¸–ã€æ™®åŒ–ä½è´Šæ–¼å¸«ã€‚叫使œªä¹…ã€æ™®åŒ–全身脫去。 +師因åŠå¤ä¸Šé»ƒè˜—ã€è¦‹å’Œå°šçœ‹ç¶“ã€‚å¸«äº‘ã€æˆ‘將謂 +是箇人ã€å…ƒä¾†æ˜¯å”µé»‘豆è€å’Œå°šã€‚使•¸æ—¥ã€ä¹ƒè¾­ +åŽ»ã€‚é»ƒè˜—äº‘ã€æ±ç ´å¤ä¾†ã€ä¸çµ‚å¤åŽ»ã€‚å¸«äº‘ã€æŸç”² +æš«ä¾†ç¦®æ‹œå’Œå°šã€‚é»ƒè˜—é‚æ‰“ã€è¶ä»¤åŽ»ã€‚å¸«è¡Œæ•¸é‡Œã€ +疑此事ã€å»å›žçµ‚å¤ã€‚師一日ã€è¾­é»ƒè˜—。蘗å•ã€ä»€éº¼ +處去。師云ã€ä¸æ˜¯æ²³å—ã€ä¾¿æ­¸æ²³åŒ—。黃蘗便打。師 +ç´„ä½èˆ‡ä¸€æŽŒã€‚黃蘗大笑ã€ä¹ƒå–šä¾è€…ã€å°‡ç™¾ä¸ˆå…ˆ +å¸«ç¦ªæ¿æœºæ¡ˆä¾†ã€‚師云ã€ä¾è€…ã€å°‡ç«ä¾†ã€‚黃蘗云ã€é›– +ç„¶å¦‚æ˜¯ã€æ±ä½†å°‡åŽ»ã€‚å·²å¾Œåå»å¤©ä¸‹äººèˆŒé ­åŽ» +在。後溈山å•ä»°å±±ã€è‡¨æ¿ŸèŽ«è¾œè² ä»–é»ƒè˜—ä¹Ÿç„¡ã€‚ +仰山云ã€ä¸ç„¶ã€‚溈山云ã€å­åˆä½œéº¼ç”Ÿã€‚仰山云〠+çŸ¥æ©æ–¹è§£å ±æ©ã€‚溈山云ã€å¾žä¸Šå¤äººã€é‚„有相似 +506a +åº•ä¹Ÿç„¡ã€‚ä»°å±±äº‘ã€æœ‰ã€‚祇是年代深é ã€ä¸æ¬²èˆ‰ä¼¼ +和尚。溈山云ã€é›–然如是ã€å¾äº¦è¦çŸ¥ã€‚å­ä½†èˆ‰ +看。仰山云ã€ç¥‡å¦‚楞嚴會上ã€é˜¿é›£è®šä½›äº‘ã€å°‡æ­¤ +æ·±å¿ƒå¥‰å¡µå‰Žã€æ˜¯å‰‡å為報佛æ©ã€‚è±ˆä¸æ˜¯å ±æ© +之事。溈山云ã€å¦‚æ˜¯å¦‚æ˜¯ã€‚è¦‹èˆ‡å¸«é½Šã€æ¸›å¸«åŠå¾·ã€‚ +è¦‹éŽæ–¼å¸«ã€æ–¹å ªå‚³æŽˆã€‚ +師到é”磨塔頭。塔主云ã€é•·è€ã€å…ˆç¦®ä½›ã€å…ˆç¦®ç¥–。 +師云ã€ä½›ç¥–俱ä¸ç¦®ã€‚塔主云ã€ä½›ç¥–èˆ‡é•·è€æ˜¯ä»€ +麼冤家。師便拂袖而出。 +師行腳時ã€åˆ°é¾å…‰ã€‚光上堂。師出å•云ã€ä¸å±•é‹’ +é‹©ã€å¦‚何得å‹ã€‚光據å。師云ã€å¤§å–„知識ã€è±ˆç„¡æ–¹ +便。光瞪目云ã€å—„。師以手指云ã€é€™è€æ¼¢ã€ä»Šæ—¥æ•— +闕也。 +åˆ°ä¸‰å³°ã€‚å¹³å’Œå°šå•æ›°ã€ä»€éº¼è™•來。師云ã€é»ƒè˜—來。 +平云ã€é»ƒè˜—有何言å¥ã€‚師云ã€é‡‘牛昨夜é­å¡—炭〠+直至如今ä¸è¦‹è¹¤ã€‚平云ã€é‡‘風å¹çŽ‰ç®¡ã€é‚£ç®‡æ˜¯ +知音。師云ã€ç›´é€è¬é‡é—œã€ä¸ä½æ¸…霄內。平云〠+å­é€™ä¸€å•太高生。師云ã€é¾ç”Ÿé‡‘é³³å­ã€è¡ç ´ç¢§ +ç‰ç’ƒã€‚平云ã€ä¸”å喫茶。åˆå•ã€è¿‘離甚處。師云〠+é¾å…‰ã€‚平云ã€é¾å…‰è¿‘日如何。師便出去。 +到大慈。慈在方丈內å。師å•ã€ç«¯å±…丈室時如 +何。慈云ã€å¯’æ¾ä¸€è‰²åƒå¹´åˆ¥ã€é‡Žè€æ‹ˆèбè¬åœ‹æ˜¥ã€‚ +師云ã€ä»Šå¤æ°¸è¶…圓智體ã€ä¸‰å±±éŽ–æ–·è¬é‡é—œã€‚æ…ˆ +便å–。師亦å–。慈云ã€ä½œéº¼ã€‚師拂袖便出。 +到襄州è¯åš´ã€‚嚴倚拄æ–ã€ä½œç¡å‹¢ã€‚師云ã€è€å’Œå°š +瞌ç¡ä½œéº¼ã€‚嚴云ã€ä½œå®¶ç¦ªå®¢ã€å®›çˆ¾ä¸åŒã€‚師云ã€ä¾ +者ã€é»žèŒ¶ä¾†ã€èˆ‡å’Œå°šå–«ã€‚嚴乃喚維那ã€ç¬¬ä¸‰ä½å®‰ +排這上座。 +到翠峰。峰å•ã€ç”šè™•來。師云ã€é»ƒè˜—來。峰云ã€é»ƒ +蘗有何言å¥ã€æŒ‡ç¤ºæ–¼äººã€‚師云ã€é»ƒè˜—無言å¥ã€‚å³° +云ã€ç‚ºä»€éº¼ç„¡ã€‚師云ã€è¨­æœ‰ã€äº¦ç„¡èˆ‰è™•。峰云ã€ä½† +舉看。師云ã€ä¸€ç®­éŽè¥¿å¤©ã€‚ +到象田。師å•ã€ä¸å‡¡ä¸è–ã€è«‹å¸«é€Ÿé“。田云ã€è€ +僧祇與麼。師便å–云ã€è¨±å¤šç¦¿å­ã€åœ¨é€™ï¼¡è¦“什 +麼D。 +到明化。化å•ã€ä¾†ä¾†åŽ»åŽ»ä½œä»€éº¼ã€‚å¸«äº‘ã€ç¥‡å¾’ +è¸ç ´è‰éž‹ã€‚化云ã€ç•¢ç«Ÿä½œéº¼ç”Ÿã€‚師云ã€è€æ¼¢è©±é ­ +也ä¸è­˜ã€‚ +往鳳林。路逢一婆。婆å•ã€ç”šè™•去。師云ã€é³³æž— +åŽ»ã€‚å©†äº‘ã€æ°å€¼é³³æž—ä¸åœ¨ã€‚師云ã€ç”šè™•去。婆便 +行。師乃喚婆。婆回頭。師便打。 +到鳳林。林å•ã€æœ‰äº‹ç›¸å€Ÿå•ã€å¾—麼。師云ã€ä½•å¾— +å‰œè‚‰ä½œç˜¡ã€‚æž—äº‘ã€æµ·æœˆæ¾„ç„¡å½±ã€éŠé­šç¨è‡ªè¿·ã€‚師 +äº‘ã€æµ·æœˆæ—¢ç„¡å½±ã€éŠé­šä½•得迷。鳳林云ã€è§€é¢¨ +知浪起ã€ç¿«æ°´é‡Žå¸†é£„。師云ã€å­¤è¼ªç¨ç…§æ±Ÿå±±éœã€ +自笑一è²å¤©åœ°é©šã€‚林云ã€ä»»å°‡ä¸‰å¯¸è¼å¤©åœ°ã€ä¸€ +å¥è‡¨æ©Ÿè©¦é“看。師云ã€è·¯é€¢åŠå®¢é ˆå‘ˆåŠã€ä¸æ˜¯ +詩人莫ç»è©©ã€‚鳳林便休。師乃有頌ã€å¤§é“絕åŒã€ +ä»»å‘西æ±ã€çŸ³ç«èŽ«åŠã€é›»å…‰ç½”通。溈山å•仰山〠+石ç«èŽ«åŠã€é›»å…‰ç½”通。從上諸è–ã€å°‡ä»€éº¼ç‚ºäººã€‚ +仰山云ã€å’Œå°šæ„作麼生。溈山云ã€ä½†æœ‰è¨€èªªã€éƒ½ +無寔義。仰山云ã€ä¸ç„¶ã€‚溈山云ã€å­åˆä½œéº¼ç”Ÿã€‚ +仰山云ã€å®˜ä¸å®¹é‡ã€ç§é€šè»Šé¦¬ã€‚ +åˆ°é‡‘ç‰›ã€‚ç‰›è¦‹å¸«ä¾†ã€æ©«æŒ‰æ‹„æ–ã€ç•¶é–€è¸žå。師以 +手敲拄æ–三下ã€å»æ­¸å ‚中第一ä½å。牛下來 +見ã€ä¹ƒå•ã€å¤«è³“主相見ã€å„å…·å¨å„€ã€‚上座從何而 +來ã€å¤ªç„¡ç¦®ç”Ÿã€‚師云ã€è€å’Œå°šé“什麼。牛擬開 +å£ã€‚å¸«ä¾¿æ‰“ã€‚ç‰›ä½œå€’å‹¢ã€‚å¸«åˆæ‰“。牛云ã€ä»Šæ—¥ä¸ +著便。溈山å•ä»°å±±ã€æ­¤äºŒå°Šå®¿ã€é‚„有å‹è² ä¹Ÿç„¡ã€‚ +仰山云ã€å‹å³ç¸½å‹ã€è² å³ç¸½è² ã€‚ +師臨é·åŒ–æ™‚ã€æ“šå云ã€å¾æ»…後ã€ä¸å¾—æ»…å»å¾æ­£ +法眼è—。三è–出云ã€çˆ­æ•¢æ»…å»å’Œå°šæ­£æ³•眼è—。 +師云ã€å·²å¾Œæœ‰äººå•爾ã€å‘ä»–é“什麼。三è–便å–。 +師云ã€èª°çŸ¥å¾æ­£æ³•眼è—ã€å‘這瞎驢邊滅å»ã€‚言 +Fã€ç«¯ç„¶ç¤ºå¯‚。 +å¸«è«±ç¾©çŽ„ã€æ›¹å·žå—è¯äººä¹Ÿã€‚ä¿—å§“é‚¢æ°ã€‚幼而 +穎異ã€é•·ä»¥å­èžã€‚åŠè½é«®å—å…·ã€å±…於講肆ã€ç²¾ç©¶ +毘尼ã€åšè³¾ç¶“è«–ã€‚ä¿„è€Œæ­Žæ›°ã€æ­¤æ¿Ÿä¸–之醫方也〠+éžæ•™å¤–åˆ¥å‚³ä¹‹æ—¨ã€‚å³æ›´è¡£æ¸¸æ–¹ã€é¦–åƒé»ƒè˜—ã€æ¬¡ +è¬å¤§æ„šã€‚其機緣語å¥ã€è¼‰äºŽè¡ŒéŒ„。既å—é»ƒè˜—å° +å¯ã€å°‹æŠµæ²³åŒ—。鎮州城æ±å—éš…ã€è‡¨æ»¹æ²±æ²³å´ã€å° +院使Œã€‚其臨濟因地得å。時普化先在彼ã€ä½¯ +狂混眾ã€è–凡莫測。師至å³ä½ä¹‹ã€‚å¸«æ­£æ—ºåŒ–ã€æ™® +化全身脫去。乃符仰山å°é‡‹è¿¦ä¹‹æ‡¸è¨˜ä¹Ÿã€‚é© +ä¸å…µé©ã€å¸«å³æ£„去。太尉默å›å’Œã€æ–¼åŸŽä¸­æ¨å®… +為寺ã€äº¦ä»¥è‡¨æ¿Ÿç‚ºé¡ã€è¿Žå¸«å±…焉。後拂衣å—é‚〠+至河府。府主王常ä¾ã€å»¶ä»¥å¸«ç¦®ã€‚使œªå¹¾ã€å³ä¾† +大å府興化寺ã€å±…于æ±å ‚。師無疾ã€å¿½ä¸€æ—¥æ” +衣據åã€èˆ‡ä¸‰è–å•答畢ã€å¯‚然而é€ã€‚時å”咸通 +å…«å¹´ä¸äº¥ã€å­Ÿé™¬æœˆå日也。門人以師全身ã€å»º +塔于大å府西北隅。G謚慧照禪師ã€å¡”號澄 +éˆã€‚åˆæŽŒç¨½é¦–ã€è¨˜å¸«å¤§ç•¥ã€‚ä½éŽ®å·žä¿å£½å—£æ³•å° +師廷沼謹書。 +鎮州臨濟慧照禪師語錄終。 +ä½å¤§å府興化嗣法å°å¸«å­˜çŽæ ¡å‹˜ã€‚ +永享ä¹å¹´å…«æœˆå五日æ¿åœ¨æ³•性寺æ±ç¶“所。 \ No newline at end of file diff --git a/intl/icu/source/extra/uconv/samples/utf8/many.txt b/intl/icu/source/extra/uconv/samples/utf8/many.txt new file mode 100644 index 000000000..47af19648 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/many.txt @@ -0,0 +1,18 @@ +外国語ã®å‹‰å¼·ã¨æ•™ãˆ +Изучение и обучение иноÑтранных Ñзыков +語文教學・语文教学 +Enseñanza y estudio de idiomas +Изучаване и Преподаване на Чужди Езипи +ქáƒáƒ áƒ—ული ენის შესწáƒáƒ•ლრდრსწáƒáƒ•ლებრ+'læŋɡwidÊ’ 'lɘr:niÅ‹ ænd 'ti:ʃiÅ‹ +Lus kawm thaib qhia +Ngôn Ngữ, Sá»± há»c, +‭‫ללמוד וללמד ×ת השֵפה +L'enseignement et l'étude des langues +㜊㞕ã§ã’Ÿã¦®â€ƒã€ã›²ã­˜ã’Ÿ +Nauka jÄ™zyków obcych +Γλωσσική Εκμὰθηση και Διδασκαλία +‭‫ﺗﺪﺭﯾﺲ ï»­ ﯾﺎﺩﮔﯿﺮﯼ ﺯﺑﺎﻥ +Sprachlernen und -lehren +‭‫ﺗﻌﻠ‫Ùّ‪‫ﻢ ﻭﺗﺪﺭﻳﺲ ïºï»Ÿï»Œïº®ïº‘ﻴﺔ +เรียนà¹à¸¥à¸°à¸ªà¸­à¸™à¸ à¸²à¸©à¸² diff --git a/intl/icu/source/extra/uconv/samples/utf8/maopoem.txt b/intl/icu/source/extra/uconv/samples/utf8/maopoem.txt new file mode 100644 index 000000000..6c27be8ba --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/maopoem.txt @@ -0,0 +1,23 @@ +和毛泽东 <<é‡ä¸Šäº•冈山>>. 严永欣, 一ä¹å…«å…«å¹´ + 和毛泽东 <<é‡ä¸Šäº•冈山>>. 严永欣, 一ä¹å…«å…«å¹´. + + 久有归天愿 + 终过鬼门关 + åƒé‡Œæ¥å¯»å½’宿 + 春åŽå˜è‹é¢œ + 到处群魔乱舞 + 更有妖雾盘绕 + æš—é“入阴间 + 过了阎王殿 + 险处ä¸é¡»çœ‹ + + 风雷动 + 旌旗奋 + 忆人寰 + å…«å三年过去 + 弹指一挥间 + 中原åƒå†›é€è’‹ + 城楼万众检阅 + 褒贬满载还 + 世上无难事 + åªæ€•我癫痫 diff --git a/intl/icu/source/extra/uconv/samples/utf8/russian.txt b/intl/icu/source/extra/uconv/samples/utf8/russian.txt new file mode 100644 index 000000000..ce3a85cc0 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/russian.txt @@ -0,0 +1,6 @@ +ÐмериканÑкие Ñуда находÑÑ‚ÑÑ Ð² международных водах. Ð¯Ð¿Ð¾Ð½Ð¸Ñ +выразила Ñерьезное беÑпокойÑтво ÑоветÑкими дейÑтвиÑми. +Пентагон беÑпокойÑтва не проÑвил. СШРпроводÑÑ‚ подобное Ñлеже- +ние за ÑоветÑкими Ñудами в КарибÑком море. Правда, количеÑтво +ÑоветÑких Ñамолетов вызвало некоторое удивление.. + diff --git a/intl/icu/source/extra/uconv/samples/utf8/simplechinese.txt b/intl/icu/source/extra/uconv/samples/utf8/simplechinese.txt new file mode 100644 index 000000000..79e89247c --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/simplechinese.txt @@ -0,0 +1,14 @@ +简介 + + CALIS 是一个专为语文教学而设计的电脑软件。在当今这个电脑时代,"电脑辅助教学"是一个æžä¸ºæ•™å¸ˆä¸Žå­¦ç”Ÿæ‰€å–œæ¬¢çš„æ•™å­¦åª’体。 + + å› ä¸ºæ•™å­¦é¡»è¦æ³¨é‡ä¸ªåˆ«åŒ–,æ¯ä¸€ä¸ªå­¦ç”Ÿæœ‰å…¶ä¸åŒçš„程度,如何有效地针对æ¯ä¸€ä¸ªå­¦ç”Ÿç»™äºˆä¸åŒçš„å应åŠç«‹åˆ»çš„æŒ‡æ­£ï¼Œä»¥åŠæœ€åŽä¸åŒçš„è®°åˆ†ï¼Œåªæœ‰ä»°èµ–"电脑"去完æˆã€‚ CALIS 正是扮演了这个角色。ä¸ä»…å‡è½»äº†è€å¸ˆçš„负担与时间,更能兼顾到æ¯ä¸€ä¸ªå­¦ç”Ÿä¹‹éœ€è¦ã€‚除此之外,CALIS æä¾›äº†ç”ŸåŠ¨çš„å­¦ä¹ çŽ¯å¢ƒï¼Œæ‰€ä»¥æ›´èƒ½æ¿€å‘学生的学习兴趣与动机。 + + WinCALIS 是 CALIS 的延伸,涵盖了更多的功能。比如:è¿ç”¨è§†çª— (window) åŠæ»‘é¼  (mouse),让教师åŠå­¦ç”Ÿæ›´ä¸ºæœ‰æ•ˆåœ°æ“作;"拼音更正 "(spelling check) æä¾›é€‚当的暗示,给予学生æ€è€ƒåŠæ”¹æ­£ï¼›åœ¨ç¼–排课程方é¢ï¼Œæ•™å¸ˆåªé¡»åœ¨æ˜¾çŽ°çš„å„类视窗中,输入所设计的教æå…§å®¹ã€”课程內容ã€é—®é¢˜ã€è§£ç­”ã€æˆ–是å‚考资料〕。电脑立å³è‡ªåŠ¨äº§ç”Ÿ SCRIPTS,教师å¯ä»¥ä¸é¡»å…·å¤‡å¤ªå¤šçš„电脑常识或编写语言 (authoring language) å³å¯ç¼–著课程,让学生使用。 + + + WinCALISæ›´å¯ä»¥è®©æ•™å¸ˆåˆ©ç”¨æ¿€å…‰å½±ç¢Ÿ (laserdisc)åŠå½•åƒæœºæ‰€äº§ç”Ÿçš„生动画é¢èžå…¥æ•™å­¦ï¼Œè®©è¯¾ç¨‹æ›´ä¸ºç”ŸåŠ¨æ´»æ³¼ã€‚åŒæ—¶WinCALISæä¾›äº†ä¸åŒè¯­è¨€çš„键盘输入,用者å¯ä»¥å¾ˆå®¹æ˜“åœ°åŒæ—¶ä½¿ç”¨å¤šç§è¯­è¨€ï¼Œåªéœ€é€è¿‡æ»‘é¼ (mouse)æ¥é€‰æ‹©å³å¯ä»Žä¸€ç§è¯­è¨€åˆ°å¦ä¸€ç§è¯­è¨€ã€‚ + + 由于 CALIS具备了容易åŠçµæ´»ä½¿ç”¨çš„æœ¬è´¨ï¼Œä½¿å¾—å®ƒå·²ç»æˆä¸º 90 年代电脑辅助教学(CAI)的标准。 + + CALIS的第二具备了中文文书处ç†çš„功能。它ä¸ä»…å¯ä»¥ç¼–写,也å¯ä»¥å°å‡ºã€‚æ‚¨æ‰‹è¾¹çš„è¿™ä»½æ–‡ä»¶å³æ˜¯ç”¨CALIS ç¼–å°å‡ºæ¥çš„。 diff --git a/intl/icu/source/extra/uconv/samples/utf8/turkish.txt b/intl/icu/source/extra/uconv/samples/utf8/turkish.txt new file mode 100644 index 000000000..88a28db92 --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/turkish.txt @@ -0,0 +1,6 @@ +Yukarda mavi gök, asağıda yağız yer yaratıldıkta; ikisinin arasında insan +oÄŸlu yaratılmış. İnsan oÄŸulları üzerine ecdadım Bumın hakan, İstemi hakan +tahta oturmuÅŸ; oturarak Türk milletinin ülkesini, türesini, idare edivermiÅŸ, +tanzim edivermis. Dört taraf hep düşman imiÅŸ. Asker sevk edip dört taraftaki +kavmi hep (itaati altına) almış hep muti kılmış. BaÅŸlılara baÅŸ eÄŸdirmiÅŸ, +dizlilere diz çöktürmüş. diff --git a/intl/icu/source/extra/uconv/samples/utf8/utf-8-demo.txt b/intl/icu/source/extra/uconv/samples/utf8/utf-8-demo.txt new file mode 100644 index 000000000..fdc1d1c9d --- /dev/null +++ b/intl/icu/source/extra/uconv/samples/utf8/utf-8-demo.txt @@ -0,0 +1,7 @@ +UTF-8 encoded sample plain-text file +‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ +This file is a place-holder. The original file is available from Markus Kuhn's website at http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt. + +Markus says this about copying files that are on his site: + +Please do not copy any of my publications onto your own Internet server for public access without explicit permission. If you want to refer to any of my texts, please use a hyperlink to my original and not a copy. I update some of the texts frequently and I want to prevent the confusion that arises if people read somewhere else obsolete versions that are not under my control. diff --git a/intl/icu/source/extra/uconv/uconv.1.in b/intl/icu/source/extra/uconv/uconv.1.in new file mode 100644 index 000000000..3636025aa --- /dev/null +++ b/intl/icu/source/extra/uconv/uconv.1.in @@ -0,0 +1,445 @@ +.\" Hey, Emacs! This is -*-nroff-*- you know... +.\" +.\" uconv.1: manual page for the uconv utility. +.\" +.\" Copyright (C) 2016 and later: Unicode, Inc. and others. +.\" License & terms of use: http://www.unicode.org/copyright.html +.\" Copyright (C) 2000-2013 IBM, Inc. and others. +.\" +.\" Manual page by Yves Arrouye . +.\" +.TH UCONV 1 "2005-jul-1" "ICU MANPAGE" "ICU @VERSION@ Manual" +.SH NAME +.B uconv +\- convert data from one encoding to another +.SH SYNOPSIS +.B uconv +[ +.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" +] +[ +.BI "\-V\fP, \fB\-\-version" +] +[ +.BI "\-s\fP, \fB\-\-silent" +] +[ +.BI "\-v\fP, \fB\-\-verbose" +] +[ +.BI "\-l\fP, \fB\-\-list" +| +.BI "\-l\fP, \fB\-\-list\-code" " code" +| +.BI "\-\-default-code" +| +.BI "\-L\fP, \fB\-\-list\-transliterators" +] +[ +.BI "\-\-canon" +] +[ +.BI "\-x" " transliteration +] +[ +.BI "\-\-to\-callback" " callback" +| +.B "\-c" +] +[ +.BI "\-\-from\-callback" " callback" +| +.B "\-i" +] +[ +.BI "\-\-callback" " callback" +] +[ +.BI "\-\-fallback" +| +.BI "\-\-no\-fallback" +] +[ +.BI "\-b\fP, \fB\-\-block\-size" " size" +] +[ +.BI "\-f\fP, \fB\-\-from\-code" " encoding" +] +[ +.BI "\-t\fP, \fB\-\-to\-code" " encoding" +] +[ +.BI "\-\-add\-signature" +] +[ +.BI "\-\-remove\-signature" +] +[ +.BI "\-o\fP, \fB\-\-output" " file" +] +[ +.IR file .\|.\|. +] +.SH DESCRIPTION +.B uconv +converts, or transcodes, each given +.I file +(or its standard input if no +.I file +is specified) from one +.I encoding +to another. +The transcoding is done using Unicode as a pivot encoding +(i.e. the data are first transcoded from their original encoding to +Unicode, and then from Unicode to the destination encoding). +.PP +If an +.I encoding +is not specified or is +.BR - , +the default encoding is used. Thus, calling +.B uconv +with no +.I encoding +provides an easy way to validate and sanitize data files for +further consumption by tools requiring data in the default encoding. +.PP +When calling +.BR uconv , +it is possible to specify callbacks that are used to handle invalid +characters in the input, or characters that cannot be transcoded to +the destination encoding. Some encodings, for example, offer a default +substitution character that can be used to represent the occurence of +such characters in the input. Other callbacks offer a useful visual +representation of the invalid data. +.PP +.B uconv +can also run the specified +.IR transliteration +on the transcoded data, +in which case transliteration will happen as an intermediate step, +after the data have been transcoded to Unicode. +The +.I transliteration +can be either a list of semicolon-separated transliterator names, +or an arbitrarily complex set of rules in the ICU transliteration +rules format. +.PP +For transcoding purposes, +.B uconv +options are compatible with those of +.BR iconv (1), +making it easy to replace it in scripts. It is not necessarily the case, +however, that the encoding names used by +.B uconv +and ICU are the same as the ones used by +.BR iconv (1). +Also, options that provide informational data, such as the +.B \-l\fP, \fB\-\-list +one offered by some +.BR iconv (1) +variants such as GNU's, produce data in a slightly different and +easier to parse format. +.SH OPTIONS +.TP +.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" +Print help about usage and exit. +.TP +.BR "\-V\fP, \fB\-\-version" +Print the version of +.B uconv +and exit. +.TP +.BI "\-s\fP, \fB\-\-silent" +Suppress messages during execution. +.TP +.BI "\-v\fP, \fB\-\-verbose" +Display extra informative messages during execution. +.TP +.BI "\-l\fP, \fB\-\-list" +List all the available encodings and exit. +.TP +.BI "\-l\fP, \fB\-\-list\-code" " code" +List only the +.I code +encoding and exit. If +.I code +is not a proper encoding, exit with an error. +.TP +.BI "\-\-default-code" +List only the name of the default encoding and exit. +.TP +.BI "\-L\fP, \fB\-\-list\-transliterators" +List all the available transliterators and exit. +.TP +.BI "\--canon" +If used with +.BI "\-l\fP, \fB\-\-list" +or +.BR "\-\-default-code" , +the list of encodings is produced in a format compatible with +.BR convrtrs.txt (5). +If used with +.BR "\-L\fP, \fB\-\-list\-transliterators" , +print only one transliterator name per line. +.TP +.BI "\-x" " transliteration" +Run the given +.IR transliteration +on the transcoded Unicode data, +and use the transliterated data as input for the transcoding to +the the destination encoding. +.TP +.BI "\-\-to\-callback" " callback" +Use +.I callback +to handle characters that cannot be transcoded to the destination +encoding. See section +.B CALLBACKS +for details on valid callbacks. +.TP +.B "\-c" +Omit invalid characters from the output. +Same as +.BR "\-\-to\-callback skip" . +.TP +.BI "\-\-from\-callback" " callback" +Use +.I callback +to handle characters that cannot be transcoded from the original +encoding. See section +.B CALLBACKS +for details on valid callbacks. +.TP +.B "\-i" +Ignore invalid sequences in the input. +Same as +.BR "\-\-from\-callback skip" . +.TP +.BI "\-\-callback" " callback" +Use +.I callback +to handle both characters that cannot be transcoded from the original +encoding and characters that cannot be transcoded to the destination +encoding. See section +.B CALLBACKS +for details on valid callbacks. +.TP +.BI "\-\-fallback" +Use the fallback mapping when transcoding from +Unicode to the destination encoding. +.TP +.BI "\-\-no\-fallback" +Do not use the fallback mapping when transcoding from Unicode to the +destination encoding. +This is the default. +.TP +.BI "\-b\fP, \fB\-\-block\-size" " size" +Read input in blocks of +.I size +bytes at a time. The default block size is +4096. +.TP +.BI "\-f\fP, \fB\-\-from\-code" " encoding" +Set the original encoding of the data to +.IR encoding . +.TP +.BI "\-t\fP, \fB\-\-to\-code" " encoding" +Transcode the data to +.IR encoding . +.TP +.BI "\-\-add\-signature" +Add a U+FEFF Unicode signature character (BOM) if the output charset +supports it and does not add one anyway. +.TP +.BI "\-\-remove\-signature" +Remove a U+FEFF Unicode signature character (BOM). +.TP +.BI "\-o\fP, \fB\-\-output" " file" +Write the transcoded data to +.IR file . +.SH CALLBACKS +.B uconv +supports specifying callbacks to handle invalid data. Callbacks can be +set for both directions of transcoding: from the original encoding to +Unicode, with the +.BR "\-\-from\-callback" +option, and from Unicode to the destination encoding, with the +.BR "\-\-to\-callback" +option. +.PP +The following is a list of valid +.I callback +names, along with a description of their behavior. The list of +callbacks actually supported by +.B uconv +is displayed when it is called with +.BR "\-h\fP, \fB\-\-help" . +.PP +.TP \w'\fBescape-unicode'u+3n +.B substitute +Write the the encoding's substitute sequence, or the Unicode +replacement character +.B U+FFFD +when transcoding to Unicode. +.TP +.B skip +Ignore the invalid data. +.TP +.B stop +Stop with an error when encountering invalid data. +This is the default callback. +.TP +.B escape +Same as +.BR escape-icu . +.TP +.B escape-icu +Replace the missing characters with a string of the format +.BR %U\fIhhhh\fP +for plane 0 characters, and +.BR %U\fIhhhh\fP%U\fIhhhh\fP +for planes 1 and above characters, +where +.I hhhh +is the hexadecimal value of one of the UTF-16 code units representing the +character. Characters from planes 1 and above are written as a pair of +UTF-16 surrogate code units. +.TP +.B escape-java +Replace the missing characters with a string of the format +.BR \eu\fIhhhh\fP +for plane 0 characters, and +.BR \eu\fIhhhh\fP\eu\fIhhhh\fP +for planes 1 and above characters, +where +.I hhhh +is the hexadecimal value of one of the UTF-16 code units representing the +character. Characters from planes 1 and above are written as a pair of +UTF-16 surrogate code units. +.TP +.B escape-c +Replace the missing characters with a string of the format +.BR \eu\fIhhhh\fP +for plane 0 characters, and +.BR \eU\fIhhhhhhhh\fP +for planes 1 and above characters, +where +.I hhhh +and +.I hhhhhhhh +are the hexadecimal values of the Unicode codepoint. +.TP +.B escape-xml +Same as +.BR escape-xml-hex . +.TP +.B escape-xml-hex +Replace the missing characters with a string of the format +.BR &#x\fIhhhh\fP; , +where +.I hhhh +is the hexadecimal value of the Unicode codepoint. +.TP +.B escape-xml-dec +Replace the missing characters with a string of the format +.BR &#\fInnnn\fP; , +where +.I nnnn +is the decimal value of the Unicode codepoint. +.TP +.B escape-unicode +Replace the missing characters with a string of the format +.BR {U+\fIhhhh\fP} , +where +.I hhhh +is the hexadecimal value of the Unicode codepoint. +That hexadecimal string is of variable length and can use from 4 to +6 digits. +This is the format universally used to denote a Unicode codepoint in +the litterature, delimited by curly braces for easy recognition of those +substitutions in the output. +.SH EXAMPLES +Convert data from a given +.I encoding +to the platform encoding: + +.RS 4 +.B \fR$ \fPuconv \-f \fIencoding\fP +.RE +.PP +Check if a +.I file +contains valid data for a given +.IR encoding : + +.RS 4 +.B \fR$ \fPuconv \-f \fIencoding\fP \-c \fIfile\fP >/dev/null +.RE +.PP +Convert a UTF-8 +.I file +to a given +.I encoding +and ensure that the resulting text is good for any version of HTML: + +.RS 4 +.B \fR$ \fPuconv \-f utf-8 \-t \fIencoding\fP \e +.br +.B " \-\-callback escape-xml-dec \fIfile\fP" +.RE +.PP +Display the names of the Unicode code points in a UTF-file: + +.RS 4 +.B \fR$ \fPuconv \-f utf-8 \-x any-name \fIfile\fP +.RE +.PP +Print the name of a Unicode code point whose value is known (\fBU+30AB\fP +in this example): + +.RS 4 +.B \fR$ \fPecho '\eu30ab' | uconv \-x 'hex-any; any-name'; echo +.br +{KATAKANA LETTER KA}{LINE FEED} +.br +$ +.RE + +(The names are delimited by curly braces. +Also, the name of the line terminator is also displayed.) +.PP +Normalize UTF-8 data using Unicode NFKC, remove all control characters, +and map Katakana to Hiragana: + +.RS 4 +.B \fR$ \fPuconv \-f utf-8 \-t utf-8 \e +.br +.B " \-x '::nfkc; [:Cc:] >; ::katakana-hiragana;'" +.SH CAVEATS AND BUGS +.B uconv +does report errors as occuring at the first invalid byte +encountered. This may be confusing to users of GNU +.BR iconv (1), +which reports errors as occuring at the first byte of an invalid +sequence. For multi-byte character sets or encodings, this means that +.BR uconv +error positions may be at a later offset in the input stream than +would be the case with GNU +.BR iconv (1). +.PP +The reporting of error positions when a transliterator is used may be +inaccurate or unavailable, in which case +.BR uconv +will report the offset in the output stream at which the error +occured. +.SH AUTHORS +Jonas Utterstroem +.br +Yves Arrouye +.SH VERSION +@VERSION@ +.SH COPYRIGHT +Copyright (C) 2000-2005 IBM, Inc. and others. +.SH SEE ALSO +.BR iconv (1) diff --git a/intl/icu/source/extra/uconv/uconv.cpp b/intl/icu/source/extra/uconv/uconv.cpp new file mode 100644 index 000000000..2a043f874 --- /dev/null +++ b/intl/icu/source/extra/uconv/uconv.cpp @@ -0,0 +1,1397 @@ +// Copyright (C) 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html +/***************************************************************************** +* +* Copyright (C) 1999-2016, International Business Machines +* Corporation and others. All Rights Reserved. +* +******************************************************************************/ + +/* + * uconv(1): an iconv(1)-like converter using ICU. + * + * Original code by Jonas Utterström + * contributed in 1999. + * + * Conversion to the C conversion API and many improvements by + * Yves Arrouye , current maintainer. + * + * Markus Scherer maintainer from 2003. + * See source code repository history for changes. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "cmemory.h" +#include "cstring.h" +#include "ustrfmt.h" + +#include "unicode/uwmsg.h" + +U_NAMESPACE_USE + +#if U_PLATFORM_USES_ONLY_WIN32_API && !defined(__STRICT_ANSI__) +#include +#include +#if U_PLATFORM_USES_ONLY_WIN32_API +#define USE_FILENO_BINARY_MODE 1 +/* Windows likes to rename Unix-like functions */ +#ifndef fileno +#define fileno _fileno +#endif +#ifndef setmode +#define setmode _setmode +#endif +#ifndef O_BINARY +#define O_BINARY _O_BINARY +#endif +#endif +#endif + +#ifdef UCONVMSG_LINK +/* below from the README */ +#include "unicode/utypes.h" +#include "unicode/udata.h" +U_CFUNC char uconvmsg_dat[]; +#endif + +#define DEFAULT_BUFSZ 4096 +#define UCONVMSG "uconvmsg" + +static UResourceBundle *gBundle = 0; /* Bundle containing messages. */ + +/* + * Initialize the message bundle so that message strings can be fetched + * by u_wmsg(). + * + */ + +static void initMsg(const char *pname) { + static int ps = 0; + + if (!ps) { + char dataPath[2048]; /* XXX Sloppy: should be PATH_MAX. */ + UErrorCode err = U_ZERO_ERROR; + + ps = 1; + + /* Set up our static data - if any */ +#if defined(UCONVMSG_LINK) && U_PLATFORM != U_PF_OS390 /* On z/OS, this is failing. */ + udata_setAppData(UCONVMSG, (const void*) uconvmsg_dat, &err); + if (U_FAILURE(err)) { + fprintf(stderr, "%s: warning, problem installing our static resource bundle data uconvmsg: %s - trying anyways.\n", + pname, u_errorName(err)); + err = U_ZERO_ERROR; /* It may still fail */ + } +#endif + + /* Get messages. */ + gBundle = u_wmsg_setPath(UCONVMSG, &err); + if (U_FAILURE(err)) { + fprintf(stderr, + "%s: warning: couldn't open bundle %s: %s\n", + pname, UCONVMSG, u_errorName(err)); +#ifdef UCONVMSG_LINK + fprintf(stderr, + "%s: setAppData was called, internal data %s failed to load\n", + pname, UCONVMSG); +#endif + + err = U_ZERO_ERROR; + /* that was try #1, try again with a path */ + uprv_strcpy(dataPath, u_getDataDirectory()); + uprv_strcat(dataPath, U_FILE_SEP_STRING); + uprv_strcat(dataPath, UCONVMSG); + + gBundle = u_wmsg_setPath(dataPath, &err); + if (U_FAILURE(err)) { + fprintf(stderr, + "%s: warning: still couldn't open bundle %s: %s\n", + pname, dataPath, u_errorName(err)); + fprintf(stderr, "%s: warning: messages will not be displayed\n", pname); + } + } + } +} + +/* Mapping of callback names to the callbacks passed to the converter + API. */ + +static struct callback_ent { + const char *name; + UConverterFromUCallback fromu; + const void *fromuctxt; + UConverterToUCallback tou; + const void *touctxt; +} transcode_callbacks[] = { + { "substitute", + UCNV_FROM_U_CALLBACK_SUBSTITUTE, 0, + UCNV_TO_U_CALLBACK_SUBSTITUTE, 0 }, + { "skip", + UCNV_FROM_U_CALLBACK_SKIP, 0, + UCNV_TO_U_CALLBACK_SKIP, 0 }, + { "stop", + UCNV_FROM_U_CALLBACK_STOP, 0, + UCNV_TO_U_CALLBACK_STOP, 0 }, + { "escape", + UCNV_FROM_U_CALLBACK_ESCAPE, 0, + UCNV_TO_U_CALLBACK_ESCAPE, 0}, + { "escape-icu", + UCNV_FROM_U_CALLBACK_ESCAPE, UCNV_ESCAPE_ICU, + UCNV_TO_U_CALLBACK_ESCAPE, UCNV_ESCAPE_ICU }, + { "escape-java", + UCNV_FROM_U_CALLBACK_ESCAPE, UCNV_ESCAPE_JAVA, + UCNV_TO_U_CALLBACK_ESCAPE, UCNV_ESCAPE_JAVA }, + { "escape-c", + UCNV_FROM_U_CALLBACK_ESCAPE, UCNV_ESCAPE_C, + UCNV_TO_U_CALLBACK_ESCAPE, UCNV_ESCAPE_C }, + { "escape-xml", + UCNV_FROM_U_CALLBACK_ESCAPE, UCNV_ESCAPE_XML_HEX, + UCNV_TO_U_CALLBACK_ESCAPE, UCNV_ESCAPE_XML_HEX }, + { "escape-xml-hex", + UCNV_FROM_U_CALLBACK_ESCAPE, UCNV_ESCAPE_XML_HEX, + UCNV_TO_U_CALLBACK_ESCAPE, UCNV_ESCAPE_XML_HEX }, + { "escape-xml-dec", + UCNV_FROM_U_CALLBACK_ESCAPE, UCNV_ESCAPE_XML_DEC, + UCNV_TO_U_CALLBACK_ESCAPE, UCNV_ESCAPE_XML_DEC }, + { "escape-unicode", UCNV_FROM_U_CALLBACK_ESCAPE, UCNV_ESCAPE_UNICODE, + UCNV_TO_U_CALLBACK_ESCAPE, UCNV_ESCAPE_UNICODE } +}; + +/* Return a pointer to a callback record given its name. */ + +static const struct callback_ent *findCallback(const char *name) { + int i, count = + UPRV_LENGTHOF(transcode_callbacks); + + /* We'll do a linear search, there aren't many of them and bsearch() + may not be that portable. */ + + for (i = 0; i < count; ++i) { + if (!uprv_stricmp(name, transcode_callbacks[i].name)) { + return &transcode_callbacks[i]; + } + } + + return 0; +} + +/* Print converter information. If lookfor is set, only that converter will + be printed, otherwise all converters will be printed. If canon is non + zero, tags and aliases for each converter are printed too, in the format + expected for convrters.txt(5). */ + +static int printConverters(const char *pname, const char *lookfor, + UBool canon) +{ + UErrorCode err = U_ZERO_ERROR; + int32_t num; + uint16_t num_stds; + const char **stds; + + /* If there is a specified name, just handle that now. */ + + if (lookfor) { + if (!canon) { + printf("%s\n", lookfor); + return 0; + } else { + /* Because we are printing a canonical name, we need the + true converter name. We've done that already except for + the default name (because we want to print the exact + name one would get when calling ucnv_getDefaultName() + in non-canon mode). But since we do not know at this + point if we have the default name or something else, we + need to normalize again to the canonical converter + name. */ + + const char *truename = ucnv_getAlias(lookfor, 0, &err); + if (U_SUCCESS(err)) { + lookfor = truename; + } else { + err = U_ZERO_ERROR; + } + } + } + + /* Print converter names. We come here for one of two reasons: we + are printing all the names (lookfor was null), or we have a + single converter to print but in canon mode, hence we need to + get to it in order to print everything. */ + + num = ucnv_countAvailable(); + if (num <= 0) { + initMsg(pname); + u_wmsg(stderr, "cantGetNames"); + return -1; + } + if (lookfor) { + num = 1; /* We know where we want to be. */ + } + + num_stds = ucnv_countStandards(); + stds = (const char **) uprv_malloc(num_stds * sizeof(*stds)); + if (!stds) { + u_wmsg(stderr, "cantGetTag", u_wmsg_errorName(U_MEMORY_ALLOCATION_ERROR)); + return -1; + } else { + uint16_t s; + + if (canon) { + printf("{ "); + } + for (s = 0; s < num_stds; ++s) { + stds[s] = ucnv_getStandard(s, &err); + if (canon) { + printf("%s ", stds[s]); + } + if (U_FAILURE(err)) { + u_wmsg(stderr, "cantGetTag", u_wmsg_errorName(err)); + goto error_cleanup; + } + } + if (canon) { + puts("}"); + } + } + + for (int32_t i = 0; i < num; i++) { + const char *name; + uint16_t num_aliases; + + /* Set the name either to what we are looking for, or + to the current converter name. */ + + if (lookfor) { + name = lookfor; + } else { + name = ucnv_getAvailableName(i); + } + + /* Get all the aliases associated to the name. */ + + err = U_ZERO_ERROR; + num_aliases = ucnv_countAliases(name, &err); + if (U_FAILURE(err)) { + printf("%s", name); + + UnicodeString str(name, ""); + putchar('\t'); + u_wmsg(stderr, "cantGetAliases", str.getTerminatedBuffer(), + u_wmsg_errorName(err)); + goto error_cleanup; + } else { + uint16_t a, s, t; + + /* Write all the aliases and their tags. */ + + for (a = 0; a < num_aliases; ++a) { + const char *alias = ucnv_getAlias(name, a, &err); + + if (U_FAILURE(err)) { + UnicodeString str(name, ""); + putchar('\t'); + u_wmsg(stderr, "cantGetAliases", str.getTerminatedBuffer(), + u_wmsg_errorName(err)); + goto error_cleanup; + } + + /* Print the current alias so that it looks right. */ + printf("%s%s%s", (canon ? (a == 0? "" : "\t" ) : "") , + alias, + (canon ? "" : " ")); + + /* Look (slowly, linear searching) for a tag. */ + + if (canon) { + /* -1 to skip the last standard */ + for (s = t = 0; s < num_stds-1; ++s) { + UEnumeration *nameEnum = ucnv_openStandardNames(name, stds[s], &err); + if (U_SUCCESS(err)) { + /* List the standard tags */ + const char *standardName; + UBool isFirst = TRUE; + UErrorCode enumError = U_ZERO_ERROR; + while ((standardName = uenum_next(nameEnum, NULL, &enumError))) { + /* See if this alias is supported by this standard. */ + if (!strcmp(standardName, alias)) { + if (!t) { + printf(" {"); + t = 1; + } + /* Print a * after the default standard name */ + printf(" %s%s", stds[s], (isFirst ? "*" : "")); + } + isFirst = FALSE; + } + } + } + if (t) { + printf(" }"); + } + } + /* Terminate this entry. */ + if (canon) { + puts(""); + } + + /* Move on. */ + } + /* Terminate this entry. */ + if (!canon) { + puts(""); + } + } + } + + /* Free temporary data. */ + + uprv_free(stds); + + /* Success. */ + + return 0; +error_cleanup: + uprv_free(stds); + return -1; +} + +/* Print all available transliterators. If canon is non zero, print + one transliterator per line. */ + +static int printTransliterators(UBool canon) +{ +#if UCONFIG_NO_TRANSLITERATION + printf("no transliterators available because of UCONFIG_NO_TRANSLITERATION, see uconfig.h\n"); + return 1; +#else + UErrorCode status = U_ZERO_ERROR; + UEnumeration *ids = utrans_openIDs(&status); + int32_t i, numtrans = uenum_count(ids, &status); + + char sepchar = canon ? '\n' : ' '; + + for (i = 0; U_SUCCESS(status)&& (i < numtrans); ++i) { + int32_t len; + const char *nextTrans = uenum_next(ids, &len, &status); + + printf("%s", nextTrans); + if (i < numtrans - 1) { + putchar(sepchar); + } + } + + uenum_close(ids); + + /* Add a terminating newline if needed. */ + + if (sepchar != '\n') { + putchar('\n'); + } + + /* Success. */ + + return 0; +#endif +} + +enum { + uSP = 0x20, // space + uCR = 0xd, // carriage return + uLF = 0xa, // line feed + uNL = 0x85, // newline + uLS = 0x2028, // line separator + uPS = 0x2029, // paragraph separator + uSig = 0xfeff // signature/BOM character +}; + +static inline int32_t +getChunkLimit(const UnicodeString &prev, const UnicodeString &s) { + // find one of + // CR, LF, CRLF, NL, LS, PS + // for paragraph ends (see UAX #13/Unicode 4) + // and include it in the chunk + // all of these characters are on the BMP + // do not include FF or VT in case they are part of a paragraph + // (important for bidi contexts) + static const UChar paraEnds[] = { + 0xd, 0xa, 0x85, 0x2028, 0x2029 + }; + enum { + iCR, iLF, iNL, iLS, iPS, iCount + }; + + // first, see if there is a CRLF split between prev and s + if (prev.endsWith(paraEnds + iCR, 1)) { + if (s.startsWith(paraEnds + iLF, 1)) { + return 1; // split CRLF, include the LF + } else if (!s.isEmpty()) { + return 0; // complete the last chunk + } else { + return -1; // wait for actual further contents to arrive + } + } + + const UChar *u = s.getBuffer(), *limit = u + s.length(); + UChar c; + + while (u < limit) { + c = *u++; + if ( + ((c < uSP) && (c == uCR || c == uLF)) || + (c == uNL) || + ((c & uLS) == uLS) + ) { + if (c == uCR) { + // check for CRLF + if (u == limit) { + return -1; // LF may be in the next chunk + } else if (*u == uLF) { + ++u; // include the LF in this chunk + } + } + return (int32_t)(u - s.getBuffer()); + } + } + + return -1; // continue collecting the chunk +} + +enum { + CNV_NO_FEFF, // cannot convert the U+FEFF Unicode signature character (BOM) + CNV_WITH_FEFF, // can convert the U+FEFF signature character + CNV_ADDS_FEFF // automatically adds/detects the U+FEFF signature character +}; + +static inline UChar +nibbleToHex(uint8_t n) { + n &= 0xf; + return + n <= 9 ? + (UChar)(0x30 + n) : + (UChar)((0x61 - 10) + n); +} + +// check the converter's Unicode signature properties; +// the fromUnicode side of the converter must be in its initial state +// and will be reset again if it was used +static int32_t +cnvSigType(UConverter *cnv) { + UErrorCode err; + int32_t result; + + // test if the output charset can convert U+FEFF + USet *set = uset_open(1, 0); + err = U_ZERO_ERROR; + ucnv_getUnicodeSet(cnv, set, UCNV_ROUNDTRIP_SET, &err); + if (U_SUCCESS(err) && uset_contains(set, uSig)) { + result = CNV_WITH_FEFF; + } else { + result = CNV_NO_FEFF; // an error occurred or U+FEFF cannot be converted + } + uset_close(set); + + if (result == CNV_WITH_FEFF) { + // test if the output charset emits a signature anyway + const UChar a[1] = { 0x61 }; // "a" + const UChar *in; + + char buffer[20]; + char *out; + + in = a; + out = buffer; + err = U_ZERO_ERROR; + ucnv_fromUnicode(cnv, + &out, buffer + sizeof(buffer), + &in, a + 1, + NULL, TRUE, &err); + ucnv_resetFromUnicode(cnv); + + if (NULL != ucnv_detectUnicodeSignature(buffer, (int32_t)(out - buffer), NULL, &err) && + U_SUCCESS(err) + ) { + result = CNV_ADDS_FEFF; + } + } + + return result; +} + +class ConvertFile { +public: + ConvertFile() : + buf(NULL), outbuf(NULL), fromoffsets(NULL), + bufsz(0), signature(0) {} + + void + setBufferSize(size_t bufferSize) { + bufsz = bufferSize; + + buf = new char[2 * bufsz]; + outbuf = buf + bufsz; + + // +1 for an added U+FEFF in the intermediate Unicode buffer + fromoffsets = new int32_t[bufsz + 1]; + } + + ~ConvertFile() { + delete [] buf; + delete [] fromoffsets; + } + + UBool convertFile(const char *pname, + const char *fromcpage, + UConverterToUCallback toucallback, + const void *touctxt, + const char *tocpage, + UConverterFromUCallback fromucallback, + const void *fromuctxt, + UBool fallback, + const char *translit, + const char *infilestr, + FILE * outfile, int verbose); +private: + friend int main(int argc, char **argv); + + char *buf, *outbuf; + int32_t *fromoffsets; + + size_t bufsz; + int8_t signature; // add (1) or remove (-1) a U+FEFF Unicode signature character +}; + +// Convert a file from one encoding to another +UBool +ConvertFile::convertFile(const char *pname, + const char *fromcpage, + UConverterToUCallback toucallback, + const void *touctxt, + const char *tocpage, + UConverterFromUCallback fromucallback, + const void *fromuctxt, + UBool fallback, + const char *translit, + const char *infilestr, + FILE * outfile, int verbose) +{ + FILE *infile; + UBool ret = TRUE; + UConverter *convfrom = 0; + UConverter *convto = 0; + UErrorCode err = U_ZERO_ERROR; + UBool flush; + UBool closeFile = FALSE; + const char *cbufp, *prevbufp; + char *bufp; + + uint32_t infoffset = 0, outfoffset = 0; /* Where we are in the file, for error reporting. */ + + const UChar *unibuf, *unibufbp; + UChar *unibufp; + + size_t rd, wr; + +#if !UCONFIG_NO_TRANSLITERATION + Transliterator *t = 0; // Transliterator acting on Unicode data. + UnicodeString chunk; // One chunk of the text being collected for transformation. +#endif + UnicodeString u; // String to do the transliteration. + int32_t ulen; + + // use conversion offsets for error messages + // unless a transliterator is used - + // a text transformation will reorder characters in unpredictable ways + UBool useOffsets = TRUE; + + // Open the correct input file or connect to stdin for reading input + + if (infilestr != 0 && strcmp(infilestr, "-")) { + infile = fopen(infilestr, "rb"); + if (infile == 0) { + UnicodeString str1(infilestr, ""); + str1.append((UChar32) 0); + UnicodeString str2(strerror(errno), ""); + str2.append((UChar32) 0); + initMsg(pname); + u_wmsg(stderr, "cantOpenInputF", str1.getBuffer(), str2.getBuffer()); + return FALSE; + } + closeFile = TRUE; + } else { + infilestr = "-"; + infile = stdin; +#ifdef USE_FILENO_BINARY_MODE + if (setmode(fileno(stdin), O_BINARY) == -1) { + initMsg(pname); + u_wmsg(stderr, "cantSetInBinMode"); + return FALSE; + } +#endif + } + + if (verbose) { + fprintf(stderr, "%s:\n", infilestr); + } + +#if !UCONFIG_NO_TRANSLITERATION + // Create transliterator as needed. + + if (translit != NULL && *translit) { + UParseError parse; + UnicodeString str(translit), pestr; + + /* Create from rules or by ID as needed. */ + + parse.line = -1; + + if (uprv_strchr(translit, ':') || uprv_strchr(translit, '>') || uprv_strchr(translit, '<') || uprv_strchr(translit, '>')) { + t = Transliterator::createFromRules(UNICODE_STRING_SIMPLE("Uconv"), str, UTRANS_FORWARD, parse, err); + } else { + t = Transliterator::createInstance(UnicodeString(translit, -1, US_INV), UTRANS_FORWARD, err); + } + + if (U_FAILURE(err)) { + str.append((UChar32) 0); + initMsg(pname); + + if (parse.line >= 0) { + UChar linebuf[20], offsetbuf[20]; + uprv_itou(linebuf, 20, parse.line, 10, 0); + uprv_itou(offsetbuf, 20, parse.offset, 10, 0); + u_wmsg(stderr, "cantCreateTranslitParseErr", str.getTerminatedBuffer(), + u_wmsg_errorName(err), linebuf, offsetbuf); + } else { + u_wmsg(stderr, "cantCreateTranslit", str.getTerminatedBuffer(), + u_wmsg_errorName(err)); + } + + if (t) { + delete t; + t = 0; + } + goto error_exit; + } + + useOffsets = FALSE; + } +#endif + + // Create codepage converter. If the codepage or its aliases weren't + // available, it returns NULL and a failure code. We also set the + // callbacks, and return errors in the same way. + + convfrom = ucnv_open(fromcpage, &err); + if (U_FAILURE(err)) { + UnicodeString str(fromcpage, ""); + initMsg(pname); + u_wmsg(stderr, "cantOpenFromCodeset", str.getTerminatedBuffer(), + u_wmsg_errorName(err)); + goto error_exit; + } + ucnv_setToUCallBack(convfrom, toucallback, touctxt, 0, 0, &err); + if (U_FAILURE(err)) { + initMsg(pname); + u_wmsg(stderr, "cantSetCallback", u_wmsg_errorName(err)); + goto error_exit; + } + + convto = ucnv_open(tocpage, &err); + if (U_FAILURE(err)) { + UnicodeString str(tocpage, ""); + initMsg(pname); + u_wmsg(stderr, "cantOpenToCodeset", str.getTerminatedBuffer(), + u_wmsg_errorName(err)); + goto error_exit; + } + ucnv_setFromUCallBack(convto, fromucallback, fromuctxt, 0, 0, &err); + if (U_FAILURE(err)) { + initMsg(pname); + u_wmsg(stderr, "cantSetCallback", u_wmsg_errorName(err)); + goto error_exit; + } + ucnv_setFallback(convto, fallback); + + UBool willexit, fromSawEndOfBytes, toSawEndOfUnicode; + int8_t sig; + + // OK, we can convert now. + sig = signature; + rd = 0; + + do { + willexit = FALSE; + + // input file offset at the beginning of the next buffer + infoffset += rd; + + rd = fread(buf, 1, bufsz, infile); + if (ferror(infile) != 0) { + UnicodeString str(strerror(errno)); + initMsg(pname); + u_wmsg(stderr, "cantRead", str.getTerminatedBuffer()); + goto error_exit; + } + + // Convert the read buffer into the new encoding via Unicode. + // After the call 'unibufp' will be placed behind the last + // character that was converted in the 'unibuf'. + // Also the 'cbufp' is positioned behind the last converted + // character. + // At the last conversion in the file, flush should be set to + // true so that we get all characters converted. + // + // The converter must be flushed at the end of conversion so + // that characters on hold also will be written. + + cbufp = buf; + flush = (UBool)(rd != bufsz); + + // convert until the input is consumed + do { + // remember the start of the current byte-to-Unicode conversion + prevbufp = cbufp; + + unibuf = unibufp = u.getBuffer((int32_t)bufsz); + + // Use bufsz instead of u.getCapacity() for the targetLimit + // so that we don't overflow fromoffsets[]. + ucnv_toUnicode(convfrom, &unibufp, unibuf + bufsz, &cbufp, + buf + rd, useOffsets ? fromoffsets : NULL, flush, &err); + + ulen = (int32_t)(unibufp - unibuf); + u.releaseBuffer(U_SUCCESS(err) ? ulen : 0); + + // fromSawEndOfBytes indicates that ucnv_toUnicode() is done + // converting all of the input bytes. + // It works like this because ucnv_toUnicode() returns only under the + // following conditions: + // - an error occurred during conversion (an error code is set) + // - the target buffer is filled (the error code indicates an overflow) + // - the source is consumed + // That is, if the error code does not indicate a failure, + // not even an overflow, then the source must be consumed entirely. + fromSawEndOfBytes = (UBool)U_SUCCESS(err); + + if (err == U_BUFFER_OVERFLOW_ERROR) { + err = U_ZERO_ERROR; + } else if (U_FAILURE(err)) { + char pos[32], errorBytes[32]; + int8_t i, length, errorLength; + + UErrorCode localError = U_ZERO_ERROR; + errorLength = (int8_t)sizeof(errorBytes); + ucnv_getInvalidChars(convfrom, errorBytes, &errorLength, &localError); + if (U_FAILURE(localError) || errorLength == 0) { + errorLength = 1; + } + + // print the input file offset of the start of the error bytes: + // input file offset of the current byte buffer + + // length of the just consumed bytes - + // length of the error bytes + length = + (int8_t)sprintf(pos, "%d", + (int)(infoffset + (cbufp - buf) - errorLength)); + + // output the bytes that caused the error + UnicodeString str; + for (i = 0; i < errorLength; ++i) { + if (i > 0) { + str.append((UChar)uSP); + } + str.append(nibbleToHex((uint8_t)errorBytes[i] >> 4)); + str.append(nibbleToHex((uint8_t)errorBytes[i])); + } + + initMsg(pname); + u_wmsg(stderr, "problemCvtToU", + UnicodeString(pos, length, "").getTerminatedBuffer(), + str.getTerminatedBuffer(), + u_wmsg_errorName(err)); + + willexit = TRUE; + err = U_ZERO_ERROR; /* reset the error for the rest of the conversion. */ + } + + // Replaced a check for whether the input was consumed by + // looping until it is; message key "premEndInput" now obsolete. + + if (ulen == 0) { + continue; + } + + // remove a U+FEFF Unicode signature character if requested + if (sig < 0) { + if (u.charAt(0) == uSig) { + u.remove(0, 1); + + // account for the removed UChar and offset + --ulen; + + if (useOffsets) { + // remove an offset from fromoffsets[] as well + // to keep the array parallel with the UChars + memmove(fromoffsets, fromoffsets + 1, ulen * 4); + } + + } + sig = 0; + } + +#if !UCONFIG_NO_TRANSLITERATION + // Transliterate/transform if needed. + + // For transformation, we use chunking code - + // collect Unicode input until, for example, an end-of-line, + // then transform and output-convert that and continue collecting. + // This makes the transformation result independent of the buffer size + // while avoiding the slower keyboard mode. + // The end-of-chunk characters are completely included in the + // transformed string in case they are to be transformed themselves. + if (t != NULL) { + UnicodeString out; + int32_t chunkLimit; + + do { + chunkLimit = getChunkLimit(chunk, u); + if (chunkLimit < 0 && flush && fromSawEndOfBytes) { + // use all of the rest at the end of the text + chunkLimit = u.length(); + } + if (chunkLimit >= 0) { + // complete the chunk and transform it + chunk.append(u, 0, chunkLimit); + u.remove(0, chunkLimit); + t->transliterate(chunk); + + // append the transformation result to the result and empty the chunk + out.append(chunk); + chunk.remove(); + } else { + // continue collecting the chunk + chunk.append(u); + break; + } + } while (!u.isEmpty()); + + u = out; + ulen = u.length(); + } +#endif + + // add a U+FEFF Unicode signature character if requested + // and possible/necessary + if (sig > 0) { + if (u.charAt(0) != uSig && cnvSigType(convto) == CNV_WITH_FEFF) { + u.insert(0, (UChar)uSig); + + if (useOffsets) { + // insert a pseudo-offset into fromoffsets[] as well + // to keep the array parallel with the UChars + memmove(fromoffsets + 1, fromoffsets, ulen * 4); + fromoffsets[0] = -1; + } + + // account for the additional UChar and offset + ++ulen; + } + sig = 0; + } + + // Convert the Unicode buffer into the destination codepage + // Again 'bufp' will be placed behind the last converted character + // And 'unibufp' will be placed behind the last converted unicode character + // At the last conversion flush should be set to true to ensure that + // all characters left get converted + + unibuf = unibufbp = u.getBuffer(); + + do { + bufp = outbuf; + + // Use fromSawEndOfBytes in addition to the flush flag - + // it indicates whether the intermediate Unicode string + // contains the very last UChars for the very last input bytes. + ucnv_fromUnicode(convto, &bufp, outbuf + bufsz, + &unibufbp, + unibuf + ulen, + NULL, (UBool)(flush && fromSawEndOfBytes), &err); + + // toSawEndOfUnicode indicates that ucnv_fromUnicode() is done + // converting all of the intermediate UChars. + // See comment for fromSawEndOfBytes. + toSawEndOfUnicode = (UBool)U_SUCCESS(err); + + if (err == U_BUFFER_OVERFLOW_ERROR) { + err = U_ZERO_ERROR; + } else if (U_FAILURE(err)) { + UChar errorUChars[4]; + const char *errtag; + char pos[32]; + UChar32 c; + int8_t i, length, errorLength; + + UErrorCode localError = U_ZERO_ERROR; + errorLength = UPRV_LENGTHOF(errorUChars); + ucnv_getInvalidUChars(convto, errorUChars, &errorLength, &localError); + if (U_FAILURE(localError) || errorLength == 0) { + // need at least 1 so that we don't access beyond the length of fromoffsets[] + errorLength = 1; + } + + int32_t ferroffset; + + if (useOffsets) { + // Unicode buffer offset of the start of the error UChars + ferroffset = (int32_t)((unibufbp - unibuf) - errorLength); + if (ferroffset < 0) { + // approximation - the character started in the previous Unicode buffer + ferroffset = 0; + } + + // get the corresponding byte offset out of fromoffsets[] + // go back if the offset is not known for some of the UChars + int32_t fromoffset; + do { + fromoffset = fromoffsets[ferroffset]; + } while (fromoffset < 0 && --ferroffset >= 0); + + // total input file offset = + // input file offset of the current byte buffer + + // byte buffer offset of where the current Unicode buffer is converted from + + // fromoffsets[Unicode offset] + ferroffset = infoffset + (prevbufp - buf) + fromoffset; + errtag = "problemCvtFromU"; + } else { + // Do not use fromoffsets if (t != NULL) because the Unicode text may + // be different from what the offsets refer to. + + // output file offset + ferroffset = (int32_t)(outfoffset + (bufp - outbuf)); + errtag = "problemCvtFromUOut"; + } + + length = (int8_t)sprintf(pos, "%u", (int)ferroffset); + + // output the code points that caused the error + UnicodeString str; + for (i = 0; i < errorLength;) { + if (i > 0) { + str.append((UChar)uSP); + } + U16_NEXT(errorUChars, i, errorLength, c); + if (c >= 0x100000) { + str.append(nibbleToHex((uint8_t)(c >> 20))); + } + if (c >= 0x10000) { + str.append(nibbleToHex((uint8_t)(c >> 16))); + } + str.append(nibbleToHex((uint8_t)(c >> 12))); + str.append(nibbleToHex((uint8_t)(c >> 8))); + str.append(nibbleToHex((uint8_t)(c >> 4))); + str.append(nibbleToHex((uint8_t)c)); + } + + initMsg(pname); + u_wmsg(stderr, errtag, + UnicodeString(pos, length, "").getTerminatedBuffer(), + str.getTerminatedBuffer(), + u_wmsg_errorName(err)); + u_wmsg(stderr, "errorUnicode", str.getTerminatedBuffer()); + + willexit = TRUE; + err = U_ZERO_ERROR; /* reset the error for the rest of the conversion. */ + } + + // Replaced a check for whether the intermediate Unicode characters were all consumed by + // looping until they are; message key "premEnd" now obsolete. + + // Finally, write the converted buffer to the output file + size_t outlen = (size_t) (bufp - outbuf); + outfoffset += (int32_t)(wr = fwrite(outbuf, 1, outlen, outfile)); + if (wr != outlen) { + UnicodeString str(strerror(errno)); + initMsg(pname); + u_wmsg(stderr, "cantWrite", str.getTerminatedBuffer()); + willexit = TRUE; + } + + if (willexit) { + goto error_exit; + } + } while (!toSawEndOfUnicode); + } while (!fromSawEndOfBytes); + } while (!flush); // Stop when we have flushed the + // converters (this means that it's + // the end of output) + + goto normal_exit; + +error_exit: + ret = FALSE; + +normal_exit: + // Cleanup. + + ucnv_close(convfrom); + ucnv_close(convto); + +#if !UCONFIG_NO_TRANSLITERATION + delete t; +#endif + + if (closeFile) { + fclose(infile); + } + + return ret; +} + +static void usage(const char *pname, int ecode) { + const UChar *msg; + int32_t msgLen; + UErrorCode err = U_ZERO_ERROR; + FILE *fp = ecode ? stderr : stdout; + int res; + + initMsg(pname); + msg = + ures_getStringByKey(gBundle, ecode ? "lcUsageWord" : "ucUsageWord", + &msgLen, &err); + UnicodeString upname(pname, (int32_t)(uprv_strlen(pname) + 1)); + UnicodeString mname(msg, msgLen + 1); + + res = u_wmsg(fp, "usage", mname.getBuffer(), upname.getBuffer()); + if (!ecode) { + if (!res) { + fputc('\n', fp); + } + if (!u_wmsg(fp, "help")) { + /* Now dump callbacks and finish. */ + + int i, count = + UPRV_LENGTHOF(transcode_callbacks); + for (i = 0; i < count; ++i) { + fprintf(fp, " %s", transcode_callbacks[i].name); + } + fputc('\n', fp); + } + } + + exit(ecode); +} + +extern int +main(int argc, char **argv) +{ + FILE *outfile; + int ret = 0; + + size_t bufsz = DEFAULT_BUFSZ; + + const char *fromcpage = 0; + const char *tocpage = 0; + const char *translit = 0; + const char *outfilestr = 0; + UBool fallback = FALSE; + + UConverterFromUCallback fromucallback = UCNV_FROM_U_CALLBACK_STOP; + const void *fromuctxt = 0; + UConverterToUCallback toucallback = UCNV_TO_U_CALLBACK_STOP; + const void *touctxt = 0; + + char **iter, **remainArgv, **remainArgvLimit; + char **end = argv + argc; + + const char *pname; + + UBool printConvs = FALSE, printCanon = FALSE, printTranslits = FALSE; + const char *printName = 0; + + UBool verbose = FALSE; + UErrorCode status = U_ZERO_ERROR; + + ConvertFile cf; + + /* Initialize ICU */ + u_init(&status); + if (U_FAILURE(status)) { + fprintf(stderr, "%s: can not initialize ICU. status = %s\n", + argv[0], u_errorName(status)); + exit(1); + } + + // Get and prettify pname. + pname = uprv_strrchr(*argv, U_FILE_SEP_CHAR); +#if U_PLATFORM_USES_ONLY_WIN32_API + if (!pname) { + pname = uprv_strrchr(*argv, '/'); + } +#endif + if (!pname) { + pname = *argv; + } else { + ++pname; + } + + // First, get the arguments from command-line + // to know the codepages to convert between + + remainArgv = remainArgvLimit = argv + 1; + for (iter = argv + 1; iter != end; iter++) { + // Check for from charset + if (strcmp("-f", *iter) == 0 || !strcmp("--from-code", *iter)) { + iter++; + if (iter != end) + fromcpage = *iter; + else + usage(pname, 1); + } else if (strcmp("-t", *iter) == 0 || !strcmp("--to-code", *iter)) { + iter++; + if (iter != end) + tocpage = *iter; + else + usage(pname, 1); + } else if (strcmp("-x", *iter) == 0) { + iter++; + if (iter != end) + translit = *iter; + else + usage(pname, 1); + } else if (!strcmp("--fallback", *iter)) { + fallback = TRUE; + } else if (!strcmp("--no-fallback", *iter)) { + fallback = FALSE; + } else if (strcmp("-b", *iter) == 0 || !strcmp("--block-size", *iter)) { + iter++; + if (iter != end) { + bufsz = atoi(*iter); + if ((int) bufsz <= 0) { + initMsg(pname); + UnicodeString str(*iter); + initMsg(pname); + u_wmsg(stderr, "badBlockSize", str.getTerminatedBuffer()); + return 3; + } + } else { + usage(pname, 1); + } + } else if (strcmp("-l", *iter) == 0 || !strcmp("--list", *iter)) { + if (printTranslits) { + usage(pname, 1); + } + printConvs = TRUE; + } else if (strcmp("--default-code", *iter) == 0) { + if (printTranslits) { + usage(pname, 1); + } + printName = ucnv_getDefaultName(); + } else if (strcmp("--list-code", *iter) == 0) { + if (printTranslits) { + usage(pname, 1); + } + + iter++; + if (iter != end) { + UErrorCode e = U_ZERO_ERROR; + printName = ucnv_getAlias(*iter, 0, &e); + if (U_FAILURE(e) || !printName) { + UnicodeString str(*iter); + initMsg(pname); + u_wmsg(stderr, "noSuchCodeset", str.getTerminatedBuffer()); + return 2; + } + } else + usage(pname, 1); + } else if (strcmp("--canon", *iter) == 0) { + printCanon = TRUE; + } else if (strcmp("-L", *iter) == 0 + || !strcmp("--list-transliterators", *iter)) { + if (printConvs) { + usage(pname, 1); + } + printTranslits = TRUE; + } else if (strcmp("-h", *iter) == 0 || !strcmp("-?", *iter) + || !strcmp("--help", *iter)) { + usage(pname, 0); + } else if (!strcmp("-c", *iter)) { + fromucallback = UCNV_FROM_U_CALLBACK_SKIP; + } else if (!strcmp("--to-callback", *iter)) { + iter++; + if (iter != end) { + const struct callback_ent *cbe = findCallback(*iter); + if (cbe) { + fromucallback = cbe->fromu; + fromuctxt = cbe->fromuctxt; + } else { + UnicodeString str(*iter); + initMsg(pname); + u_wmsg(stderr, "unknownCallback", str.getTerminatedBuffer()); + return 4; + } + } else { + usage(pname, 1); + } + } else if (!strcmp("--from-callback", *iter)) { + iter++; + if (iter != end) { + const struct callback_ent *cbe = findCallback(*iter); + if (cbe) { + toucallback = cbe->tou; + touctxt = cbe->touctxt; + } else { + UnicodeString str(*iter); + initMsg(pname); + u_wmsg(stderr, "unknownCallback", str.getTerminatedBuffer()); + return 4; + } + } else { + usage(pname, 1); + } + } else if (!strcmp("-i", *iter)) { + toucallback = UCNV_TO_U_CALLBACK_SKIP; + } else if (!strcmp("--callback", *iter)) { + iter++; + if (iter != end) { + const struct callback_ent *cbe = findCallback(*iter); + if (cbe) { + fromucallback = cbe->fromu; + fromuctxt = cbe->fromuctxt; + toucallback = cbe->tou; + touctxt = cbe->touctxt; + } else { + UnicodeString str(*iter); + initMsg(pname); + u_wmsg(stderr, "unknownCallback", str.getTerminatedBuffer()); + return 4; + } + } else { + usage(pname, 1); + } + } else if (!strcmp("-s", *iter) || !strcmp("--silent", *iter)) { + verbose = FALSE; + } else if (!strcmp("-v", *iter) || !strcmp("--verbose", *iter)) { + verbose = TRUE; + } else if (!strcmp("-V", *iter) || !strcmp("--version", *iter)) { + printf("%s v2.1 ICU " U_ICU_VERSION "\n", pname); + return 0; + } else if (!strcmp("-o", *iter) || !strcmp("--output", *iter)) { + ++iter; + if (iter != end && !outfilestr) { + outfilestr = *iter; + } else { + usage(pname, 1); + } + } else if (0 == strcmp("--add-signature", *iter)) { + cf.signature = 1; + } else if (0 == strcmp("--remove-signature", *iter)) { + cf.signature = -1; + } else if (**iter == '-' && (*iter)[1]) { + usage(pname, 1); + } else { + // move a non-option up in argv[] + *remainArgvLimit++ = *iter; + } + } + + if (printConvs || printName) { + return printConverters(pname, printName, printCanon) ? 2 : 0; + } else if (printTranslits) { + return printTransliterators(printCanon) ? 3 : 0; + } + + if (!fromcpage || !uprv_strcmp(fromcpage, "-")) { + fromcpage = ucnv_getDefaultName(); + } + if (!tocpage || !uprv_strcmp(tocpage, "-")) { + tocpage = ucnv_getDefaultName(); + } + + // Open the correct output file or connect to stdout for reading input + if (outfilestr != 0 && strcmp(outfilestr, "-")) { + outfile = fopen(outfilestr, "wb"); + if (outfile == 0) { + UnicodeString str1(outfilestr, ""); + UnicodeString str2(strerror(errno), ""); + initMsg(pname); + u_wmsg(stderr, "cantCreateOutputF", + str1.getBuffer(), str2.getBuffer()); + return 1; + } + } else { + outfilestr = "-"; + outfile = stdout; +#ifdef USE_FILENO_BINARY_MODE + if (setmode(fileno(outfile), O_BINARY) == -1) { + u_wmsg(stderr, "cantSetOutBinMode"); + exit(-1); + } +#endif + } + + /* Loop again on the arguments to find all the input files, and + convert them. */ + + cf.setBufferSize(bufsz); + + if(remainArgv < remainArgvLimit) { + for (iter = remainArgv; iter != remainArgvLimit; iter++) { + if (!cf.convertFile( + pname, fromcpage, toucallback, touctxt, tocpage, + fromucallback, fromuctxt, fallback, translit, *iter, + outfile, verbose) + ) { + goto error_exit; + } + } + } else { + if (!cf.convertFile( + pname, fromcpage, toucallback, touctxt, tocpage, + fromucallback, fromuctxt, fallback, translit, 0, + outfile, verbose) + ) { + goto error_exit; + } + } + + goto normal_exit; +error_exit: +#if !UCONFIG_NO_LEGACY_CONVERSION + ret = 1; +#else + fprintf(stderr, "uconv error: UCONFIG_NO_LEGACY_CONVERSION is on. See uconfig.h\n"); +#endif +normal_exit: + + if (outfile != stdout) { + fclose(outfile); + } + + u_cleanup(); + + return ret; +} + + +/* + * Hey, Emacs, please set the following: + * + * Local Variables: + * indent-tabs-mode: nil + * End: + * + */ diff --git a/intl/icu/source/extra/uconv/uconv.vcxproj b/intl/icu/source/extra/uconv/uconv.vcxproj new file mode 100644 index 000000000..dffa4c5b4 --- /dev/null +++ b/intl/icu/source/extra/uconv/uconv.vcxproj @@ -0,0 +1,299 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {DBA4088D-F6F9-4F8F-8820-082A4765C16C} + + + + Application + false + MultiByte + v140 + + + Application + false + MultiByte + v140 + + + Application + false + MultiByte + v140 + + + Application + false + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\x86\Release\ + .\x86\Release\ + false + .\x86\Debug\ + .\x86\Debug\ + true + .\x64\Release\ + .\x64\Release\ + false + .\x64\Debug\ + .\x64\Debug\ + true + + + + copy "$(TargetPath)" ..\..\..\bin + + $(ProjectDir)..\..\..\bin\$(TargetFileName);%(Outputs) + + + .\x86\Release/uconv.tlb + + + ..\..\..\include;..\..\common;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + true + true + .\x86\Release/uconv.pch + .\x86\Release/ + .\x86\Release/ + .\x86\Release/ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + uconvmsg.lib;%(AdditionalDependencies) + .\x86\Release/uconv.exe + true + x86\Release;%(AdditionalLibraryDirectories) + .\x86\Release/uconv.pdb + Console + false + + + + + + + copy "$(TargetPath)" ..\..\..\bin + + $(ProjectDir)..\..\..\bin\$(TargetFileName);%(Outputs) + + + .\x86\Debug/uconv.tlb + + + Disabled + ..\..\..\include;..\..\common;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + .\x86\Debug/uconv.pch + .\x86\Debug/ + .\x86\Debug/ + .\x86\Debug/ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + uconvmsg.lib;%(AdditionalDependencies) + .\x86\Debug/uconv.exe + true + x86\Debug;%(AdditionalLibraryDirectories) + true + .\x86\Debug/uconv.pdb + Console + false + + + + + + + copy "$(TargetPath)" ..\..\..\bin64 + + $(ProjectDir)..\..\..\bin64\$(TargetFileName);%(Outputs) + + + X64 + .\x64\Release/uconv.tlb + + + ..\..\..\include;..\..\common;%(AdditionalIncludeDirectories) + WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + true + true + .\x64\Release/uconv.pch + .\x64\Release/ + .\x64\Release/ + .\x64\Release/ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + uconvmsg.lib;%(AdditionalDependencies) + .\x64\Release/uconv.exe + true + x64\Release;%(AdditionalLibraryDirectories) + .\x64\Release/uconv.pdb + Console + MachineX64 + + + + + copy "$(TargetPath)" ..\..\..\bin64 + + $(ProjectDir)..\..\..\bin64\$(TargetFileName);%(Outputs) + + + X64 + .\x64\Debug/uconv.tlb + + + Disabled + ..\..\..\include;..\..\common;%(AdditionalIncludeDirectories) + WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;UCONVMSG_LINK;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + .\x64\Debug/uconv.pch + .\x64\Debug/ + .\x64\Debug/ + .\x64\Debug/ + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + uconvmsg.lib;%(AdditionalDependencies) + .\x64\Debug/uconv.exe + true + x64\Debug;%(AdditionalLibraryDirectories) + true + .\x64\Debug/uconv.pdb + Console + MachineX64 + + + + + + + + + + + + + + nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x86\Debug + + x86\Debug/uconvmsg.lib;%(Outputs) + nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x64\Debug + + x64\Debug/uconvmsg.lib;%(Outputs) + nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x86\Release + + x86\Release/uconvmsg.lib;%(Outputs) + nmake /nologo /f %(Filename).mak icup="$(ProjectDir)..\..\.." CFG=x64\Release + + x64\Release/uconvmsg.lib;%(Outputs) + + + + + + {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} + false + + + {0178b127-6269-407d-b112-93877bb62776} + false + + + {97521d06-ec47-45d4-8bd0-9e16b3f93b2a} + false + + + {4c8454fe-81d3-4ca3-9927-29ba96f03dac} + false + + + + + + \ No newline at end of file diff --git a/intl/icu/source/extra/uconv/uconv.vcxproj.filters b/intl/icu/source/extra/uconv/uconv.vcxproj.filters new file mode 100644 index 000000000..04ed73b5d --- /dev/null +++ b/intl/icu/source/extra/uconv/uconv.vcxproj.filters @@ -0,0 +1,50 @@ + + + + + {c0129698-5425-4988-b34a-fe215c03a818} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {8b1cc031-0c2e-41cf-a1f4-53e2ebdfc4ac} + h;hpp;hxx;hm;inl + + + {bcebaef1-fbff-4aca-9a90-0f652e3fd00b} + txt + + + {7faa3049-c5bb-4b2c-ac0f-10b572b69c83} + mak;mk;bat + + + + + Source Files + + + Source Files + + + + + Header Files + + + + + Resource Bundles + + + Resource Bundles + + + Build Scripts + + + + + Build Scripts + + + \ No newline at end of file diff --git a/intl/icu/source/extra/uconv/unicode/uwmsg.h b/intl/icu/source/extra/uconv/unicode/uwmsg.h new file mode 100644 index 000000000..e24d5dbfc --- /dev/null +++ b/intl/icu/source/extra/uconv/unicode/uwmsg.h @@ -0,0 +1,31 @@ +// Copyright (C) 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html +/* +********************************************************************** +* Copyright (C) 2000-2004, International Business Machines Corporation +* and others. All Rights Reserved. +********************************************************************** + +Get a message out of the default resource bundle, messageformat it, +and print it to stderr +*/ + +#ifndef _UWMSG +#define _UWMSG + +#include + +#include "unicode/ures.h" + +/* Set the path to wmsg's bundle. + Caller owns storage. +*/ +U_CFUNC UResourceBundle *u_wmsg_setPath(const char *path, UErrorCode *err); + +/* Format a message and print it's output to a given file stream */ +U_CFUNC int u_wmsg(FILE *fp, const char *tag, ... ); + +/* format an error message */ +U_CFUNC const UChar* u_wmsg_errorName(UErrorCode err); + +#endif diff --git a/intl/icu/source/extra/uconv/uwmsg.c b/intl/icu/source/extra/uconv/uwmsg.c new file mode 100644 index 000000000..ecc98d1c0 --- /dev/null +++ b/intl/icu/source/extra/uconv/uwmsg.c @@ -0,0 +1,265 @@ +// Copyright (C) 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html +/* +********************************************************************** +* Copyright (C) 1998-2016, International Business Machines Corporation +* and others. All Rights Reserved. +********************************************************************** +* +* File uwmsg.c +* +* Modification History: +* +* Date Name Description +* 06/14/99 stephen Creation. +******************************************************************************* +*/ + +#include "unicode/ucnv.h" +#include "unicode/ustring.h" +#include "unicode/umsg.h" +#include "unicode/uwmsg.h" +#include "unicode/ures.h" +#include "unicode/putil.h" +#include "cmemory.h" +#include "cstring.h" + +#include +#include +#include +#include + +#define BUF_SIZE 128 + +/* Print a ustring to the specified FILE* in the default codepage */ +static void +uprint(const UChar *s, + int32_t sourceLen, + FILE *f, + UErrorCode *status) +{ + /* converter */ + UConverter *converter; + char buf [BUF_SIZE]; + const UChar *mySource; + const UChar *mySourceEnd; + char *myTarget; + int32_t arraySize; + + if(s == 0) return; + + /* set up the conversion parameters */ + mySource = s; + mySourceEnd = mySource + sourceLen; + myTarget = buf; + arraySize = BUF_SIZE; + + /* open a default converter */ + converter = ucnv_open(0, status); + + /* if we failed, clean up and exit */ + if(U_FAILURE(*status)) goto finish; + + /* perform the conversion */ + do { + /* reset the error code */ + *status = U_ZERO_ERROR; + + /* perform the conversion */ + ucnv_fromUnicode(converter, &myTarget, myTarget + arraySize, + &mySource, mySourceEnd, NULL, + TRUE, status); + + /* Write the converted data to the FILE* */ + fwrite(buf, sizeof(char), myTarget - buf, f); + + /* update the conversion parameters*/ + myTarget = buf; + arraySize = BUF_SIZE; + } + while(*status == U_BUFFER_OVERFLOW_ERROR); + +finish: + + /* close the converter */ + ucnv_close(converter); +} + +static UResourceBundle *gBundle = NULL; + +U_STRING_DECL(gNoFormatting, " (UCONFIG_NO_FORMATTING see uconfig.h)", 38); + +U_CFUNC UResourceBundle *u_wmsg_setPath(const char *path, UErrorCode *err) +{ + if(U_FAILURE(*err)) + { + return 0; + } + + if(gBundle != NULL) + { + *err = U_ILLEGAL_ARGUMENT_ERROR; + return 0; + } + else + { + UResourceBundle *b = NULL; + b = ures_open(path, NULL, err); + if(U_FAILURE(*err)) + { + return 0; + } + + gBundle = b; + + U_STRING_INIT(gNoFormatting, " (UCONFIG_NO_FORMATTING see uconfig.h)", 38); + } + + return gBundle; +} + +/* Format a message and print it's output to fp */ +U_CFUNC int u_wmsg(FILE *fp, const char *tag, ... ) +{ + const UChar *msg; + int32_t msgLen; + UErrorCode err = U_ZERO_ERROR; +#if !UCONFIG_NO_FORMATTING + va_list ap; +#endif + UChar result[4096]; + int32_t resultLength = UPRV_LENGTHOF(result); + + if(gBundle == NULL) + { +#if 0 + fprintf(stderr, "u_wmsg: No path set!!\n"); /* FIXME: codepage?? */ +#endif + return -1; + } + + msg = ures_getStringByKey(gBundle, tag, &msgLen, &err); + + if(U_FAILURE(err)) + { + return -1; + } + +#if UCONFIG_NO_FORMATTING + resultLength = UPRV_LENGTHOF(gNoFormatting); + if((msgLen + resultLength) <= UPRV_LENGTHOF(result)) { + memcpy(result, msg, msgLen * U_SIZEOF_UCHAR); + memcpy(result + msgLen, gNoFormatting, resultLength); + resultLength += msgLen; + uprint(result, resultLength, fp, &err); + } else { + uprint(msg,msgLen, fp, &err); + } +#else + va_start(ap, tag); + + resultLength = u_vformatMessage(uloc_getDefault(), msg, msgLen, result, resultLength, ap, &err); + + va_end(ap); + + if(U_FAILURE(err)) + { +#if 0 + fprintf(stderr, "u_wmsg: failed to format %s:%s, err %s\n", + uloc_getDefault(), + tag, + u_errorName(err)); +#endif + err = U_ZERO_ERROR; + uprint(msg,msgLen, fp, &err); + return -1; + } + + uprint(result, resultLength, fp, &err); +#endif + + if(U_FAILURE(err)) + { +#if 0 + fprintf(stderr, "u_wmsg: failed to print %s: %s, err %s\n", + uloc_getDefault(), + tag, + u_errorName(err)); +#endif + return -1; + } + + return 0; +} + +/* these will break if the # of messages change. simply add or remove 0's .. */ +UChar **gInfoMessages = NULL; + +UChar **gErrMessages = NULL; + +static const UChar *fetchErrorName(UErrorCode err) +{ + if (!gInfoMessages) { + gInfoMessages = (UChar **)malloc((U_ERROR_WARNING_LIMIT-U_ERROR_WARNING_START)*sizeof(UChar*)); + memset(gInfoMessages, 0, (U_ERROR_WARNING_LIMIT-U_ERROR_WARNING_START)*sizeof(UChar*)); + } + if (!gErrMessages) { + gErrMessages = (UChar **)malloc(U_ERROR_LIMIT*sizeof(UChar*)); + memset(gErrMessages, 0, U_ERROR_LIMIT*sizeof(UChar*)); + } + if(err>=0) + return gErrMessages[err]; + else + return gInfoMessages[err-U_ERROR_WARNING_START]; +} + +U_CFUNC const UChar *u_wmsg_errorName(UErrorCode err) +{ + UChar *msg; + int32_t msgLen; + UErrorCode subErr = U_ZERO_ERROR; + const char *textMsg = NULL; + + /* try the cache */ + msg = (UChar*)fetchErrorName(err); + + if(msg) + { + return msg; + } + + if(gBundle == NULL) + { + msg = NULL; + } + else + { + const char *errname = u_errorName(err); + if (errname) { + msg = (UChar*)ures_getStringByKey(gBundle, errname, &msgLen, &subErr); + if(U_FAILURE(subErr)) + { + msg = NULL; + } + } + } + + if(msg == NULL) /* Couldn't find it anywhere.. */ + { + char error[128]; + textMsg = u_errorName(err); + if (!textMsg) { + sprintf(error, "UNDOCUMENTED ICU ERROR %d", err); + textMsg = error; + } + msg = (UChar*)malloc((strlen(textMsg)+1)*sizeof(msg[0])); + u_charsToUChars(textMsg, msg, (int32_t)(strlen(textMsg)+1)); + } + + if(err>=0) + gErrMessages[err] = msg; + else + gInfoMessages[err-U_ERROR_WARNING_START] = msg; + + return msg; +} -- cgit v1.2.3